• ベストアンサー

異なる算出の仕方

合計を求める式を探しています。 E33に合計を出しています。 例えば、 Cの列に「あ・い・う・え・お・A・B・C・D・E」 と各行に文字を入力して となりのDの列に数字を入力しています。 「あ~お」の場合は、D列の数字をプラス 「A~E」の場合は、D列の数字をマイナス させて、D列(D8~29)の合計をE33に求めたいのですが、 どのような方法がありますでしょうか? IFを使ってやればいいのかなと思い、 行っているのですが、上手く出来ません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

>結果は #VALUE!となってしまいます。 ちゃんとデータ範囲を変更してますか? それから、 >これの答えを100としたいです。 -100ですよね、質問の条件なら。 とりあえず、アルファベットが全・半角や大・小文字がある場合も考慮して、以下の数式で試してみて下さい。 =SUMPRODUCT(ISNUMBER(FIND(UPPER(ASC(C8:C11)),"ABCDEあいうえお"))*(ISERROR(FIND(UPPER(ASC(C8:C11)),"ABCDE"))*2-1),D8:D11) (No.4の補足の条件なら、「-100」になるはずです。) 当方では、上手くいっています。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

#1です。丁寧に例まで上げて説明した積もりですが。 他の回答に出ている「あ・い・う・え・お・A・B・C・D・E」は「文字通り」にとっていません。例えば売上なら+、経費なら-などの隠喩であると解釈しました。 VLOOKUP関数はビジネスなどでは大切な関数です。なじみがないなら、WEB照会するか、解説書を読むこと。 どこかテーブルに2列をとって (D列)  (E列) 給料     1  アルバイト  1  食費    -1  預金利息   1 預金引き出し 1 会費    -1 医療費   -1 などを作ります。 それをVLOOKUP関数で表引きして会費が出てきた行のC列に1、給料が出てきた行のC列に1を、セットします。 後は「計数のB列の数字」と「+1、-1のセットされているC列」を同行同志を掛け算し、加えると望みの合計が出るのではと解釈しました。Sumproduct関数は a1*c1+a2*c2+a3*c3+・・・ を出すわけです。c1、c2、c3・・は1か-1です。 1,2,3・・は行数字です。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 私も一発ネタで。 データがC1~D10にあるとすると、 =SUMPRODUCT(ISERROR(FIND(C1:C10,"ABCDE"))*2-1,D1:D10) です。 もしC列の値が、「あいうえおABCDE」以外の場合は無視するなら、 =SUMPRODUCT(ISNUMBER(FIND(C1:C10,"ABCDEあいうえお"))*(ISERROR(FIND(C1:C10,"ABCDE"))*2-1),D1:D10) という感じになります。

sakura0123
質問者

お礼

すいません、上手くいかないみたいです。。。 結果は #VALUE!となってしまいます。 C8[A] D8[100] C9[B] D9[150] C10[あ] D10[50] C11[い] D11[100] という風な感じで入力されています。 これの答えを100としたいです。 すみませんがよろしくお願いします

回答No.3

じゃぁ、一発ネタ。 =sign(code(C8)-9200) とすると、C8が文字コード表でひらがな以降だと1、2バイト英字以前 だと-1になります。ということは、 E33: =sumproduct(sign(code(C8:C29)-9200), D8:D29) です。が、こいつはC8:C29に空欄があると#VALUEエラーになりますの で、ちょいと細工をしてやらないとマズいですね。空欄の場合は1に するなら、 E33: =sumproduct(sign(code(C8:C29&"あ")-9200), D8:D29) でいいでしょう。

  • kazh
  • ベストアンサー率31% (10/32)
回答No.2

配列数式を使って計算してみるのはどうでしょうか? まず、D32のセルに(どこでもいいけど)=SUM(IF((C8:C29="あ")+(C8:C29="い")+(C8:C29="う")+(C8:C29="え")+(C8:C29="お"),D8:D29,"")) と入力し[Ctrl]+[Shift]+[Enter]と3つのキーを同時に押すと入力した式が{}で囲まれます。同時にあ~おに対応する合計が表示されます。同じようにして、D33セルに=SUM(IF((C8:C29="A")+(C8:C29="B")+(C8:C29="C")+(C8:C29="D")+(C8:C29="E"),D8:D29,""))で[Ctrl]+[Shift]+[Enter]で確定します。 ここまでくればE33に=D32-D33とすれば結果が得られると思います。ちょっと複雑でしょうか?

sakura0123
質問者

お礼

すみません、何度か試していましたら出来ました。 ありがとうございます! もうすこし簡単な式だとなおさらうれしいのですが、 出来ただけでも、とても助かりました!

sakura0123
質問者

補足

書き込みありがとうございます。 やってみたのですが、上手く行きませんでした・・・ =ボタンで計算式を見るとはちゃんと答えが出ているのですが、その結果がセルに反映してません。 「0」と出てしまいます。 {}を取ると#VALUE!となってしまいます。 なぜでしょうか。。。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

テストデータA1:B9 a 2 s 3 d 4 s 5 d 6 h 7 b 8 a 9 f 10 テーブル D1:D9 a 1 b 1 c -1 s -1 f 1 g -1 h 1 d 1 (式1) 空き列C列のC1へ式=VLOOKUP(A1,$D$1:$E$8,2,FALSE) 下へ複写。C1:C10は 1 -1 1 -1 1 1 1 1 1 -1 (式2) 例えばB11セルに=SUMPRODUCT(B1:B10,C1:C10) (結果) 答えは2+4+6+7+8+10-(2+5+2)=36

sakura0123
質問者

お礼

すみません、全然わからないみたいです・・・ それほどエクセルに親しんでいないので、 もうすこし簡単に(すみません)教えていただけると助かります。 よろしくお願いします。

関連するQ&A