FILTER関数を活用することで表から指定した条件を満たすデータのみを抽出することができます。また、該当するデータが1件も存在しなかった場合には、予め指定した値を表示することができます。
=FILTER(B:D,B:B=F3,"なし")
今回は、該当するデータが1件も存在しなかった場合に表示する値を、以下のような好みのデータにする方法について3通りで解説していきます。
方法1
1つ目は、HSTACK関数を活用する方法です。
HSTACK関数では、指定した範囲を横方向に結合することができます。
この関数の使い方は、以下になります。
=HSTACK(配列1, [配列2, 配列3, …])
// 配列:対象の範囲(配列2以降は省略可能)
こちらの関数を活用して、好みのデータを作成します。
例えば、『日付の項目に「検索した日付(セルF3)」、商品の項目に「-」、金額の項目に「0」』を表示させる場合、以下のような数式になります。
=HSTACK(F3,"-",0)
この内容をFILTER関数の[空の場合]に指定することで、好みのデータを表示することができます。
=FILTER(B:D,B:B=F3,HSTACK(F3,"-",0))
ただ、HSTACK関数は現状(2024/8時点)365のみにしか対応していません。
FILTER関数は2021から使うことができますが、HSTACK関数を使うことができないため、他の方法についても解説していきます。
方法2
2つ目は、関数を使わずに好みのデータを表示する方法です。
この方法では、他のセルの値を参照して表示することはできませんが、固定のデータの場合は便利な方法になります。
固定のデータを、関数を使わずに表示する場合は、「{}」を活用します。
「{}」の中に必要な項目数分の値を「,」区切りで指定することによって複数列のデータを表現することができます。
例えば、『日付の項目に「-」、商品の項目に「-」、金額の項目に「0」』を表示させる場合、以下のような数式になります。
={"-","-",0}
この内容をFILTER関数の[空の場合]に指定することで、好みのデータを表示することができます。
=FILTER(B:D,B:B=F3,{"-","-",0})
方法3
3つ目は、CHOOSE関数を活用する方法です。
CHOOSE関数では、指定した複数の値の中から指定した番号の位置の値を表示することができます。
この関数の使い方は、以下になります。
=CHOOSE(インデックス, 値1, [値2, 値3, 値4, …])
// インデックス:表示する番号
// 値n:インデックスがnの場合に表示する値(値2以降は省略可能)
活用例は以下になります。
=CHOOSE(2,B2,C2,D2)
実は、この関数のインデックスに、方法2で解説した「{}」を活用して複数の番号を指定することで複数の列に該当する値を表示することができます。
例えば、『日付の項目に「検索した日付(セルF3)」、商品の項目に「-」、金額の項目に「0」』を表示させる場合、以下のような数式になります。
=CHOOSE({1,2,3},F3,"-",0)
// {1,2,3}:1番目、2番目、3番目の順番で列方向へ表示する
この内容をFILTER関数の[空の場合]に指定することで、好みのデータを表示することができます。
=FILTER(B:D,B:B=F3,CHOOSE({1,2,3},F3,"-",0))
まとめ
Excelが2021の場合は、方法2や方法3に関しても覚えておくと良いかと思います。
また、固定のデータを表示する場合は、方法2を活用することで数式を短く表現することができるため、HSTACK関数が対応していたとしても方法2を活用するのが良いかと思います。