更新日:、 作成日:
エクセル BYCOL 関数:セルの範囲をループして列単位に計算した配列を作成する
はじめに
エクセルの BYCOL 関数の使い方を紹介します。
BYCOL 関数はセルの範囲をループして列単位に計算した配列を作成します。LAMBDA 関数を使用して計算します。
=BYCOL(A1:C3,LAMBDA(col,MAX(col))) のようにして、列単位の最大値を取得できます。
BYCOL 関数の引数
BYCOL(範囲, LAMBDA)
範囲の各列をLAMBDAで処理した配列を作成します。
引数「範囲」 | セルの範囲や配列を指定します。 |
引数「LAMBDA」 | LAMBDA 関数を指定します。LAMBDA 関数の第 1 引数に引数「範囲」の各列が順番に渡されます。それを計算した結果を配列にします。 |
LAMBDA 関数
「LAMBDA 関数」の引数は次のようになっています。
引数「列」に BYCOL 関数の引数「範囲」が 1 列ずつ順番に渡されます。
引数「計算」の結果が BYCOL 関数が返す配列の要素になります。
使い方
BYCOL 関数の使い方を紹介します。
列単位の最大値を取得する
セルの範囲「C2」~「E3」の列単位の最大値を取得します。「MAX 関数」を使用して最大値を取得できます。
引数「LAMBDA」の第 1 引数に「C2:E3」の列を順番に渡します。引数「LAMBDA」の結果が配列の要素になります。引数「LAMBDA」は次のように処理されます。
MAX(D2:D3)
MAX(E2:E3)
列単位の合計を求める
セルの範囲「C2」~「E3」の列単位の合計を求めます。「SUM 関数」を使用して合計を取得できます。
引数「LAMBDA」は次のように処理されます。
SUM(D2:D3)
SUM(E2:E3)
スポンサーリンク
高度な使い方
BYCOL 関数と他の関数を組み合わせた使い方などを紹介します。
行同士を掛け算する
列単位に 金額 * 個数 を計算します。「INDEX 関数」に行番号を指定して、列から行の値を取得できます。
LAMBDA(col,
INDEX(col,1)*INDEX(col,2)))
「MAP 関数」を使用しても行の値を取得できます。行の値を取得するには、こちらの方がわかりやすくなります。
解説
セルの範囲の各列を引数「LAMBDA」で計算した配列を作成します。引数「範囲」が 3 行 3 列のときは 1 行 3 列の配列を返します。
引数「LAMBDA」の第 1 引数に引数「範囲」を列単位に順番に渡します。
引数「LAMBDA」で計算した結果がセルの範囲や配列のときはエラー #CALC! になります。単一の値を返す必要があります。
引数「LAMBDA」の引数の数が 1 つでないときはエラー #VALUE! になります。
引数「LAMBDA」が「LAMBDA 関数」でないときはエラー #VALUE! になります。