• ベストアンサー

Excelでの配列の書き方などについての質問です

Excelで、以下のようなセルにて計算を行いたいです。 ┏━┳━━┯━┓ ┃  ┃ A │.B.┃ ┣━╋━━┿━┫ ┃. 1┃. 100│. 1┃ ┠─╂──┼─┨ ┃. 2┃. 200│  ┃ ┠─╂──┤. 2┃ ┃. 3┃. 300│  ┃ ┠─╂──┼─┨ ┃. 4┃. 400│. 3┃ ┗━┻━━┷━┛ B2とB3の結合を行い、表が上記の様になっている場合、 =A1*B1 + A2*B2 + A3*B2 + A4*B4 といった計算をうまく行う方法はありますか? SUMPRODUCT関数を使用し挑戦してみましたが、 {B1;B2;B2;B4}と書いてみたところエラーを吐かれてしまいました。 配列の要素にセル番号を持ってくることはできないのでしょうか? 改善方法がありましたらお教えください。 また、上記の計算が行える他の記述方法等あれば教えていただけると助かります。 よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

とりあえず簡易版の対処療法で。 D1セルを空っぽにしておきます D2セルに =D1 を入れます D1:D2を選んでコピーします B2(および結合されたB3)を選んで型式を選んで貼り付けを開始し,数式にマーク,「空白セルを無視する」にチェックを入れて,OKします。 作業を終えたらD2は消して構いません。 以上により,ご質問の計算は =SUMPRODUCT(A1:A4,B1:B4) で通ります。 ただし副作用として =SUM(B1:B4) は見た目とは違う結果になるので注意してください。 それから >配列の要素にセル番号を持ってくることはできないのでしょうか? 出来ません。

krtw39
質問者

お礼

ご返答ありがとうございます! 思い通りにできました!

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

C1セルに次の式を入力し下方にオートフィルドラッグします。 =IF(A1="","",IF(ROW(A1)=1,IF(B1<>"",A1*B1,A1*OFFSET(B1,-1,0)),IF(B1<>"",A1*B1+OFFSET(C1,-1,0),A1*OFFSET(B1,-1,0)+OFFSET(C1,-1,0)))) これで最終行には答えが表示されますね。答えをD1セルに表示されるのでしたらD1セルに=MAX(C:C)と入力します。

krtw39
質問者

お礼

ご返答ありがとうございます! OFFSET関数というものもあるんですね。 扱えるようになると便利そうなので勉強してみます。