
ExcelやGoogleスプレッドシートでUNIQUE関数を使うと、空白のセルが「0」と表示されたり、そのまま空白として抽出されてしまったりすることがあります。この記事では、これらの空白セルを除外し、一意のデータだけを抽出する方法をご紹介します。抽出範囲が複数ある場合も解説しているので、ぜひ参考にしてみてください。
空白を除外する

UNIQUE関数の結果から空白を除外したい場合、FILTER関数を使って「空白ではない(<>"")」という条件でフィルタ処理を行い、その結果をUNIQUE関数に渡します。
たとえば、A列から空白以外の一意の商品名を抽出したい場合、数式は次のようになります。
例:=UNIQUE(FILTER(A2:A10,A2:A10<>""))
FILTER関数の引数:(範囲, 条件1, [条件2, …])
複数列の空白を除外する
隣接する複数列から抽出する場合

複数列のデータから空白を除外したい場合は、TOCOL関数を組み合わせ、引数2の[無視]に「空白を無視する」ことを表す1を指定します。
たとえば、A列とB列の範囲から空白以外の一意の商品名を抽出したい場合、数式は次のようになります。
例:=UNIQUE(TOCOL(A2:B5,1))
TOCOL関数の引数:(配列または範囲, [無視], [列でスキャン])
離れた複数列から抽出する場合
Excelの場合

離れた複数列のデータから空白を除外したい場合は、二重の括弧 (( )) 内にそれぞれの範囲をカンマ , で区切って入力し、1つのセットとしてTOCOL関数に渡します。
たとえば、A列とC列の範囲から空白以外の一意の商品名を抽出したい場合、数式は次のようになります。
例:=UNIQUE(TOCOL((A2:A5,C2:C5),1))
スプレッドシートの場合

離れた複数列のデータから空白を除外したい場合は、中括弧 {} 内にそれぞれの範囲をセミコロン ; で区切って入力し、縦一列の配列としてTOCOL関数に渡します。
たとえば、A列とC列の範囲から空白以外の一意の商品名を抽出したい場合、数式は次のようになります。
例:=UNIQUE(TOCOL({A2:A5;C2:C5},1))