- ベストアンサー
【エクセル】特定の文字列(番号)の行だけ抽出したい
現在資料を作っていて、またもや困ったことがあったので教えてください。 特定の文字が含まれる行のデータを抽出するにはどうしたらいいのでしょうか。 具体的にいうと ____|A|B|C|D|E| [01]|F|1|0|3|5| [02]|G|0|2|5|7| [03]|H|0|3|4|8| 中略 [21]|F|0|0|9|6| [22]|G|6|4|5|1| [23]|H|3|3|2|2| 中略 [31]|F|2|2|4|6| [32]|G|5|3|7|9| [33]|H|8|2|6|4| 以下略 *[]の中身は行番号 一番上段のA B C D Eは列の軸 |はセルの区切りを示している のような表でGのBのところ(行番号が10n+2のところのA列)だけのデータを合計したいのです。 つまり上の表でいえば =A2+A22+A32+A42+A52…(=0+6+5+…)ということをしたいのですが 数が600行近くあるので手入力だとかなり面倒くさいのです。 SUM関数を使うのかなとも思いましたが、それでもセルの指定の面倒くささは変わらないし… 何か簡単にできるようにする方法がありましたらご教授お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
SUMIFという条件付集計関数があります。上記の場合なら =SUMIF(A:A,"G",B:B) で計算できます。
その他の回答 (3)
- picklse
- ベストアンサー率65% (26/40)
返事が遅くなってしまいました。 >「ShiftとCtrlを同時に押しながらEnterで式を確定」 >はどのような意味があるのでしょうか? この計算式は配列数式といいます。 例えば{=SUM(IF(A1:A20>10,B1:B20))}という計算式の場合、A1:A20の範囲で値が10より大きいセルに対応するB列の値を合計します。 C1に=IF(A1>10,B1,0)という式を入力し、C2からC20までコピーしておいて、=SUM(C1:C20)で合計を求めるのと同じ結果になります。 配列数式を使えば、このC列の式を見えないところで作って合計を出してくれるわけです。 普通の計算式とは計算の仕方が違うため(だと思います)、ShiftとCtrlを押しながらEnterを押して式の入力を行います。 参考URLもご覧ください。
お礼
配列変数というのですね。 NO3の回答で名前はわかっていましたが、どのような意味を持つのかは良くわからなかったので、回答と参考URLで理解を深めることができました。 回答ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
>A2~A33の間でOKWaveという単語を含む行のD列を合計したい場合は >=SUMIF(A2:A33,"OKWave",D:D) >でよろしいのでしょうか。 =SUMIF(A2:A33,"OKWave",D2:D33) ですね。条件範囲と合計範囲の列数と行数は合わせる必要があります。 >またB列からE列までを足したいならば >=SUMIF(A2:A33,"OKWave",B:E) この場合の方法は =SUMIF(A2:A33,"OKWave",B2:B33)+SUMIF(A2:A33,"OKWave",C2:C33)+.. と一列ずつの合計を足すか =SUM(IF(A2:A33,"OKWave",B2:E33)) と入力後にCtrl+Shift+Enterで配列数式化してください。
お礼
補足質問に対する回答ありがとうございます。 列を足すのは一列づつやってみようかと思います。 一列づつ出す必要もあるかもしれないので。 とてもわかりやすい回答でした。 ありがとうございました。
- picklse
- ベストアンサー率65% (26/40)
10n+2の行の合計なら、次の式を入力してShiftとCtrlを同時に押しながらEnterで式を確定します。 =SUM((MOD(ROW(A1:A600),10)=2)*B1:B600) A列が"G"である行の合計なら次のような式になります(入力方法は同じ)。 =SUM((A1:A600="G")*B1:B600) .
お礼
簡単な関数でも組み合わせれば複雑な作業ができるのですね。 補足質問ですが 「ShiftとCtrlを同時に押しながらEnterで式を確定」 はどのような意味があるのでしょうか? {}が式の両側につきましたが、何が違うのでしょう。 よろしくお願いします。
お礼
やはり関数は便利です。回答いただいた関数ですんなり解決できました。 補足質問なのですがもし A2~A33の間でOKWaveという単語を含む行のD列を合計したい場合は =SUMIF(A2:A33,"OKWave",D:D) でよろしいのでしょうか。 またB列からE列までを足したいならば =SUMIF(A2:A33,"OKWave",B:E) でしょうか。 ヘルプを見たのですが、合計範囲という考え方がいまいちわからないので。 よろしくお願いします。