Excel 値の存在する行のみ抽出する数式
フィルタやマクロを使わずに数式のみで有効行のみ抽出する数式を紹介します。
2022年9月にMicrosoft365(Office365)のExcelに追加された新関数を使うので
古いバージョンのExcelでは使用できません。
目次
数式
LET、HSTACK、BYROW、LAMBDA、MAP、DROP、FILTER、CHOOSECOLS、COUNTAを利用します。
赤字のセル範囲は任意で有効行のみしたいセル範囲を指定します。
=LET(範囲,A:C,
中間範囲,HSTACK(BYROW(範囲,LAMBDA(行,COUNTA(行))),範囲),
MAP(DROP(FILTER(中間範囲,CHOOSECOLS(中間範囲,1)>0),,1),LAMBDA(セル,IF(セル="","",セル)
)))
値のない行は数式の結果(スピル)から除外されます。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2022/09/image-119.png)
数式をそのまま利用しても構いませんが、
名前の管理で数式を登録すると利用しやすくなります。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2022/09/image-120.png)
「新規作成」をクリックします、
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2022/09/image-121.png)
名前に任意の関数名、参照範囲に次の数式を指定します。
=LAMBDA(指定範囲,LET(中間範囲,HSTACK(BYROW(指定範囲,LAMBDA(行,COUNTA(行))),指定範囲),MAP(DROP(FILTER(中間範囲,CHOOSECOLS(中間範囲,1)>0),,1),LAMBDA(セル,IF(セル="","",セル)))))
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2022/09/image-122.png)
指定の関数名で利用することが可能になります。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2022/09/image-123.png)