【先着1,000名様!】1,000円分をプレゼント!

Excel2010を使用しています。
家計簿を作成しているのですが、SUMIFS関数でOR条件を使用したい場合どのように書けばよいでしょうか。

図は、明細と合計欄です。
ピンクのセルが円、それ以外はドルです。
合計欄のように、円とドルをそれぞれ分けて項目毎の合計額を出したいです。
セルE21のように、円の場合は「MUFJ」「ゆうちょ」ですので、MUFJとゆうちょのSUMIFS関数合計値を足しています。
これを、1行にまとめたいのですが、適切な関数はないでしょうか?
SUMIFSではOR条件が使えないようですので・・・・・・

明細行に円・ドルの列を追加すれば簡単なのですが、明細行の列はこれ以上増やしたくないので、できれば数式のほうで処理できればと思っています。

よろしくお願いいたします。

「SUMIFS関数でOR条件を使いたい場合」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (4件)

例示のデータなら以下のような数式になります。



=SUM(SUMIFS($C$2:$C$14,$D$2:$D$14,{"MUFJ","ゆうちょ"},$B$2:$B$14,B21))
    • good
    • 43
この回答へのお礼

回答ありがとうございます。

求めていた答えでした! SUMで入れ子にすれば並列できるんですね。
どうもありがとうございました。

お礼日時:2014/10/07 05:27

>図では円の銀行は2つですが、実際は10くらいあり、全部加算すると長くなってしまいます。


代替関数ではSUMPRODUCT関数が利用可能です。
貼付画像は模擬データで検証した結果です。
=SUMIFS(C2:C11,A2:A11,"A",B2:B11,"I")+SUMIFS(C2:C11,A2:A11,"B",B2:B11,"I")
=SUMPRODUCT((A2:A11={"A","B"})*C2:C11,(B2:B11={"I","I"})*1)
この2つの数式は等価です。
あなたの目的にはSUMPRODUCT関数が適していると思います。
A列の文字が"A"または"B"でB列の文字が"I"である行のC列の合計を算出しています。
SUMPRODUCT関数の中で扱う配列は行数と列数に食い違いが無いように定義します。
「SUMIFS関数でOR条件を使いたい場合」の回答画像3
    • good
    • 5
この回答へのお礼

回答ありがとうございます。

SUMPRODUCT関数を使えばよかったんですね。
図は単純な項目値の合計でしたが実際は月ごとに項目値を求めたかったので、

=SUMPRODUCT(($B$2:$B$14={"仕事","仕事","仕事"})*$C$2:$C$14,($D$2:$D$14={"JALUSA","BnkOfHawaii","小切手"})*1,(LEFT($A$2:$A$14,6)={"2014/4","2014/4","2014/4"})*1)

