[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート別に振り分けたいのですが』(ななこ)
お久しぶりです。 過去ログを見て頑張ろうと思ったのですが、飽和してしまいました。 お力添えいただければ幸いです。
出納簿を整理するために、科目別に各シートにデータを振り分けたいと思います。 できればマクロではなく関数を利用したいと考えています。 (マクロでは以前に作れましたが、関数でというリクエストが来たのです)
Aから順に、月、日、科目、摘要、収入、支払、残高(A〜G)となります。 Sheet1を日計表とし、Sheet2以降を各科目名(たとえば、通信費)で作っています。 各2行目は予算が入るので、実際は3行目から記載が始まります。 できれば、各シートごとの合計額も出したいのですが・・・。 どのように関数を組み立てていけばよいでしょうか。
日計表(Sheet1)
A B C D E F G 1 月 日 科目 摘要 収入 支払 残高 2 4 1 収入 繰越 1080 1080 3 4 7 通信費 郵券 80 1000 4 5 9 事務費 雑費 300 700
通信費(Sheet2)
A B C D E F G 1 月 日 科目 摘要 収入 支払 残高 2 4 1 収入 繰越 300 300 3 4 7 通信費 郵券 80 220
シート名をそれぞれ日計表、通信費、事務費とします。
通信費SheetのA1=日計表!A1 G2までフィルコピー、但しF2セルは300と上書き入力
通信費Sheetの空いているセル(例えばH1セル) H1=REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),) H1に通信費と表示されない場合は一旦、上書き保存してください。
A3=IF(COUNTIF(日計表!$D$3:$D$6,$H$1)<ROW(A1),"",INDEX(日計表!A$1:A$6,SMALL(IF(日計表!$D$3:$D$6=$H$1, ROW($A$3:$A$6)),ROW(A1)))) 配列数式ですので Ctrl と Shift を押しながら Enter してください。{ }で囲まれて {=式} の形になります。 F3までフィルコピーして、A3:F3を必要分フィルダウン
G3=IF(F3="","",G2-F3)としてフィルダウン
通信費Sheetを事務費Sheetへコピペします。
【蛇足】月日がA,B列に分かれていますが、ひとつのセルに日付入力(シリアル値)された方が何かと便利なように思いますが。。。 ソートや一定期間の抽出などがやり易くなります。(gon-2)
gon-2様、ご回答ありがとうございます。 H1のセルに「通信費」と表示されるところまでは上手くいったのですが、A3以後は数値が反映されず、セルは白いままです。 通信費、事務費のシートの上2行への反映は上手くいっています。 ただ、科目ごとのシートに上手く振り分けられません。 上記の形まんまの出納簿を作っています。関数も指定されたセルへ、そのまま貼り付けました。 申し訳ありませんが、もう少しだけご協力下さい。
P.S.日付の部分は引き継いだままの形で作っていました。 アドバイスどおりひとつのセルにまとめようと思います。ありがとうございました。
(ななこ)
>関数も指定されたセルへ、そのまま貼り付けました。 ということは、ここで表示の式をコピーしてA3セルへ貼り付けたということでしょうか?
そうだとすると少し手続(コツ)が必要になりますので、下記式を直接A3セルへ手入力して Enterしないで Ctrlキーと Shiftキー を押しながら Enter してください。{ }で囲まれて {=式} の形になります。
=IF(COUNTIF(日計表!$D$3:$D$6,$H$1)<ROW(A1),"",INDEX(日計表!A$1:A$6,SMALL(IF(日計表!$D$3:$D$6=$H$1, ROW($A$3:$A$6)),ROW(A1))))
ななこさんは配列数式をご存知ですよね。 [[20040421224006]]
何度もお手数をおかけして申し訳ありません。 更に紛らわしくてすみません。上の記事にあるななこ様と私は別人です。 日頃使っているHNのため確認なく使用してしまいました。 混乱させてしまったこと重ねてお詫びいたします。
配列数式は昔に少し齧った程度ですので、記憶がかなり曖昧です。 「そのまま貼り付けた」というのは単純なコピペのことで、確定には3点キーを使用しました。 ctrl、Shift、EnterでA3セルに入力されたのは、
{=IF(COUNTIF(日計表!$D$3:$D$6,$H$1)<ROW(E20),"",INDEX(日計表!E$1:E$6,SMALL(IF(日計表!$D$3:$D$6=$H$1, ROW($A$3:$A$6)),ROW(E20))))}
です。これを縦横に必要分だけフィルコピーしました。 直接入力でもやってみたのですが、やっぱりセルは空白のままです。 シート名は、日計表、通信費、事務費の3種類。 A〜G列の項目、2行目の繰越分、3行目からの記載開始は最初のとおりです。
また、例えばA7セルには、
=IF(COUNTIF(日計表!$D$3:$D$6,$H$1)<ROW(A5),"",INDEX(日計表!A$1:A$6,SMALL(IF(日計表!$D$3:$D$6=$H$1, ROW($A$3:$A$6)),ROW(A5))))
B5セルには、
=IF(COUNTIF(日計表!$D$3:$D$6,$H$1)<ROW(B3),"",INDEX(日計表!B$1:B$6,SMALL(IF(日計表!$D$3:$D$6=$H$1, ROW($A$3:$A$6)),ROW(B3))))
が、それぞれ{}で括られた形で入っています。 私もかなり混乱していて要領の得ない説明になってしまっているかと思いますが、どうぞよろしくお願いいたします。
(ななこその2)
「D」となっている箇所を「C」(科目の列)にする必要あると思われますが、、、 ↓ A3セル =IF(COUNTIF(日計表!$C$3:$C$6,$H$1)<ROW(A1),"", INDEX(日計表!A$1:A$6,SMALL(IF(日計表!$C$3:$C$6=$H$1,ROW($A$3:$A$6)),ROW(A1))))
(半平太)
半平太さんのご指摘のとおりです。タイプミスしておりましてご迷惑をおかけしました。 私が検証のためにコピペした表がずれておりました。(gon-2)
{=IF(COUNTIF(日計表!$D$3:$D$6,$H$1)<ROW(E20),"",INDEX(日計表!E$1:E$6,SMALL(IF(日計表!$D$3:$D$6=$H$1, ROW($A$3:$A$6)),ROW(E20))))} ※ななこさんがご提示の式中、2カ所の<ROW(E20)は<ROW(A1)のタイプミスですよね。
{=IF(COUNTIF(日計表!$C$3:$C$6,$H$1)<ROW(A1),"",INDEX(日計表!A$1:A$6,SMALL(IF(日計表!$C$3:$C$6=$H$1, ROW($A$3:$A$6)),ROW(A1))))}
G3=IF(COUNT(E3:F3),G2+E3-F3,"") でしたね。
gon-2様、半平太様、ありがとうございました。 無事に思ったとおりの出納簿を作ることが出来ました。
(ななこその2)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.