• ベストアンサー

Excel 配列について

Excelの配列での計算について質問させてください。 画像のようにB3、D3の配列定数同士を掛け合わせるような計算は可能なのでしょうか。 もし可能なら、どのように計算式をたてればいいか教えてください。 バージョンはExcel2003になります。 よろしくお願いします。

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

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

結論から言うと不可能です。 たとえばB3セルに ={1,2,3} と記入してあったとして,しかし他のセル(の数式)でB3セルを呼び出した(参照した)とき,B3セルの値は純粋にただの1になります。 B3の「値として」{1,2,3}の「配列を引っ張ってくる」方法はありません。

その他の回答 (5)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.6

補足です。 [No.5]の添付図を参照しながら実行してみてください。 1.範囲 G1:G3 を選択 2.そのままの状態で、[数式バー]上に式 =F1:F3*H1:H3 を入力、ただし __Enterキーはまだ叩かない(^_^) 3.Ctrl+Shift+Enterキーを「エイヤッ!」と叩き付け! [No.5] も含めて、何のことやらサッパリポンなら、私のコメントは無視されたい。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.5

諄い解説をする柄ではないので全くしませんが、添付図が参考になれば仕合わせです。 B2: ={1,2,3} D3: ={10,20,30} B3: ={F1:F3} C3: {=SUM(F1:F3)} D3: ={H1:H3} E3: {=SUM(H1:H3)} C6: ={B3*D3} ← 配列にナッチョラン! C7: ={F1:F3*H1:H3} D7: {=SUM(F1:F3*H1:H3)}

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

横道にそれますが本質問の親類の話題に 行列の計算の「行列積」(SUMPRODUCTを積と違う)求める関数のMMULTがあります。 それをGoogleででも調べればすぐわかります。 ーー しかしこのこの関数MMULTは 引数が2つ で 第1引数、第2引数ともセル範囲をB2:C3、B5:C6のように1セル1数値データのデータのセル範囲を指定し、1セルに=MMULT(B2:C3,B5:C6)のような式を打ち込んだ後に 質問のように1セルに配列定数を定義する場合と違います。 また計算式がSUMPRODUCT積と違います。 上記のことはVBAで行列の掛け算の定義(方式)によって自分でプログラムを組んで答えを求められます。しかしそれは1つの値になります。 === 差て本題の、 質問者が言っている >B3、D3の配列定数同士を掛け合わせるような は質問にはっきり何をしたいのか書いておかないと駄目なのだが、SUMPRODUCT積を出したいようですからそれを書いておくべきです。 SUMPRODUCT関数は、解説書で引き数は、配列1、配列2・・となっています。 ーー では引数が2つの配列定数で、SUMPRODUCT積が出せるか? SUMPRODUCT関数も、 こちらも本来は、1セル1データで四角形のセル範囲に集まったものを対象にします。 ですから1セルに配列を定義してもダメです。 ーー 隣り合う(同じ)列の4セルに1,2,3,4と別セルに数を入れるのは、4セルを範囲指定して、={1;2;3;4}と数式バー部で入力し、SHIFT+CTRL+ENTERを押します。 結果 1 2 3 4 C1:E2を範囲指定して、数式バーに ={1,2,3;4,5,6} といれてSHIFT+CTRL+ENTERを押すと C1:E2は 1 2 3 4 5 6 と一括でデータが入ります。 ーー こう言う風にデータがなると C1:E2 1 2 3 4 5 6 C4:E5に 2 3 4 1 2 3 とデータを作って、どこかのセルに配列数式 =SUMPRODUCT({1,2,3;4,5,6}*{2,3,4;1,2,3})でSHIFT+CTRL+ENTERで は52になる。 =2+6+12+4+10+18を計算しています。 =SUMPRODUCT(C1*C4)は結果が2となり1セル同志しか計算しません。 データは配列定数で入れて、式ではセル範囲指定にする =SUMPRODUCT(C1:E2*C4:E5)でSHIFT+CTRL+ENTERなら、52になります。 ーー 一般的に参考サイト http://www.clayhouse.jp/array/array01_b.htm == 結局、自分がしたい(セルへの)データ入力でなく、結果が出せそうな関数があれば見つけて、それにあった(引数で指定する)セルデータを作らないと、エクセル関数では、利用できないという(当たり前の)ことですが、が結論でしょう。 特にエクセル関数は個別セルに個々にデータが入っていることが前提の関数が圧倒的に多いということです。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

=SUMPRODUCT({1,2,3}*{10,20,30}) → 140 上記の数式で{1,2,3}がA1:C1であり、{10,20,30}がA2:C2であるとき次の数式になります。 =SUMPRODUCT(A1:C1*A2:C2) 他の方法としては次のような数式も等価になります。 =SUM(INDEX(A1:C1*A2:C2,0,0))

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

「1×10+2×20+3×30」を一気に計算させる、こういう計算のことでしょうか。 Excel豆知識29-3:エクセル:SUMPRODUCT関数 http://www11.plala.or.jp/koma_Excel/contents3/mame3029/mame302903.html SUMPRODUCT関数 | 配列の対応する要素間の積を計算し、その合計を返します。 | エクセルスキル向上事典 http://excel.jiten.org/function/sumproduct/

mihimarumaru
質問者

補足

早々のご回答ありがとうございます。 ひとつのセルにひとつの単価や数量を入れていくのではなく、ひとつのセルに「単価1,単価2,単価3」「数量1,数量2,数量3」というように、いくつかの要素を詰め込んで、それを配列として要素ごとに計算し合計できないかと考えています。

関連するQ&A