- ベストアンサー
2行おきにSUMIF複数条件を設定、合計したい。
エクセルで、条件を複数設定して合計したいのですが、数々のページを検索して見ても、どう式を設定したらいいのかわからないので教えてください。 A-1 B-1 C-1・・・・・(右にデータ多数) 1.34 2.62 11.39 3.22 1.68 8.15 D-4 E-2 F-3 13.56 7.23 2.15 6.21 41.68 8.19 ・ ・ ・(下にも多数) こういった感じの、 アルファベット+数値(項目名です)、 数値1 数値2 といった一塊のデータが、右にも、下にも多数続いています。 ここで、1以上、2未満の数値のみを合計するのですが、それはSUMIF関数で設定できています。 が、問題なのは、これを、数値1のデータのみを、1以上2未満を合計する、という式に設定したいのです。 (同様に、数値2も、1以上2未満合計、2以上3未満合計、という式を設定したい。)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
一度、同じシートで説明します。以下の様に4行挿入しています。 A B C・・・ 1 1 2 2 3 3 4 4 5 0 A-1 B-1 C-1 6 1 1.34 2.62 11.39 7 2 3.22 1.68 8.15 8 3 ・・ 9 4 ・・ 10 0 D-4 E-2 F-3 11 1 13.56 7.23 2.15 12 2 6.21 41.68 8.19 13 3 ・・ 14 4 ・・ とあるとして A列に =MOD(ROW(A1),5)と入れて下へコピィすれば A列には 1,2,3,4,0,1,2,3,4,0・・・ B1セルに =SUMPRODUCT(($A$5:$A$100=$A4)*(B$5:B$100>=1)*(B$5:B$100<3)*(B$5:B$100)) 右へコピィ、下へコピィしてみてください。 A列がA1~A4を同じの行は1 他は0 B列が1以上の時1 他は0 B列が3未満の時は1 他は0 にB列の値を掛け算した合計が出ます。
その他の回答 (4)
- hallo-2007
- ベストアンサー率41% (888/2115)
>3から4に変えてやってみましたが、どうもうまく行きませんでした・・・。 あれま~、どうしてでしょうね。 >A1+A13+A21+・・・って入力した数値と結果・・ というのは? 取り合えず、空いている列に =MOD(ROW(),4) 或いは MOD(ROW(A1),4)といれて下までコピィしてみてください。 集計を希望する行の値が決められませんでしょうか?
お礼
GWでお返事が遅くなりました。スミマセン。(^^;; 連休明け、再びデータを確認したところ、 項目名 日付 データ1 データ2 データ3 という5行でしたので、=MOD(ROW(A1),4)をもとに、5に変えてやってみました。 結果、データ1が4、データ2が0、データ3が1、という数値が返されてきました。ええっと・・・。これをもとに、どう式を組み立てたらいいでしょう・・?なんか頭がごちゃごちゃになって来ました・・(^^;;
- hallo-2007
- ベストアンサー率41% (888/2115)
No2です。 >MOD(ROW(Sheet1!A1:A100),3)=2 >というのは、Sheet1のA1:100までの範囲を、3で割り、2行あけると3行おきの計算になる、という式なんでしょうか? それぞれの行番号を3で割ったあまりが 2の場合のみ 1 となります。 条件に合わない行の場合は 0 です。 SUMPRODUCT関数が配列を使う関数なので理解しにくいですよね ROW関数は 指定したセルの行番号を出します。 ROW(A1)は 1、ROW(A2)は 2・・・といった具合です。 MOD関数は割り算のあまりを出します。 MOD(ROW(A1),3)は 1、MOD(ROW(A2),3)は 2・・・、MOD(ROW(A5),3)は 2です。 つまり、 MOD(ROW(A1),3)=2 は、FALSE 0 MOD(ROW(A2),3)=2 は 1 MOD(ROW(A3),3)=2 は 0 ・・・といった具合に計算してますので、条件に合わない行は、0ですので、その掛け算の合計を出しますので、結果は 0 です。 結果、条件にあった行のみ 1ですので、その行のみの合計値になります。
お礼
丁寧な解説ありがとうございます。 データを再確認したところ、3行おきではなく4行おきでしたので、教えていただいた式を元に、MOD(ROW(Sheet1!A1:A100),3)=2 の部分を3から4に変えてやってみましたが、どうもうまく行きませんでした・・・。 (目視確認しながら単純にA1+A13+A21+・・・って入力した数値と結果が違うんです(;_;)) ひとまず、お礼まで。
- hallo-2007
- ベストアンサー率41% (888/2115)
質問は A2、A5、A8・・と3行おきの数値の合計値がほしいということでしょうか。 例えば、データがSheet1 と名前のシートだとして、別のシートに =SUMPRODUCT((MOD(ROW(Sheet1!A1:A100),3)=2)*(Sheet1!A1:A100>=1)*(Sheet1!A1:A100<3),(Sheet1!A1:A100)) と入れて右へコピィ 上記の式は 1以上3未満の合計です。範囲は100行目までです。
お礼
ありがとうございます。 >A2、A5、A8・・と3行おきの数値の合計値がほしいということでしょうか。 そうです! ええと、だいだいわかったのですが、もう少しだけ教えてください。 MOD(ROW(Sheet1!A1:A100),3)=2 というのは、Sheet1のA1:100までの範囲を、3で割り、2行あけると3行おきの計算になる、という式なんでしょうか? MOD関数について解説サイトで見ても、よくわからなかったのでお願いします。
ROW関数を使うと、現在の行数がわかります。 時間が無いのでヒントだけですみません。 =IF(MOD(ROW(A1),3)=1,"アルファベット+数値",IF(MOD(ROW(A1),3)=2,"数値1","数値2")) の式を応用してみてください。
お礼
ヘルプなどを見ても、ROW関数の使い方など意味がわかりませんでした。ありがとうございます。
お礼
お礼が大変遅くなりました。 四苦八苦しましたが、なんとかなりました! ありがとうございました。