• ベストアンサー

エクセルで、1枚目の数値を2枚目以降に振り分けて入力する方法

会計簿の仕事をエクセルでしています。 シート1に総括(全ての収支の記録)を日にち順に入力したら、 それがシート2(備品費)・シート3(交通費)・・・の、収支項目ごとに自動的に振り分けられて入力される方法はないでしょうか? シート1で、項目と金額を入力したら、 その項目のページにも、その金額がリンクされていて、自動的に入力されていたら間違いがないのですが。 去年度は、シート1に全ての記録を打ち込み、 再度、シート2以降に、項目別に同じ数字を手動で打ち込んでいたのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

次のようにすればよいでしょう。 例えばシート1のA1セルに日付、B1セルに支出、C1セルに支出項目とそれぞれ文字が入力されており、下方にデータが入力されているとします。C列には備品費や交通費などの項目が入っているとします。そこで作業列としてD2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(C2="","",C2&COUNTIF(C$2:C2,C2)) 次にそれぞれの支出項目別にシートを用意するわけですが、シート2から必要とする項目の数だけのシート(例えばシート10)を用意し、その後にシート見出しでShiftキーを押しながらシート2とシート10をクリックします。この操作でシート2からシート10までが同じ作業グループになります。 その後にシート2の画面でA1セルには備品費と入力します。A2セルには日付、B2セルには支出とかの文字列をシート1と同様に入力します。 3行目から下方に備品費のデータを表示させるわけですがそれにはA3セルに次の式を入力したのちに右横方向にオートフィルドラッグコピーしたのちに下方向にもオートフィルドラッグコピーします。 =IF(OR(COLUMN(A1)>2,COUNTIF(Sheet1!$D:$D,$A$1&ROW(A1))=0),"",INDEX(Sheet1!$A:$B,MATCH($A$1&ROW(A1),Sheet1!$D:$D,0),COLUMN(A1))) これでシート1にある備品費のデータがシート2に表示されます。A列は日付ですのでA列を選んでセルの表示形式を日付に、B列は標準にします。 その後にシート見出しでシート1を選択します。この操作で、それまでシート2からシート10まで同じ作業グループにあったシートが作業グループから解除されます。シート2から10まですべてのシートに備品費の表示がされていますが、それぞれのシートのA1セルに支出項目名を入力すれば、例えばシート3のA1セルには交通費と入力することで、その項目名に関するシート1でのデータが表示されます。 一度お試しください。参考になりましたら幸いです。

agasida
質問者

お礼

やってみました。 エクセル、面白いですね。ありがとうございました。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 以下の様な方法は如何でしょうか。  今仮に、Sheet1の2行目~99行目にかけてデータが入力されていて、A列には日付、B列には収支項目、C列には金額が入力されているものとします。  そして、Sheet2のA1セルには 備品費 と入力されていて、A3~A22にかけては日付が表示され、B3~B22にかけては金額が表示されるものとします。  又、Sheet1のD列は、作業列として使用するものとします。  まず、Sheet1のD2セルに以下の様な数式を入力して下さい。 =$B2&COUNTIF($B$2:$B2,$B2)  次にD2をコピーして、D3~D99に貼り付けて下さい。  次にSheet2のA3セルに =IF(COUNTIF(Sheet1!$D$2:$D$99,$A$1&ROWS(A$3:A3))>0,INDEX(Sheet1!$A$2:$C$99,MATCH($A$1&ROWS(A$3:A3),Sheet1!$D$2:$D$99,0),1),"") B3セルに =IF(COUNTIF(Sheet1!$D$2:$D$99,$A$1&ROWS(B$3:B3))>0,INDEX(Sheet1!$A$2:$C$99,MATCH($A$1&ROWS(B$3:B3),Sheet1!$D$2:$D$99,0),3),"") と入力して下さい。  次にSheet2のA3とB3をコピーして、3行目~99行目に貼り付けて下さい。  それから、Sheet2をコピーして、収支項目の種類の数だけ、コピーシートを作成して下さい。  最後にSheet2以降の各シートのA1セルに、収支項目の名称を入力して下さい。  後は、Sheet1のA2~C99の範囲の各セルに、データを入力されれば完了です。

agasida
質問者

お礼

やってみました!ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 参考になるかどうか判りませんが・・・ ↓の画像で説明させていただきます。 配列数式を使えばSheet1の作業用の列(薄い緑色の列)は必要ないのですが データ量が多いとコンピュータに負担をかけますので、敢えて作業用の列を使っています。 項目数だけ作業用の列が必要になります。 全てのSheetの操作方法は一緒ですので、Sheet2(交通費)のみで説明します。 Sheet1のD2セルに =IF(OR($A2="",$B2<>D$1),"",ROW(A1)) という数式を入れ、オートフィルで列方向と行方向にずぃ~~~!っとコピーします。 そしてSheet2のA2セルに =IF(COUNT(Sheet1!$D$2:$D$1000)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1)))) B2セルに =IF(COUNT(Sheet1!$D$2:$D$1000)<ROW(A1),"",INDEX(Sheet1!$C$2:$C$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1)))) という数式を入れ、A2・B2セルを範囲指定し、B2セルのフィルハンドルで 下へコピーすると画像のような感じになります。 これでSheet1にデータが入力されるたびに他Sheetに反映されるはずです。 尚、数式はSheet1の1000行目まで対応できるようにしていますが データ量によって範囲指定の領域はアレンジしてみてください。 以上、長々と書きましたが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

agasida
質問者

お礼

画像まで入れていただきありがとうございました!

関連するQ&A