更新日:、 作成日:

エクセル BYROW 関数:セルの範囲をループして行単位に計算した配列を作成する

はじめに

エクセルの BYROW 関数の使い方を紹介します。

BYROW 関数はセルの範囲をループして行単位に計算した配列を作成します。LAMBDA 関数を使用して計算します。

=BYROW(A1:C3,LAMBDA(row,MAX(row))) のようにして、行単位の最大値を取得できます。

列単位にループするには「BYCOL 関数」をご覧ください。
ループする方法は「セルや文字列をループする」をご覧ください。
この関数は 365 で使用できます。

BYROW 関数の引数

BYROW(範囲, LAMBDA)
範囲の各行をLAMBDAで処理した配列を作成します。

引数「範囲」セルの範囲や配列を指定します。
引数「LAMBDA」LAMBDA 関数を指定します。LAMBDA 関数の第 1 引数に引数「範囲」の各行が順番に渡されます。それを計算した結果を配列にします。

LAMBDA 関数

LAMBDA 関数」の引数は次のようになっています。

LAMBDA(行,計算)

引数「行」に BYROW 関数の引数「範囲」が 1 行ずつ順番に渡されます。

引数「計算」の結果が BYROW 関数が返す配列の要素になります。

使い方

BYROW 関数の使い方を紹介します。

結果は配列になり複数のセルに表示されます。これはスピルという機能によるものです。詳しくは「スピル、動的配列数式の使い方」をご覧ください。

行単位の最大値を取得する

セルの範囲「B4」~「C6」の行単位の最大値を取得します。「MAX 関数」を使用して最大値を取得できます。

=BYROW(B4:C6,LAMBDA(row,MAX(row)))

引数「LAMBDA」の第 1 引数に「B4:C6」の行を順番に渡します。引数「LAMBDA」の結果が配列の要素になります。引数「LAMBDA」は次のように処理されます。

MAX(B4:C4)
MAX(B5:C5)
MAX(B6:C6)
2

行単位の合計を求める

セルの範囲「B4」~「C6」の行単位の合計を求めます。「SUM 関数」を使用して合計を取得できます。

=BYROW(B4:C6,LAMBDA(row,SUM(row)))

引数「LAMBDA」は次のように処理されます。

SUM(B4:C4)
SUM(B5:C5)
SUM(B6:C6)
1

高度な使い方

BYROW 関数と他の関数を組み合わせた使い方などを紹介します。

列同士を掛け算する

行単位に 金額 * 個数 を計算します。「INDEX 関数」に列番号を指定して、行から列の値を取得できます。

=BYROW(B4:C6,
LAMBDA(row,
INDEX(row,1)*INDEX(row,2)))
4

MAP 関数」を使用しても列の値を取得できます。列の値を取得するには、こちらの方がわかりやすくなります。

=MAP(B4:B6,C4:C6,LAMBDA(b,c,b*c))

解説

セルの範囲の各行を引数「LAMBDA」で計算した配列を作成します。引数「範囲」が 3 行 3 列のときは 3 行 1 列の配列を返します。

引数「LAMBDA」の第 1 引数に引数「範囲」を行単位に順番に渡します。

引数「LAMBDA」で計算した結果がセルの範囲や配列のときはエラー #CALC! になります。単一の値を返す必要があります。

引数「LAMBDA」の引数の数が 1 つでないときはエラー #VALUE! になります。

引数「LAMBDA」が「LAMBDA 関数」でないときはエラー #VALUE! になります。