スピル機能を利用して、各行、各列に同じ数式を適用する - BYROW、BYCOL、LAMBDA関数の利用 - Excel
スピル機能を利用して、各行、各列に同じ数式を適用する手順を紹介します。
概要
下図の表がある場合を考えます。
品名 | 4月 | 5月 | 6月 |
ぺんぎんクッキー | 36 | 38 | 42 |
らくだキャラメル | 18 | 25 | 12 |
あざらしアイス | 9 | 16 | 6 |
かもしかキャンディ | 24 | 28 | 19 |
かわうそカステラ | 6 | 5 | 9 |
F列に合計の値を計算する場合、従来は、F4セルに次の数式を入力します。
=SUM(C4:E4)
数式を確定すると、C,D,E列の合計値がF4セルに表示されます。
F4セルをコピーして、5Fセルから8Fセルにペーストすることで各行の合計値を求められます。
上記の方法で各行の合計値を求められますが、数式を変更したい場合は、F列のセルの内容を削除して、作業をはじめからやり直す必要があります。
また、可能性は低いですが、ペーストのミスで数式が異なる行が出る可能性があります。
新しいExcelでは、スピルの機能を利用して、1つの数式で各行の処理をさせる方法があります。
この記事では、BYROW、BYCOL、LAMBDA関数、スピル機能を利用して、各行、各列に同じ数式を適用する方法を紹介します。
手順:各行に同じ数式を適用する
書式
次の書式を利用します。
BYROW([データの範囲], LAMBDA([パラメーター名], [適用する数式]) )
処理の解説
BYROW関数の1番目のパラメーターのデータの範囲のそれぞれの列の値をLAMBDA関数の最初のパラメーターに渡します。
渡されたパラメーターをどのように処理するかを
[適用する数式]
に記述します。
BYROW関数は行方向スピルするため、記述した行の次の行には、データの次の行の値をLAMBDA関数に渡した結果を表示します。
実施例
先の表で、F4セルに次の数式を入力します。
C4:E8
セルの範囲でF4セルには4行目の値の合計値を表示し、以降の行ではセルの範囲の以降の行の合計値を表示します。
=BYROW(C4:E8,LAMBDA(array,SUM(array)))
数式を確定します。F4セルにのみ数式を入力しましたが、各行のF列にそれぞれの行の合計値が表示されます。
手順:各列に同じ数式を適用する
書式
次の書式を利用します。
BYCOL([データの範囲], LAMBDA([パラメーター名], [適用する数式]) )
処理の解説
BYCOL関数の1番目のパラメーターのデータの範囲のそれぞれの行の値をLAMBDA関数の最初のパラメーターに渡します。
渡されたパラメーターをどのように処理するかを
[適用する数式]
に記述します。
BYCOL関数は列方向にスピルするため、記述した列の次の列には、データの次の列の値をLAMBDA関数に渡した結果を表示します。
実施例
下図の表を作成します。
C9セルに次の数式を入力します。
C4:E8
セルの範囲でC9セルにはC列の値の合計値を表示し、以降の列ではセルの範囲の以降の列の合計値を表示します。
=BYCOL(C4:E8,LAMBDA(array,SUM(array)))
数式を確定します。C9セルにのみ数式を入力しましたが、各列の9行目にそれぞれの列の合計値が表示されます。
BYROW,BYCOL 関数を利用して、各行、各列に同じ数式を適用できました。
著者
iPentecの企画・分析担当。口が悪いのでなるべく寡黙でありたいと思っている。が、ついついしゃべってしまい、毎回墓穴を掘っている。