- ベストアンサー
エクセルのSUMIF関数について
SUMIF関数で、条件を2つ以上設定できますか。 現在、=SUMIF($I:$I,"I1",$F:$F)+SUMIF($I:$I,"I3",$F:$F)+SUMIF($I:$I,"I5",$F:$F)+ SUMIF($I:$I,"I7",$F:$F)といったような計算をしていますが、SUMIFを一回だけ使い条件をI1,I3,I5,I7と 複数設定できるかということです。 マクロを使用すればできるのですかね・・ またヘルプを見たところSUMIF($I:$I,">=I1",$F:$F)ができると見て、実際にできましたが、 I1以上I7以下といったようなこともできるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>SUMIF関数で、条件を2つ以上設定できますか。 ●SUMIF関数はあまり機能的でないので困難でしょう。 >I1以上I7以下といったようなこともできるのでしょうか。 #1 mshr1962さんの方法のようにしてできます。 ●他の方法として、配列数式を使ってみます。 =SUM(IF(I1:I65535={I1,I3,I5,I7},F1:F65535,0)) と算式を入力し、Ctrl+Shift+Enter で登録します。これで配列数式として登録されます。 Ctrl+Shift+EnterはCtrlキーとShiftキーを押しながらEnterキーを押すことです。 配列数式として登録されれば、数式バー内で{算式}のように算式が{ }で囲まれます。 登録に失敗したら、そのセルでファンクションキーF2を押して編集モードにして、再度Ctrl+Shift+Enterとしてみて下さい。算式を修正した時も同様に登録します。 上の式では、{ }内に任意の値を入力できるはずです。 ただし、{1,1,1}は3回のSumIfを行うことになります。 >マクロを使用すればできるのですかね・・ ●個人的にはこれが一番楽ですが。。。 下に任意の複数値を指定して合計するユーザ定義関数を作ってみました。 =mySumIf(I:I,F:F,1,2,5) I列で1,2,5を探して、対応するF列の値を合計する。 =mySumIf(I:I,F:F,9,8,7,1) I列で9,8,7,1を探して、対応するF列の値を合計する。 のようにして使います。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。 出てきたコードウインドウに下記マクロをコピーして貼り付けます。 Function mySumIf(findColumn As Range, SumColumm As Range, ParamArray jyoken()) Dim TTL As Double '// 合計 Dim cot As Integer '// カウンタ If UBound(jyoken) = -1 Then '// 条件を何も指定していなければ何もしない mySumIf = 0 Exit Function Else '// 設定している条件分のSumIfを行う For cot = LBound(jyoken) To UBound(jyoken) TTL = TTL + Application.SumIf(findColumn, jyoken(cot), SumColumm) Next End If mySumIf = TTL End Function
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
『SUMIFを一回だけ使い条件をI1,I3,I5,I7と複数設定』はできないと思います。 I1以上I7以下は =SUMIF($I:$I,">=I1",$F:$F)-SUMIF($I:$I,">I7",$F:$F) で計算できます。
お礼
=SUMIF($I:$I,">=I1",$F:$F)-SUMIF($I:$I,">I7",$F:$F) なるほど、ありがとうございます。 頭使えば分かったはずですね、情けない。
お礼
お返事が遅くなって、すみませんでした。 配列数式のやり方がわから無かったもので、 後半部のマクロは非常に役に立ちます。これで現在、 sumif()+sumif()+sumif()・・・ といった部分を作り直しているところです。 どうもありがとうございました。