先日、「Aという文字が含まれるX社の合計、しかし"例外"という文字が含まれている場合は合計しない」に対し、 =SUMPRODUCT((ISNUMBER(FIND("A",A2:A15)))*(ISERROR(FIND("例外",A2:A15)))*(B1:F1="X社")*(B2:F15)) を教えていただき、解決しました。
A B C D E F
―――――――――――――――――――――――――
01 |商品名 X社 Y社 Z社 X社 Y社
02 |A 1 1 1 1 1
03 |A 例外 1 1 1 1 1
04 |B (1) 1 1 (1) 1
05 |B 例外 1 1 1 1 1
06 |C (1) 1 1 (1) 1
07 |C 例外 1 1 1 1 1
08 |A B 1 1 1 1 1
09 |A B 例外 1 1 1 1 1
10 |A C 1 1 1 1 1
11 |A C 例外 1 1 1 1 1
12 |B C (1) 1 1 (1) 1
13 |B C 例外 1 1 1 1 1
14 |A B C 1 1 1 1 1
15 |A B C 例外 1 1 1 1 1
今回求めたいと思っている合計の条件は
条件1. B または C、または両方が含まれる X社の合計
条件2. "例外"という文字が含まれている場合は合計しない
条件3. B または C と記載があっても A も含まれている場合は合計しない
注意1. X社は複数列あります。
注意2. B2:F15の数値は分かりやすくすべて「1」にしていますが実際には異なります。
注意3. 実際には 「A/B/C/例外」 以外の文字や数字が商品名には含まれています。
答えは上図(1)の箇所、合計6 です。
試行錯誤しながら試みましたが断念。自分の頭を整理するために、見づらいですがイメージ図を作ってみました(ご参考になれば)
______
/ A \
/ \
| ● |
|___ ___ |
/\ ● \/ ● / \
/ \ /● \ / \
| | __ | |
| ● | | ● |
| | ● | |
\ \ / /
\B__/ \__C__/
ABCという3つの円・範囲が、それぞれ重なりあっている。
除外する必要のある "例外"は図では●と表記。例外=●は不特定場所にある。
この図の下段3箇所の合計の内、"例外"を除いた値の合計を求めたいということになります。
・ B枠の重なっていない範囲、内●は除く
・ C枠の重なっていない範囲、内●は除く
・ B枠とC枠のみ重なっている範囲、内●は除く
これを、関数で導きだすことは可能でしょうか。。。
ご検討の程、よろしくお願いいたします。
No.2
- 回答日時:
今回の条件:
例外またはAが含まれている場合は合計しない。
BまたはCが含まれている場合は合計する。
↓
例外が含まれておらず,Aが含まれておらず,BまたはCが含まれている場合に,合計する
のように分解すれば,あなたが最初に教わった数式の単なるバリエーションで解決できます。
=SUMPRODUCT(ISERROR(FIND("例外",A2:A15))*ISERROR(FIND("A",A2:A15))*SIGN(ISNUMBER(FIND("B",A2:A15))+ISNUMBER(FIND("C",A2:A15)))*(B1:F1="X社")*B2:F15)
ご回答ありがとうございました!
悩みに悩みましたが、私の頭では分解・整理しきれませんでしたので大変助かりました。本当にありがとうございました。
回答いただいたお二人ともベストアンサーに相応しいのですが、お一人しか選ぶことができないため、先にいただいた方を選ばせていただきました。申し訳ございません。
No.1ベストアンサー
- 回答日時:
次の式でどうでしょう。
=SUMPRODUCT((ISNUMBER(FIND("B",A2:A15))+ISNUMBER(FIND("C",A2:A15))>0)*ISERROR(FIND("例外",A2:A15))*ISERROR(FIND("A",A2:A15))*(B1:F1="X社")*(B2:F15))
早々にご回答いただき、ありがとうございました。
「>0」のところが思いつきませんでした。大変勉強になりました。
私の知識の限界を超えていましたので大変助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- 家賃・住宅ローン 住宅ローン控除の申請について教えてください 3 2023/02/25 09:07
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- その他(Microsoft Office) ある表(10桝程度)の中に数字が入っています。ダブっている数字を除く数字の合計数の計算方法 5 2023/02/15 11:33
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String型の日付(2005/11/25)の...
-
C# マルチスレッドにおける例外...
-
VBA Evaluate関数 型が一致しま...
-
子プロセスで発生した例外を親...
-
ブックマークレットについて
-
nullで、return出来るのはどん...
-
例外ってIf文の中に入れますか...
-
C++の例外処理について
-
【JAVA】与えられた金額を貨幣...
-
PHPのpack関数をJavaで実装でき...
-
全角スペースのチェックについて
-
「タイプ初期化子が例外をスロ...
-
オープンアプリにおける、テキ...
-
エクセルVBAで、条件に一致する...
-
3年間同じクラスになる確率
-
インスタンス参照でアクセスで...
-
c++,ある関数のクラスから別の...
-
ワイルドカード<?>と型パラメー...
-
「天声人語」をインターネット...
-
DataGridViewでセルクリックイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
VB.Net Object型 空かどうか
-
0除算の例外処理ができない!!...
-
VB.NETで16進数が正しいかどう...
-
数字か文字列かを判定する関数
-
例外ってIf文の中に入れますか...
-
C# マルチスレッドにおける例外...
-
スタックオーバーフローとは?
-
String型の日付(2005/11/25)の...
-
Timestamp型への変換について(J...
-
C# UriFormatExceptionの回避
-
VBA Evaluate関数 型が一致しま...
-
ADOによるレコードの追加/更新
-
時間の取得
-
WebClient()以外でネットにアク...
-
C#の捕捉されない例外処理の対...
-
タトゥーや墨を入れる人の共通点
おすすめ情報