• ベストアンサー

Excel 配列について

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

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

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

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

その他の回答 (5)

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

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

  • msMike
  • ベストアンサー率20% (363/1775)
回答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/17068)
回答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/8248)
回答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

  • Frequency関数データ配列の範囲

    ExcelのFrequency関数を使って度数分布を作ろうとしています。 {=FREQUENCY(データ配列,区間配列)}のデータ配列のところに、 離れた場所にあるセルを同時に指定することはできないでしょうか? 例えば、B1:B15とD1:D15を同時に同じデータ配列に組み込むことは出来ないのでしょうか? バージョンはExcel2000です。よろしくお願いします。

  • エクセルの配列数式、配列定数について教えてください

    エクセルに配列数式、配列定数というものがあることを最近知りました。 エクセルのA1セルに={1,3,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力すると、 A2セルに1と表示されます。A2には1以外の数字が含まれることは何となく理解できるのですが、どのような計算結果が算出されるのかが理解できません。また、A2の1以外の計算結果を表示させる方法がわかりません。 同様に、A1セルに={1,2,2,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力した場合(これもA2セルに1と表示されます)のA2の計算結果と表示方法がわかりません。 ご教示をよろしくお願いいたします。

  • 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}と書いてみたところエラーを吐かれてしまいました。 配列の要素にセル番号を持ってくることはできないのでしょうか? 改善方法がありましたらお教えください。 また、上記の計算が行える他の記述方法等あれば教えていただけると助かります。 よろしくお願いします。

  • Excelで使われる「配列計算」について

    こんばんは。 Excelの配列計算について、1から勉強していました。 すると、非常にわかりやすい説明↓ http://home.att.ne.jp/zeta/gen/excel/c01p09.htm を見つけ、読み進めていたのですが…とある箇所で「えっ?」と、わからなくなってしまいました(>_<) リンク先の解説を読み進めていくと、 ・ ・ 人数を求める場合、 {=SUM(((B2:B6="男")+(C2:C6="東京")<>0)*1)} ・ ・ ・ 人数を求める場合は工夫が必要です。 男性かつ東京在住の場合、TRUE+TRUEで2を返してしまうので、人数が二人とカウントされてしまいます。 そこで、<>0(0以外)の条件をつけ再度、TRUE・FALSEの判定をしています。 ・ ・ ・ とありますが、なぜ「<>0」をつけると、計算がうまくいくのでしょうか? 敢えて「<>0」を取り除き、 {=SUM(((B2:B6="男")+(C2:C6="東京"))*1)} のように計算してみると、求めたい人数は「男、または東京に住んでいる人」なのに、「男かつ東京在住」の人を、二重カウントしてしまって、結果が「6」と出てしまいます。(正しくは「4」ですが・・・) 「<>0(0以外)」とは、なぜ必要で、どういう意味を持っているのでしょうか?

  • Excel VBA 配列について

    Excel VBA 配列について質問させてください。 画像のようなコードですと、ケース1では問題なく動くのですが、 ケース2になると「インデックスが有効範囲にありません」 ケース3になると「型が一致しません」 となります。 セル範囲を配列に入れ、取り出す方法(ケース2) カンマ区切りの数字を配列に入れ、取り出す方法(ケース3) を教えてください。 よろしくお願いします。

  • エクセルにおいての配列関数について

    エクセル の配列関数のSUMPRODUCT使用して このような式を書いた場合 SUMPRODUCT((条件1)*(条件2)*・・・(条件n)*(集計範囲)) =SUMPRODUCT((A1:A30=50)*(B1:B30=750)*(C1:C30=6600)*(D1:D30=210)*F1:F30) 集計範囲の行 いわゆるFの行の数字の中の一つのセルに 「3」などのカッコを使用した ものをいれると "#VALUE!" と表示され正しい答えが出ないのですが 解決方法を教えてください。 よろしくお願いします。

  • 配列要素の演算

    初歩的な質問ですみません。Ruby初心者です。 Rubyの配列を使って以下のようなことをしたいのですが可能でしょうか? a = [2, 4, 6] b = 2 c = a / b # => [1, 2, 3] 配列aの全要素を定数bで割ろうとしています。 NArrayを使えば可能なようですが、 Ruby標準の配列でこのようなことはできますか? 可能でしたらその方法をご教授ください。

    • ベストアンサー
    • Ruby
  • エクセル配列数式について

    A列(A3:A42)に氏名 B列(B3:B42)に性別 C列(C3:C42)に第1回テスト成績 D列(D3:D42)に第2回テスト成績 が入力してあります。 性別が"男" かつ 第1回テスト成績が350以上 かつ 第2回テスト成績が350以上 の条件を満たす配列数式を {=COUNT(IF((B3:B42="男")*(C3:C42>=350)*(D3:D42>=350),B3:B42,""))} だと正しい回答がでません IFの真の場合の欄をC3:C42またはD3:D42にすると正しい値がでます なぜC3:C42だとだめなのでしょうか?

  • 配列をリサイズする

    配列をリサイズする こんにちは。 エクセル2003で配列をリサイズすることはできますでしょうか。一個一個、新たに配列に入れなおすと大変なので、もしあれば教えて下さい。 たとえば 、 a(1,1)=1 a(2,1)=2 a(3,1)=3 a(4,1)=4 となっているところで、 b(1,1)=a(2,1) b(1,2)=a(3,1) と一度にしたいのです。 よろしくお願いします。 -- エクセル2003

  • エクセルについて

    エクセルについてご質問いたします。 B3 10000 D3 155 F3 S と入力してH3に10000-155-S と表示したいのですが、 =B3&"-"&D3&"-"&F3 であってますか? 入力すると、 =B3&"-"&D3&"-"&F3 とそのまま表示されます。 エクセルの設定がおかしいのでしょうか?

専門家に質問してみよう