• ベストアンサー

配列数式について教えてください

ここでエクセルでの文字列の検索方法をさがしていたらさきほど、ちょうど良くこのような配列数式をみつけました。 =IF(A1="","",MIN(IF(ISNA(MATCH("*"&$H$1:$H$9,A1,0)),10,$I$1:$I$9))) A1セルに、H1からH9の表にあるどれかの文字列を含んだ文字列をいれると対応するI1からI9の表の値を表示するものです。 使われているMINやISNAやMATCH関数はわかるつもりですが、組み合わせるとなんでこんなことができるのか、ぜんぜんわかりません。どなたか解説していただけないでしょうか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=653775

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

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

#2の追加です。 配列数式の「式」の方の解説を読まれる時の一助として。 A1:B7にデータ a 1 b 2 c 3 d 4 a 6 d 6 c 7 を入れて、A1:A7と同じセル数のD1:D7を範囲指定して(ここの点が通常は解説されていないので、仕組みが良く判らない理由の1つと思う。配列数式の結果は1セルに出すので 、演算結果が欲しいのだから、1セルだけ指定で良いのですが、理解のために周り道をしてみてください。) =IF($A$1:$A$7="a",$B$1:$B$7)と入れてS+C+Eを押してください(Shift+Ctrl+Enterを同時に押す)。するとD1:D7に 1 FALSE FALSE FALSE 6 FALSE FALSE となります。 これはD1に=IF(A1="a",B1,FALSE)といれ、D2:D7に複写 した結果と同じです。 =IF(A1="a",B1,FALSE) =IF(A2="a",B2,FALSE) =IF(A3="a",B3,FALSE) =IF(A4="a",B4,FALSE) =IF(A5="a",B5,FALSE) =IF(A6="a",B6,FALSE) =IF(A7="a",B7,FALSE)   です。 その後に、これら7セルに対してsum,max,min,average等を考えるのは、普通の関数と同じだから、理解しやすいと思います。 IF(・・)を外から =SUM(IF(・・))  =MAX(IF(・・)) =MIN(IF(・・)) =AVERAGE(IF(・・)) =COUNT(IF(・・)) などを入れS+C+Eを押す。 すると SUM-->1+6=7 MIN-->1,7の最小1 MAX-->1,7の最大7 AVERAGE-->1,7の平均(1+7)/2=3.5 COUNT-->1,2の2個 となります。    

max_min
質問者

お礼

本当にありがとう御座いました!

その他の回答 (2)

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

エクセルで数を行列的に扱う基礎論を説明します。 その応用として、各セルに対する関数当て嵌めを考える 応用があります。質問は後者でしょうがまず前者のご理解を。 配列数式の作り方 (1)1度のエンタで複数セルに一度に数をセットする方法。 (2)1つずつセルに入力しエンタキーや→や↓キーで複数セルに(但し近接した1列や長方形、正方形型の範囲のデータに限る。)に入力してデータを作る。 (1)でも(2)でも、入力してしまえば、それらの範囲は 配列数式として扱える。また演算の結果で値が出ているセルも 配列数式に含められる。 (1)は珍しいでしょうから、説明します。 A1:A5を範囲指定して、={1;2;3;4;5}でS+C+E (ShiftとCtrlを押しながらENTERキーを押す)。--->縦に1,2,3,4、5が入る。 A1:E1を範囲指定して={1,2,3,4,5}でS+C+E --->横に1,2,3,4,5が入る。 A1:C3を範囲指定して={1,2,3;4,5,6;7,8,9}でS+C+E これで 123 456 789 と入る。 ------(本題) (1)普通は演算は=A1+B1や=A1*B1や=A1/B1のように1セル対1セルの演算を使ってきた。 (2)配列数式はこのA1のところが:が入って複数セル範囲の指定になります。 <加算> (3)=A1:A3+B1は=A1+B1,=A2+B1,=A3+B1のセルの集合になります。 数学の行列では(3,4,5)+(3)はエラーですが エクセルでは同じ数を、補ってくれて、(3,4,5)+(3,3,3)と同じにしてくれます。 (4)=A1:A3+B1:B2は、A3に対する不足分はB1やB2にするわけにもいかず、エラーになります。 =A1:A3+B1:B3は=A1+B1、=A2+B2、=A3+B3の3セルに集まりになります。 (5)(注意)答えを出すセルとして、行列とも、次元数だけのセルを範囲指定してから演算式をいれること。 (6)演算式の入れ方 (A)答えの入るセルを範囲指定して黒く反転させる。 (B)=を入れる (C)範囲指定(被加数範囲) (D)+(演算子)を入れる (E)範囲指定(加数範囲) (F)S+C+E <減算>行列の減算と同じで加算と同じく、対応する行列の 引き算 <乗算> 行列の掛け算と違い対応する行の積のセルの集合です。 A1     B1      =A1*B1 A2  X  B2  --> =A2*B2 A3     B3      =A3*B3 <除算> 乗算と同じく=A1/B1、=A2/B2、=A3/B3 のセルの集まりです。 A1     B1      =A1/B1 A2  /  B2  --> =A2/B2 A3     B3      =A3/B3 のセルの集まりです。 これらのセルの「集まり」に対し、=SUM、=MIN、=MAX, =AVERAGEがどういう意味(数)になるかは判りますね。セル集合全部を対象に考える関数群は判りやすい。         

max_min
質問者

お礼

わかりやすくありがとうございました。

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.1
参考URL:
http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm
max_min
質問者

お礼

ありがとうございました。

関連するQ&A