というような数式になりました。
ISNUMBERでもできそうですがうまくいきませんでした:(

お礼日時:2014/10/06 11:11

MUFJとゆうちそれぞれのsumifを足算すればいいだけです。


=sumif()+sumif

この回答への補足

回答ありがとうございます。
やはり加算するしかないですよね。

図は簡易に書いたのですが、実際は月ごとに項目の合計値を出したりしているため、SUMIFSを使用しています。

補足日時:2014/10/06 07:52
    • good
    • 2
この回答へのお礼

補足とお礼を間違えました。
遅くなりましたがありがとうございました。

お礼日時:2014/12/17 15:39

>セルE21のように、円の場合は「MUFJ」「ゆうちょ」ですので、MUFJとゆうちょのSUMIFS関数合計値を足しています。


それで良いのではないでしょうか?
論理式を四則演算式に置き換えるとORは加算でANDは乗算です。
従って、SUMIFS関数の結果を加算すればORで絞り込んだことになります。
強いて加算の記号(+)を省いた数式にするにはSUM関数で囲い込むことで良いでしょう。
=SUM(SUMIFS(合計範囲,条件範囲1,条件1,条件範囲2,条件2),SUMIFS(合計範囲,条件範囲1,条件3,条件範囲2,条件4))

この回答への補足

回答ありがとうございます。
図では円の銀行は2つですが、実際は10くらいあり、全部加算すると長くなってしまいます。
SUMIFS関数の複数条件式にORが使えればな~と思い、簡潔に書ける代替関数はないかと質問しました。
しかしSUMIFSにしてもSUMにしてもOR条件は繋げるしかないですよね・・

補足日時:2014/10/06 07:50
    • good
    • 2
この回答へのお礼

補足とお礼を間違えました。
遅くなりましたがありがとうございました。

お礼日時:2014/12/17 15:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSUMIF関数で、「ブランク以外を合計」を指定したい

SUMIF(範囲,検索条件,[合計範囲])
の、検索条件部分に、
「セル内に数字、文字をとわず、とにかく何か入力されていたら合計する」
といった意味合いの条件を指定したいのですが、その方法がわかりません。

画像で説明させていただくと、
A2のセルにSUMIF関数を用いて、
文字が入力されているc,d,e列の数値を合計し、
90という結果が欲しい、ということです。

どなたかご教授をお願いいたしますm(__)m

Aベストアンサー

こんばんは。

なんか皆さん難しく考えすぎのような・・・
SUMIF関数でできますよ。検索条件を空白以外とすればいいだけです。
=SUMIF(B2:F2,"<>",B1:F1) でできます。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QエクセルSUMIF関数とOR条件

「X」の条件を満たすデータをの合計を計算したい場合SUMIF関数、「X」および「Y」の条件を満たすデータの合計を計算したい場合は、SUMPRODUCT関数が使えると思いますが、
「X」または「Y」の条件を満たすデータの合計を計算したい場合は、
SUMIF(検索範囲,"X",合計範囲)+SUMIF(検索範囲,"Y",合計範囲)とやるしかないですか?
それとも、SUMIFを並べなくても、1回で計算できる関数がありますか?
ご存知の方、ご教授下さい。
どうぞよろしくお願いいたします。

Aベストアンサー

こんばんは。

>条件が5個以上になると、さすがに式が長くなりすぎて見苦しいですので

それなら、こんな方法も思いつきます。

=SUMPRODUCT((LEN(SUBSTITUTE("XY",検索範囲,""))<2)*合計範囲)
(注意:大文字小文字の区別があります。)

数式の中の「<2」 の 2 は、検索値 "XY" のことです。
検索値が、5個なら、<5 です。

QSUMIF関数で、条件に日付範囲で指定するには?

SUMIF関数で、条件に日付をいれたいのですが、
10日毎の範囲で集計を取るにはどうすればいいでしょうか。

A列に日付、B列に数値で
=SUMIF(A:A,"【2013/9/1~2013/9/10】",B:B) 
こんな感じで日付の部分が問題のところです。

date関数を入れてみると例えば9/3だけなど、一日だけの計算はできたのですが…
1~10,11~20、21~末日(31日)で合計するにはどう記入すればいいでしょうか。

Aベストアンサー

こんにちは。

2013/9/10までを求めて、2013/9/1以前を引けば答えが出ます。
=SUMIF(A:A,">=2013/9/10",B:B)-SUMIF(A:A,"<2013/9/1",B:B)

どうでしょうか。

QSUMIFS関数で「計算式による空白以外」を条件に指定したい

SUMIFS関数のいくつかの条件の中で、,B1:B10,"<>",とすれば、
B1~B10の空白以外ということになるのは調べてわかったのですが、
B1~B10に式が入っているため、空白と判断されません。
たとえば、=IF(A1=10,"",C1*D1)のような感じで、
A1が10でB1が空白になっている場合、空白とみなされないようです。
計算式による空白以外を条件にするにはどう記述すればいいのでしょうか?

Aベストアンサー

こんばんは。

例:
B1:~B10
=IF(A1=10,"",C1*D1)

A B
10   
1   20
2   30
3   42
4   56
5   72
6   90
7   110
8   132
9   156

としますね。(C列,D列は省略します)

"<>"では数式が入っているとうまく行きません。(Excel 2010)
----------------------------------------------------
 =SUMIFS(A1:A10,B1:B10,"<>*")

これはどうでしょうか?

結果
B列の数式に「""(長さ0の文字列)」が入っている場合は、
 45
Empty(空)の場合は、
 55
----------------------------------------------------
しかし、最初の数式
=SUMIFS(A1:A10,B1:B10,"<>")
では、
B列の数式に「""(長さ0の文字列)」が入っている場合は、
 55
Empty(空)の場合は、
 45
 
と逆の結果になりました。

本来は、">0" とか、"<>0"とかにすればよいとは思います。
ちなみに、""の[長さ0の文字列]を探す数式は、

=SUMIFS(A1:A10,B1:B10,"<""")

とすれば、結果は、10となります。

こんばんは。

例:
B1:~B10
=IF(A1=10,"",C1*D1)

A B
10   
1   20
2   30
3   42
4   56
5   72
6   90
7   110
8   132
9   156

としますね。(C列,D列は省略します)

"<>"では数式が入っているとうまく行きません。(Excel 2010)
----------------------------------------------------
 =SUMIFS(A1:A10,B1:B10,"<>*")

これはどうでしょうか?

結果
B列の数式に「""(長さ0の文字列)」が入っている場合は、
 45
Empty(空)の場合は...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Q複数の文字列のいずれかが含まれていたらTRUEを返す関数について

複数の文字列のいずれかが含まれていたらTRUEを返す関数について
エクセル2003を使用しています。
B列に例えば住所が入力されていて、「東京都北区」「千代田区」「東村山市」等いくつかの文字列のいずれかが含まれていたら、A列にTRUEを返すということをしたいのですが方法がわかりません。
単純なことのような気がするのですがどうしても思いつきません。よろしくお願いいたします。

Aベストアンサー

こうかなあ。。。
A2セル
=OR(SUBSTITUTE(B2,$D$2:$D$4,"",1)<>B2)
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
下へオートフィル

D2:D4に文字列を入力しておく

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

QエクセルのIF文で「NOT=」はどう書くのですか?また、>=や<=の場合の書き方を教えてください

タイトルのとおりです

IF文で下記の3つの書き方がわかりません。

NOT=は、<>?
0以外の場合は、A1<>0?

A1が0と同じか、大きい場合は
A1>=0?

なんだか、うまくいきません^^;

よろしくお願いいたします

Aベストアンサー

A1が・・・・・
A1 <> 0  0以外
A1 >= 0  0以上(0を含む)
A1 > 0   0より大きい(0は含まない)
A1 <= 0  0以下(0を含む)
A1 < 0  0未満
A1 = 0  0

=<,=> などの書き方は使えません。


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング