• ベストアンサー

配列数式って何ですか??

きのうは、ある列において偶数行だけの合計を求めたいときの計算式を教えてもらいました。 数式は以下のようになるそうです。 {=SUM(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))} (ありがとうございました。) しかし、そこで出てきた「配列数式」というものが何なのか分かりません。上では{}でくくられた部分だという事はわかるのですが、どうして一番初めと終わりに{}があるのか、たとえば比較として、上において{}がない数式ではどのような計算がされてしまうのでしょうか。 また、{}の位置がSUMの後にあるとき、 =SUM{(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))} なんかはどんな計算をしていることになるのでしょうか。 配列数式の計算手順がイメージできないのです。 どなたか教えて下さい。

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

  • ベストアンサー
  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

こんばんは。 配列数式とは、いくつかの要素を持つ式を一つにまとめ、それらの要素一つ一つについて計算をして結果を出す、という機能です。ご存じかと思いますが、式を入力した後、確定するときにSHIFT+CTRL+ENTERとキーを押下します。 従って、手動で{}を入力しても配列数式としては機能しませんから、例示の式はエラーになります。 >{=SUM(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))} は、 if(mod(row(a1),2)=0,a1,"") if(mod(row(a2),2)=0,a2,"") if(mod(row(a3),2)=0,a3,"") if(mod(row(a4),2)=0,a4,"") if(mod(row(a5),2)=0,a5,"") if(mod(row(a6),2)=0,a6,"") if(mod(row(a7),2)=0,a7,"") if(mod(row(a8),2)=0,a8,"") if(mod(row(a9),2)=0,a9,"") if(mod(row(a10),2)=0,a10,"") という式をまとめて記述したもので、これら全ての式の合計という意味です。 ちなみに、配列数式にせずに=SUM(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))を入力するとエラーになります。

meikotk
質問者

お礼

とても分かりやすかったです。ありがとうございました。 質問してよかったです。

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

#2のものです。再度で済みません。#2の中で言った配列A(1),A(2),・・・は一般には、計算が終われば消えます。 ただ行と列を入れ替えるTranspose関数は、配列A(1),A(2),・・・の内容をセルに出せます。こういうタイプもあります。他にもこのタイプは行列関係で存在するが、ご参考までに。 Sumのように加算結果1つが欲しいものと、複数セル値を配列で個々に返さなければならないものとあるわけです。 ------- A1:C3にデータが 人口 計数 東京 12 2 大阪 8 3 E1:G3を範囲指定する。カーソルはE1にあるから、 E1に式=TRANSPOSE(A1:C3)といれてshift+CTRLキーを押しながらENTERキーを押す。すると E1:G3に 0 東京 大阪 人口 12 8 計数 2 3 となります。本日他の質問で、「行と列を入れ替えるには」の 質問で、「形式を選択して貼り付け」操作の回答しか出ていなかったが、この関数式でも出来ます。

meikotk
質問者

お礼

わざわざちがった関数まで紹介して下さいましてありがとうございました。こうやっていろいろ私も勉強できます。感謝しております。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

配列数式{・・(if(B1:B10="仕入",C1:C10,""))・}があるとする。(「・・」の部分の意味は後述。) 配列はプログラムではA(1),A(2),A(3),A(4),A(5), A(6),A(7),A(8),A(9),A(10)と表されますね。 上記配列数式は IF(B1="仕入",C1,"") --->結果--->A(1) IF(B1="仕入",C1,"") --->結果--->A(2) IF(B1="仕入",C1,"") --->結果--->A(3) ・・・・・ IF(B1="仕入",C1,"") --->結果--->A(9) IF(B1="仕入",C1,"") --->結果--->A(10) の10式を示すと考える。ただA(1),A(2)・・・は表上では 見えない。そして 「・・(if(」の「・・」の部分にSumがあると配列数式は Sum(A(1)+A(2)+・・・+A(9)+A(10))の意味になるので、 B1:B10のセルで、Bxセル値が"仕入"なら、Cx列の値を配列A(x)にセットしろとなる。(xは1~10のどれかの値を取る) そのA(1)~A(10)に対しSumをせよ等とかとなる。 結局10個の式をセルに設定しなくても、一箇所のセルの 配列数式で10個の和が求まる。 http://pc21.nikkeibp.co.jp/pc21/pc_10/hr11.htm

meikotk
質問者

お礼

ご丁寧にありがとうございました。だんだん配列数式というものが見えてきました。

すると、全ての回答が全文表示されます。

専門家に質問してみよう