プロが教える店舗&オフィスのセキュリティ対策術

先日、「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枠のみ重なっている範囲、内●は除く

これを、関数で導きだすことは可能でしょうか。。。
ご検討の程、よろしくお願いいたします。

A 回答 (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)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!
悩みに悩みましたが、私の頭では分解・整理しきれませんでしたので大変助かりました。本当にありがとうございました。

回答いただいたお二人ともベストアンサーに相応しいのですが、お一人しか選ぶことができないため、先にいただいた方を選ばせていただきました。申し訳ございません。

お礼日時:2012/08/22 15:45

次の式でどうでしょう。



=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))
    • good
    • 0
この回答へのお礼

早々にご回答いただき、ありがとうございました。
「>0」のところが思いつきませんでした。大変勉強になりました。
私の知識の限界を超えていましたので大変助かりました。

お礼日時:2012/08/22 15:43

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