dポイントプレゼントキャンペーン実施中!

きのうは、ある列において偶数行だけの合計を求めたいときの計算式を教えてもらいました。
数式は以下のようになるそうです。

{=SUM(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))}

(ありがとうございました。)
しかし、そこで出てきた「配列数式」というものが何なのか分かりません。上では{}でくくられた部分だという事はわかるのですが、どうして一番初めと終わりに{}があるのか、たとえば比較として、上において{}がない数式ではどのような計算がされてしまうのでしょうか。

また、{}の位置がSUMの後にあるとき、

=SUM{(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))}

なんかはどんな計算をしていることになるのでしょうか。
配列数式の計算手順がイメージできないのです。
どなたか教えて下さい。

A 回答 (3件)

こんばんは。



配列数式とは、いくつかの要素を持つ式を一つにまとめ、それらの要素一つ一つについて計算をして結果を出す、という機能です。ご存じかと思いますが、式を入力した後、確定するときに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,""))を入力するとエラーになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/17 22:56

#2のものです。

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

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

お礼日時:2002/10/17 22:52

配列数式{・・(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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/17 22:54

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