プロが教えるわが家の防犯対策術!

=INDEX(Sheet2!C5:C100,MATCH(Sheet3!B4,Sheet2!A5:A100,0)-1)

という関数で出た値と、

=INDEX(Sheet2!C5:C100,MATCH(Sheet3!C4,Sheet2!A5:A100,0)-1)

という関数で出た値の合計を、Sheet1のセルに入れたいのですが、どのようにすればスマートにいくでしょうか。(検索値である、Sheet3!B4,の部分が違います)


=INDEX(Sheet2!C5:C100,MATCH(Sheet3!B4,Sheet2!A5:A100,0)-1)+=INDEX(Sheet2!C5:C100,MATCH(Sheet3!C4,Sheet2!A5:A100,0)-1)
とすれば、合計は出るのですが、 Sheet3のB4、C4、D4・・・と、4の行を検索した結果の値を足していきたいのです。

そうなると、

=INDEX(Sheet2!C5:C100,MATCH(Sheet3!B4,Sheet2!A5:A100,0)-1)+=INDEX(Sheet2!C5:C100,MATCH(Sheet3!C4,Sheet2!A5:A100,0)-1)+・・・・・・・・
と、非常に長くなってしまいます。

他の関数でスマートに計算する方法はないでしょうか。

A 回答 (4件)

ヒットしたのと一つ上のC列を合計したいのですから


=SUMPRODUCT(SUMIF(Sheet2!A5:A100,Sheet3!B4:Z4,Sheet2!C4:C99))
といった具合です。
    • good
    • 0
この回答へのお礼

とてもシンプルで、目的が達成できました
ありがとうございます

お礼日時:2013/01/12 13:05

おそらくは こんな感じだと思うのですが


=SUMPRODUCT((Sheet3!B4:D4=Sheet2!A5:A20)*(Sheet3!B4:D4<>"")*Sheet2!C4:C19)
完全一致が複数ある場合は計算が異なってしまいます。

言いたかったのは
>=INDEX(Sheet2!C5:C100,MATCH(Sheet3!B4,Sheet2!A5:A100,0)-1)+=INDEX(Sheet2!C5:C100,MATCH(Sheet3!C4,Sheet2!A5:A100,0)-1)
ではなく
=INDEX(Sheet2!C5:C100,MATCH(Sheet3!B4,Sheet2!A5:A100,0)-1)
+INDEX(Sheet2!C5:C100,MATCH(Sheet3!C4,Sheet2!A5:A100,0)-1)
でしょう

=IF(Sheet3!B4="","",INDEX(Sheet2!$C$5:$C$100,
MATCH(Sheet3!B4,Sheet2!$A$5:$A$100,0)-1))
または
=IF(Sheet3!B4="","",INDEX(Sheet2!$C5:$C100,
MATCH(Sheet3!B4,Sheet2!$A5:$A100,0)-1))
として、右へオートフィル。
その範囲の合計を求めるのが、いちばん計算が速く、後継者や将来の自分にやさしい方法だと思います。
    • good
    • 0

=SUMPRODUCT((Sheet2!A4:A99=Sheet3!B4:D4)*Sheet2!C5:C100)



こんな感じかな?


元のデータ形式が不明なので計算式
=INDEX(Sheet2!C5:C100,MATCH(Sheet3!C4,Sheet2!A5:A100,0)-1)
↑の最後の-1が何を意味しているのか不明ですが

この回答への補足

ありがとうございます。
実は、その-1が凄い重要でして、そこが困ってるとこなんです。

=INDEX(Sheet2!C5:C100,MATCH(Sheet3!B4,Sheet2!A5:A100,0)-1)

これは、シート3のB4の企業と同じ企業がシート2のA5からA100にあればということで、例えばシート2のA6で見つかれば、シート2のC6の一つ上の数字であるC5をシート1のD3に入れたいわけです。

シート2のC6の一つ上の数字というのがミソでして、そのために-1としています。

ですので、回答の頂いた式では、C6やC7に数字が入っていると、全てシート1に合計されてしまうんです。

補足日時:2013/01/12 11:21
    • good
    • 0

例えばA1セルに答えを出すとしたらA1セルには =SUM(B1:XX1) などの式を入力しておきます。


B1セルから右横の列は作業列としてB1セルには次の式を入力して右横方向にドラッグコピーします。

=IFERROR(INDEX(Sheet2!$C5:$C100,MATCH(Sheet3!B4,Sheet2!$A5:$A100,0)-1),"")

この回答への補足

ありがとうございます
してみましたが、これでは実現しませんでした。
もう少し、次の補足で詳しく書いてみます。

補足日時:2013/01/12 11:15
    • good
    • 0

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