- ベストアンサー
エクセルデータ抽出と合計の方法について
- エクセルで特定の条件に合致するデータを抽出し、それに該当する別の列の合計を求める方法について教えてください。
- 具体的には、B列に存在する特定の数字列を自動で抽出し、それに該当するA列の値の合計を求める方法を知りたいです。
- 現在は手入力で抽出すべき数字列をD列に入力し、合計を求める式をE列に記述していますが、関数を使用して自動的に数字列を抽出する方法があれば教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
D1セルには次の式を入力します。 =MIN(B:B) D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(MAX(D$1:D1)=MAX(B:B),"",SMALL(B:B,COUNTIF(B:B,"<="&D1)+1))
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
全体的にはSUMIFの問題です。 問題はB列に現れるデータで、重複せず、漏れの無い1対(セット)のデータをどう作るかということです。 この難しさに気づかず、集計だけの方法を質問している質問者が多いが(そういう人は目視で判断して手入力している(するつもりな)のだろう)、本当はこちらも関数では難しい。 ーー 私はデーターフィルターフィルタオプションの設定で 条件は指定せずに空白にして 抽出データを置くセル範囲を指定し 重複するレコードは無視する、のチェックを入れて OK で作ることを勧めている。 ーー 関数なら 10 111 1 20 222 2 30 111 40 111 50 333 3 C2セルは =IF(COUNTIF($B$2:B2,B2)=1,MAX($C$1:C1)+1,"") 初出データ行に連続番号を振っている。 例えばE2に =INDEX($B$2:$B$6,MATCH(ROW()-1,$C$2:$C$6,0)) を入れて下方向に式複写。 結果 111 222 333 #N/A ーー imogasi方式(Googleで照会) ーー #N/Aを出さない方法は その手前で式の複写をやめるか C列のMAX(この場合3)より行数が大に鳴れば空白を返すIF関数式をかぶせると良い。
お礼
データーフィルターフィルタオプションの設定でできるんですね! 今度使ってみようと思います。 ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
- maron--5
- ベストアンサー率36% (321/877)
◆あまり質問者の方には人気がありませんが、このような場合「ピボットテーブル」がおすすめです 1)一番上の行に項目行を設けて、A1:B7の範囲を指定して、 2)リボンの「挿入」タブ→「テーブル」グループ→「ピボットテーブル」→「ピボットテーブル」 3)「コード」を「行ラベル」に、「数量」を「?値」にドラッグします ★これだけで出来上がりです ◆EXCEL2003参考URL 「Excel(エクセル)実用編:家計簿の作成(ピボットテーブルを使う)」 ↓ http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/kake-pib.htm ◆関数案も D2=B2 D3=IF(ROW(A1)>SUMPRODUCT(($B$2:$B$10<>"")/COUNTIF($B$2:$B$10,$B$2:$B$10&""))-1,"",INDEX($B$2:$B$10,MATCH(0,INDEX(0/ISERROR(MATCH($B$2:$B$10,$B$2:B2,0)),),0))) ★下にコピー
お礼
2通りありがとうございます。 ピボットは、ファイルがどんどん重くなっていくような・・・ということで避けて通りました。
- edomin7777
- ベストアンサー率40% (711/1750)
こんな感じでどうでしょう…? =SUMPRODUCT(($B$1:$B$100=D1)*($A$1:$A$100)) これをD1に入力し、下にコピー。 範囲の後ろの数字は適宜変更してください。
お礼
早々にご回答いただいてありがとうございます。
お礼
うまく表示できました!! ありがとうございます。