hakeの日記

Windows環境でプログラミングの勉強をしています。

Excel - 配列数式

配列数式というのを知ったのでメモ。
対象の範囲の演算結果を内部的に配列に格納して計算を行う? で良いのかな?
下記はA1:A10の範囲の値のうち偶数をB列に表示する例。


B1からB5には以下の式が入力されている。Ctrl+Shift+Enterで入力し、式の両側に{ }が追加される。

{=SMALL(IF(MOD(A$1:A$10,2)=0,A$1:A$10),ROW(A1))}              両端の{ }は自動で追加される。
  …
{=SMALL(IF(MOD(A$1:A$10,2)=0,A$1:A$10),ROW(A5))}

式の解釈(セルB1の場合)

     IF(MOD(A$1:A$10,2)=0,A$1:A$10)  =>  内部配列{2, 4, 6 ,8, 10}

     SMALL( 内部配列, ROW(A1) )      =>  SMALL({2, 4, 6, 8, 10}, 1} => 2 
  1. A1〜A10の各セルの値について、2で割り切れる(=偶数)値であれば、その値を内部配列に格納する。
  2. 内部配列に格納した値のうち小さい方からROW(An)番目(=n番目)の要素をセル(=Bn)の値とする。