BYROW関数 / BYCOL関数 ● LAMBDA関数に配列の各行/各列を渡して計算する

[Microsoft 365]

Excelの BYROW(バイ・ロウ)関数BYCOL(バイ・カラム)関数の使い方を紹介します。

Microsoft 365の新関数であるBYROW関数とBYCOL関数は、LAMBDA関数のヘルパー関数です。LAMBDA関数に配列の各行や各列を渡して計算し、その戻り値からなる配列を返します。

スポンサーリンク

書式

LAMBDA関数に配列の各行を渡して計算する
=BYROW(配列, LAMBDA関数)

配列]の行を1行ずつ[LAMBDA関数]に渡して計算し、その戻り値からなる配列を返します。返される配列のサイズは、[配列]の行数×1列です。

LAMBDA関数に配列の各列を渡して計算する
=BYCOL(配列, LAMBDA関数)

配列]の列を1列ずつ[LAMBDA関数]に渡して計算し、その戻り値からなる配列を返します。返される配列のサイズは、1行×[配列]の列数です。

引数

引数 説明
配列 配列やセル範囲を指定する。
LAMBDA関数 戻り値の計算方法を指定するためのLAMBDA関数を指定する。

LAMBDA関数の書式は以下のとおりです。LAMBDA関数では引数[変数]を最大253個指定できますが、BYROW関数やBYCOL関数と一緒に使用するときは1つだけ指定します。

=LAMBDA([変数1, 変数2…], 計算式)

LAMBDA関数の使い方は「LAMBDA関数 ● オリジナルの関数を定義する」を参照してください。

以下の「使用例1」「使用例2」では、合計計算を例にBYROW関数やBYCOL関数の使い方を紹介します。実際にはこのような単純な計算にこれらの関数を使うことはないと思いますが、関数の使い方の例として参考にしてください。

使用例1…BYROW関数で各行の合計を求める

以下の図1のシートでBYROW関数を使用して、セルB3~E5の各行の合計を求めてみましょう。

BYROW関数の引数[配列]にセルB3~E5を指定し、引数[LAMBDA関数]に「LAMBDA(x,SUM(x))」を指定します。すると、セルB3~E5の各行が1行ずつ「x」に渡され、その合計が計算されます。セルB3~E5は3行の配列なので、LAMBDA関数の計算が3回行われ、3行1列の配列が返されます。

  1. 「x」にセルB3~E3が渡される → 「=SUM(B3:E3)」が計算される → 20
  2. 「x」にセルB4~E4が渡される → 「=SUM(B4:E4)」が計算される → 33
  3. 「x」にセルB5~E5が渡される → 「=SUM(B5:E5)」が計算される → 42

実際にセルにBYROW関数を入力するときは、単一のセル(ここではセルG3)を選択して入力します。[Enter]キーを押して数式を確定すると、戻り値の配列のサイズ(ここでは3行1列)の範囲に数式がスピル(隣接するセルに数式が自動拡張すること)し、結果が表示されます。

=BYROW(配列, LAMBDA関数)

セルG3 | =BYROW(B3:E5,LAMBDA(x,SUM(x)))

図1 セルG3を選択してBYROW関数を入力する。[Enter]キーを押すと数式がスピルし、セルG3~G5の範囲にBYROW関数の結果(各行の合計)が表示される。

BYROW関数を修正したいときは、入力時と同様に単一のセルG3を選択して数式を修正し、[Enter]キーで確定してください。

使用例2…BYCOL関数で各列の合計を求める

図1の数式の「BYROW」を「BYCOL」に変えると、セルB3~E5の各列が1列ずつ「x」に渡され、各列の合計が計算されます。セルB3~E5は4列の配列なので、LAMBDA関数の計算が4回行われ、1行4列の配列が返されます。

  1. 「x」にセルB3~B5が渡される → 「=SUM(B3:B5)」が計算される → 24
  2. 「x」にセルC3~C5が渡される → 「=SUM(C3:C5)」が計算される → 25
  3. 「x」にセルD3~D5が渡される → 「=SUM(D3:D5)」が計算される → 21
  4. 「x」にセルE3~E5が渡される → 「=SUM(E3:E5)」が計算される → 25

入力するときは、単一のセル(ここではセルB7)を選択して入力します。[Enter]キーを押して数式を確定すると、戻り値の配列のサイズ(ここでは1行4列)の範囲に数式がスピル(隣接するセルに数式が自動拡張すること)し、結果が表示されます。

=BYCOL(配列, LAMBDA関数)

セルB7 | =BYCOL(B3:E5,LAMBDA(x,SUM(x)))

図2 セルB7を選択してBYCOL関数を入力する。[Enter]キーを押すと数式がスピルし、セルB7~E7の範囲にBYCOL関数の結果(各列の合計)が表示される。

BYCOL関数の修正も、入力先のセルB7を単独で選択して修正してください。

メモ

セルを1つずつ渡したいときは
LAMBDA関数に配列の要素を1つずつ渡して計算したいときは、MAP関数を使用します。使い方は「MAP関数 ● LAMBDA関数に配列の各要素を渡して計算する」を参照してください。
スポンサーリンク

関連記事