- 締切済み
ある項目の種別だけ抽出する方法
Excel2010です。 銀行明細書の項目毎の整理を行いたいのですが A列に日付、 B列に金額、 C列に電気代や水道代、ガス代といった項目の名称 が入っています。 C列から検索して、 電気代の行のみを全て抽出して 日付、金額をまとめるようなことをしたいのですが どうすれば良いですか? VBAが必要でしたら その方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>シート上では正常に2014年になっていても年月日がなぜか1990年から始まるものになってしまいます。 当方では正しいグラフになります。 横軸(日付)はセルの表示形式に従っていますのでyyyy/mm/ddのようにすれば西暦年も表示されます。 元データが1990/12/1のように入力されている場合は表示形式がm/dのようになっていると思惑通りにならないかも知れません。 元データ(A11:A26)の値を確認してください。 当方で提示した数式では日付の加工を行っていませんので変化することはありません。
- bunjii
- ベストアンサー率43% (3589/8249)
ROW関数のセル範囲に誤りがありました。 ROW(E$11:E$33) → ROW(E$11:E$26) 配列の積(列×列)では行数のサイズが同じでなければなりません。 =IF(COUNTIF($C:$C,E$10)>ROW()-10,INDEX($A:$A,SUMPRODUCT(SMALL(($C$11:$C$26=E$10)*ROW(E$11:E$33)+($C$11:$C$26<>E$10)*1000,ROW()-11))),"") ↓ =IF(COUNTIF($C:$C,E$10)>ROW()-10,INDEX($A:$A,SUMPRODUCT(SMALL(($C$11:$C$26=E$10)*ROW(E$11:E$26)+($C$11:$C$26<>E$10)*1000,ROW()-11))),"")
お礼
ありがとうございます。 ただ、どうしても-10や-11のところの設定の仕方が分からないので教えていただけないでしょうか?
補足
すいません、あと この関数で年月日を出力したあと、 横軸を年月日、縦軸を金額にした 散布図を作成したいのですが シート上では正常に2014年になっていても 年月日がなぜか1990年から始まるものになってしまいます。 これはなぜでしょうか? どのようにすれば改善されますでしょうか?
- bunjii
- ベストアンサー率43% (3589/8249)
>C列から検索して、電気代の行のみを全て抽出して日付、金額をまとめるようなことをしたいのですがどうすれば良いですか? INDEX関数、SUMPRODUCT関数、SMALL関数、ROW関数等を組み合わせて次の数式を使うと良いでしょう。 E1に電気代 E2に日付 E3=IF(COUNTIF($C:$C,E$1)>ROW()-3,INDEX($A:$A,SUMPRODUCT(SMALL(($C$2:$C$26=E$1)*ROW(E$2:E$26)+($C$2:$C$26<>E$1)*1000,ROW()-2))),"") F2に金額 F3=IF(COUNTIF($C:$C,E$1)>ROW()-3,INDEX($B:$B,SUMPRODUCT(SMALL(($C$2:$C$26=E$1)*ROW(E$2:E$26)+($C$2:$C$26<>E$1)*1000,ROW()-2))),"") この数式の模擬データはA2:C25に入力してあります。 E3セルとF3セルを選択して下へ必要数コピーしてください。 検索範囲が増えた時は25行目と26行目の間に行を挿入すれば数式の検索範囲も自動的に変化します。 但し、データの最大行番号は999までにしてください。 貼付画像はExcel 2013で検証した結果ですが、他のバージョンでも再現できるはずです。
お礼
ありがとうございます。 これでうまくいきそうなことが分かりました。 応用編としてセルの位置をずらしたいのですが なぜかうまくいきません。 A10,B10,C10に日付、金額、用途のタイトルが入っており、 A11~C11以下にそれらの値が入っており、 E10に電気代のタイトル E11に日付、が入っているとします。 =IF(COUNTIF($C:$C,E$10)>ROW()-10,INDEX($A:$A,SUMPRODUCT(SMALL(($C$11:$C$26=E$10)*ROW(E$11:E$33)+($C$11:$C$26<>E$10)*1000,ROW()-11))),"") これをE12以下にコピペすればうまくいくと思うのですがなぜかうまくいきません。 どこをどう変えれば良いでしょうか?
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 ↓の画像で左側が元データのSheet1でSheet2に表示するとします。 Sheet2のA1セルに検索したい項目名を入力します。 Sheet1のD列を作業用の列として使用します。 D2セルに =IF(A2="","",IF(C2=Sheet2!A$1,ROW(),"")) という数式を入れフィルハンドルでずぃ~~~!っと下へコピーしておきます。 そして、Sheet2のA4セルに =IFERROR(INDEX(Sheet1!A:A,SMALL(Sheet1!$D:$D,ROW(A1))),"") という数式を入れ隣りのB4セルまでフィルハンドルでコピー → A4セルの表示形式は「日付」にします。 最後にA4・B4セルを範囲指定 → B4セルのフィルハンドルで下へコピーすると 画像のような感じになります。 ※ Sheet1の作業列を使いたくない場合は、Sheet1の作業列はなしにし、 Sheet2のA4セルに =IFERROR(INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$C$1:$C$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1))),"") これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → Sheet2のA4セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを列・行方向にフィルハンドルでコピーしてみてください。 ※ この合計を表示したい場合はどこかのセル(Sheet2のB列以外)に =SUM(B:B) としておけば合計が表示されます。m(_ _)m
- donald1982
- ベストアンサー率33% (4/12)
データ → フィルタ C列で電気代を抽出 必要な欄をコピー→別シートに貼付 貼り付けたシートで並び替えなどの加工 でいかがでしょうか。
お礼
ありがとうございます。 ただ、この方法だといちいちコピーペーストしないといけないので 別の方法はないでしょうか?
お礼
横軸ではなく縦軸に設定するとなぜかうまくいきます また散布図ではなく折れ線にしてもうまくいきます。 バージョンは2010ですが解決策があれば教えてください。 それと-12のところはデータの始まる行数 -11のところが、データの始まる行数+1を代入する、 ということであっていますか?