UNIQUE関数で空白を除く方法|複数列の抽出までわかりやすく解説
UNIQUE関数で空白を除く前に押さえること
UNIQUE関数で一覧を作ったときに空白が混ざる場合は、UNIQUE関数の前に空白を取り除く考え方を押さえると解決しやすくなります。
UNIQUE関数は重複を整理するための関数なので、空白そのものを自動で消してくれる関数ではありません。
そのため、空白を表示したくない場合は、空白を除く処理と重複を除く処理を分けて考えることが大切です。
この記事では、1列のデータから空白を除く基本形だけでなく、隣接する複数列や離れた複数列を扱う場合の考え方まで整理します。
ExcelとGoogleスプレッドシートでは使える関数や配列の書き方が少し違うため、自分の環境に合う方法を選ぶことも重要です。
最初に基本の考え方を理解しておくと、数式を丸暗記しなくても、範囲を置き換えながら応用しやすくなります。
UNIQUE関数の結果に空白が出る理由
UNIQUE関数は、指定した範囲にある値から重複を取り除いて一覧を作る関数です。
そのため、元データの中に空白セルがあると、その空白も抽出対象として扱われることがあります。
たとえば、A列に商品名や担当者名が並んでいて、その途中に何も入力されていないセルがある場合、UNIQUE関数の結果にも空白行が表示されることがあります。
これは関数が間違っているというより、指定した範囲の中に空白が含まれていることが原因です。
UNIQUE関数は、値の種類を整理する関数なので、空白もひとつの状態として結果に含めることがあります。
特に、列全体や広い範囲を指定している場合は、まだデータが入っていないセルまで対象になりやすくなります。
その結果、データの最後に空白行が表示されたり、一覧の途中に余計な空白が混ざったように見えたりします。
空白を結果に出したくない場合は、重複を除く前に空白以外のデータだけを取り出す必要があります。
この順番を間違えると、UNIQUE関数で重複を消しても、空白だけは残ってしまうことがあります。
まずは、UNIQUE関数だけで解決しようとせず、空白を除くための条件を別に指定するという考え方を持つことが大切です。
空白を除く基本はFILTER関数との組み合わせ
UNIQUE関数の結果から空白を除きたいときは、FILTER関数を組み合わせるのが基本です。
考え方は、まずFILTER関数で空白ではないデータだけを抽出し、その結果にUNIQUE関数をかける流れです。
この順番にすると、空白を除いたうえで重複しない一覧を作れます。
基本の形は、UNIQUE関数の中にFILTER関数を入れる形になります。
つまり、空白を除外する条件をFILTER関数で指定し、最後にUNIQUE関数で重複を整理します。
FILTER関数は、指定した条件に合うデータだけを取り出すための関数です。
空白を除く場合は、対象範囲が空白ではないという条件を指定します。
数式の中では、空白ではないことを <>”” のように表します。
この条件を使うことで、何か入力されているセルだけを残せます。
そのあとにUNIQUE関数を使うと、空白を含まない重複なしの一覧になります。
この形を覚えておくと、1列だけでなく複数列を扱うときも考え方を応用しやすくなります。
複数列の場合も、基本は空白を除く、重複を除くという順番は変わりません。
違うのは、複数列のデータをどのような形に整えてからFILTER関数に渡すかという部分です。
まずは1列の基本式を理解してから、複数列や離れた列へ広げていくと、式の意味を追いやすくなります。
1列のデータから空白を除いてUNIQUEで抽出する方法
1列のデータだけを対象にする場合は、FILTER関数とUNIQUE関数を組み合わせるだけで比較的かんたんに空白を除外できます。
1列の処理は、複数列に比べて範囲と条件の対応関係が分かりやすいです。
そのため、まずは1列の基本形を理解しておくと、あとで複数列を扱うときにも迷いにくくなります。
ここでは、A列のデータを例にして、空白を除いた重複なしリストを作る考え方を整理します。
基本の考え方
1列だけを対象にする場合は、抽出範囲と条件範囲を同じ列にします。
たとえば、A2からA100までの中から空白を除いて重複なしの一覧を作りたい場合は、A2:A100を抽出範囲にします。
条件には、A2:A100が空白ではないことを指定します。
この条件を使うことで、入力されているセルだけがFILTER関数で取り出されます。
その取り出した結果にUNIQUE関数を使えば、空白を除いた重複なしリストになります。
このとき大切なのは、FILTER関数が先に動いて、UNIQUE関数があとから動くという点です。
最初に空白以外のデータだけを取り出すことで、UNIQUE関数が扱うデータの中に空白が含まれにくくなります。
つまり、UNIQUE関数で空白を消すのではなく、UNIQUE関数に渡す前のデータから空白を取り除くという考え方です。
この流れを理解しておくと、式の一部を見ても何をしているのか判断しやすくなります。
また、対象範囲と条件範囲は基本的に同じサイズにしておく必要があります。
A2:A100を抽出するなら、条件もA2:A100を基準にすると分かりやすいです。
範囲の行数がずれると、思った結果にならないことがあるため注意が必要です。
1列データで使う数式例
1列データで使う基本式は、=UNIQUE(FILTER(A2:A100,A2:A100<>””)) です。
この式では、A2:A100の中から空白ではないセルだけをFILTER関数で抽出しています。
その抽出結果にUNIQUE関数を使うことで、同じ値を1つにまとめた一覧を作っています。
自分の表で使うときは、A2:A100の部分を実際に抽出したい範囲へ置き換えます。
たとえば、担当者名がB列にあるなら、B2:B100のように範囲を変えます。
商品名がC列にある場合は、C2:C100のように指定します。
都道府県名、カテゴリ名、取引先名など、同じ列に同じ種類のデータが並んでいる場合に使いやすい形です。
データが増える予定がある場合は、少し広めの範囲を指定しておくと更新に対応しやすくなります。
ただし、列全体を指定するとシートが重くなることがあるため、最初は必要な範囲だけで試すのがおすすめです。
たとえば、今のデータが100行程度なら、まずはA2:A200くらいまでにしておくと確認しやすいです。
最初からA:Aのように列全体を指定すると、空白セルも大量に計算対象へ含まれる場合があります。
関数が少ないシートでは気にならないこともありますが、複数の関数が入ったシートでは処理が重くなることがあります。
ExcelでもGoogleスプレッドシートでも、基本の考え方は同じです。
ただし、使用している環境によっては、区切り記号や関数の挙動に違いが出る場合があります。
数式をコピーしてうまく動かないときは、まず範囲が正しいか、カンマの区切りが自分の環境に合っているかを確認します。
また、結果を表示するセルの下に別のデータが入っていると、抽出結果が展開できないことがあります。
その場合は、結果を表示する場所の下方向に空きセルを用意してから式を入れると解決しやすくなります。
空白ではなくスペースが入っている場合の注意点
見た目は空白に見えても、実際には半角スペースや全角スペースが入っている場合があります。
この場合、セルは完全な空白ではないため、A2:A100<>”” の条件では除外されないことがあります。
たとえば、入力ミスでスペースだけが入っているセルは、空白のように見えても値があるセルとして扱われます。
そのため、空白を除いたはずなのに空の行が残るように見えることがあります。
このようなときは、元データのスペースを削除するか、TRIM関数などで余分な空白を整える方法を検討します。
特に、別のシステムから貼り付けたデータや、手入力が多い表では、不要なスペースが混ざりやすいです。
半角スペースだけでなく、全角スペースや改行のような見えにくい文字が原因になることもあります。
見た目だけでは判断しにくい場合は、該当セルを選択して数式バーを確認すると分かりやすいです。
また、セルをダブルクリックしたときにカーソルが少し右にずれるようなら、スペースが入っている可能性があります。
まずは対象範囲のセルを選び、実際に何か文字が入っていないか確認すると原因を見つけやすくなります。
データ量が少ない場合は、不要なセルをDeleteキーで消し直すだけでも改善できます。
データ量が多い場合は、検索と置換を使ってスペースを削除したり、作業列でデータを整えてからUNIQUE関数を使ったりすると安定します。
空白に見えるものが本当の空白なのかを確認することは、UNIQUE関数の結果をきれいにするうえでとても重要です。
複数列の空白を除外するときの基本ルール
複数列の空白を除外するときは、1列のときよりも範囲の形と抽出したい結果の形を意識する必要があります。
複数列では、単に空白を除くといっても、行を残したいのか、値だけを一覧にしたいのかで数式が変わります。
この違いを先に整理しておくと、目的に合わない式を使ってしまう失敗を避けやすくなります。
特に、ExcelとGoogleスプレッドシートでは複数列を1列にまとめる方法が違うため、環境別に考えることも大切です。
1列と複数列で考え方が変わる理由
1列だけなら、抽出範囲と条件範囲を同じ形で指定しやすいです。
しかし複数列になると、どのセルを空白として判定するのかを決める必要があります。
たとえば、A列からC列までのどこかに入力がある行を残したいのか、空白セルをすべて除いて1列の一覧にしたいのかで数式が変わります。
行単位で表を残したい場合は、行全体を残すかどうかを判定します。
セル単位で値だけを一覧にしたい場合は、複数列の値を1列にまとめてから空白を除く考え方になります。
この違いを整理せずに式を作ると、思った結果にならなかったりエラーになったりします。
たとえば、A列からC列に入力された担当者名をすべて重複なしで一覧化したいなら、表の形を残す必要はありません。
この場合は、A列からC列の値を縦に並べて、空白を除いてからUNIQUE関数を使う流れになります。
一方で、A列からC列までをひとつのレコードとして残したいなら、行ごとの判定が必要になります。
同じ複数列でも、最終的に欲しい結果がまったく違うため、式も変わります。
まずは、結果を1列の一覧にしたいのか、複数列の表として残したいのかをはっきりさせることが大切です。
この記事では、UNIQUE関数で空白を除いた一覧を作る目的を中心に、複数列の値をまとめて扱う考え方を説明します。
隣接する複数列と離れた複数列の違い
複数列を扱うときは、対象の列が隣り合っているかどうかで難しさが変わります。
A列からC列のように隣接している列なら、A2:C100のようにひとまとまりの範囲として指定できます。
一方で、A列とC列とF列のように離れた列をまとめたい場合は、単純な範囲指定だけでは扱いにくくなります。
離れた列は、ExcelとGoogleスプレッドシートで使いやすい方法が変わることがあります。
そのため、まずは列が連続しているのか、それとも離れているのかを確認することが大切です。
ここを確認しておくと、後から数式を作り直す手間を減らせます。
隣接する複数列の場合は、範囲をまとめて指定できるため、式の見た目も比較的シンプルになります。
たとえば、A2:C100のように書けば、A列、B列、C列をまとめて対象にできます。
離れた列の場合は、A2:A100、C2:C100、F2:F100のように、それぞれの範囲を別々に指定する必要があります。
このとき、不要なB列やD列まで含めてしまうと、意図しない値が結果に混ざることがあります。
また、不要な列に空白が多い場合は、空白処理が余計に複雑になることもあります。
列が隣接しているか離れているかは、数式の作り方を決める最初の判断ポイントです。
先に確認したいデータ範囲の決め方
数式を作る前に、どの範囲を対象にするかを決めておくと失敗しにくくなります。
まず、抽出したいデータが1列なのか複数列なのかを確認します。
次に、複数列の場合は、列が隣接しているのか離れているのかを確認します。
さらに、空白を行ごと除きたいのか、値だけを1列に並べたいのかも決めます。
範囲を広く取りすぎると、不要な空白まで判定対象になり、結果が見づらくなる場合があります。
最初はA2:A100やA2:C100のように、実際にデータが入っている範囲に近い指定で試すと原因を切り分けやすくなります。
問題なく動くことを確認してから範囲を広げると、エラーや重さを避けやすくなります。
範囲を決めるときは、見出し行を含めないことも大切です。
たとえば、A1に「担当者名」という見出しがある場合、A1:A100を指定すると見出しまで結果に含まれることがあります。
通常は、見出しの下にあるA2から指定すると扱いやすいです。
また、空白行が途中にある表では、データの終わりを目視だけで判断しにくい場合があります。
その場合は、まず小さい範囲で試して、正しく動いたら必要に応じて範囲を広げると安全です。
複数列を扱うときほど、範囲の決め方が結果に大きく影響します。
隣接する複数列から空白を除いて抽出する方法
隣接する複数列を対象にする場合は、連続した範囲をまとめて扱えるため、離れた列よりも考え方を整理しやすいです。
ただし、複数列の値をそのままUNIQUE関数に入れると、思っていた一覧にならない場合があります。
重複なしの一覧を1列で作りたい場合は、複数列の値を縦方向にまとめてから空白を除く流れにすると分かりやすいです。
ここでは、A列からC列のように連続している列を対象にした考え方を説明します。
隣接列で使いやすいケース
隣接列で使いやすいのは、A列からC列のように同じ種類のデータが横に並んでいるケースです。
たとえば、担当者候補がA列、B列、C列に分かれて入力されている場合があります。
このような表から空白を除いて重複なしの一覧を作りたい場合は、複数列の値をまとめて扱う必要があります。
ただし、表の形を残して行単位で抽出したいのか、値だけを1列の一覧にしたいのかで式の方向が変わります。
重複なしの一覧を作る目的なら、複数列の値を1列にまとめてから空白を除く方法が分かりやすいです。
たとえば、A列に第1候補、B列に第2候補、C列に第3候補が入っているような表では、列ごとの意味よりも全体の候補一覧を作りたいことがあります。
この場合は、A列からC列までの全セルをひとつの縦長リストに変換してから処理します。
そうすると、A列にある値もB列にある値もC列にある値も、同じ一覧の中で重複判定できます。
同じ名前や同じ商品名が複数の列に分かれて入力されていても、UNIQUE関数で1つにまとめられます。
隣接列は範囲指定がしやすいため、複数列の練習としても扱いやすいケースです。
Excelでの数式例
Excelで隣接する複数列の値を1列にまとめて空白を除く場合は、TOCOL関数が使える環境なら考え方がシンプルです。
基本式は、=UNIQUE(FILTER(TOCOL(A2:C100),TOCOL(A2:C100)<>””)) です。
この式では、A2:C100の値をTOCOL関数で1列に並べ替えています。
そのうえで、FILTER関数によって空白ではない値だけを残しています。
最後にUNIQUE関数で重複を除くため、空白を除いた一覧を作れます。
Excelの環境によってはTOCOL関数が使えない場合があります。
その場合は、対象列を一度別の場所に縦へまとめる方法や、使える関数に合わせた別の式を検討します。
同じExcelでも利用できる関数が違う場合があるため、式が認識されないときは関数名が使える環境か確認します。
TOCOL関数が使える場合は、複数列を1列に並べる作業を式の中で完結できます。
そのため、作業用の列を増やしたくない場合にも便利です。
ただし、式の中でTOCOL(A2:C100)を2回書いているため、慣れていないと少し読みにくく感じるかもしれません。
この式は、1回目のTOCOLで抽出するデータを作り、2回目のTOCOLで空白かどうかの条件を作っていると考えると理解しやすいです。
範囲を置き換えるときは、2か所あるA2:C100を同じ範囲にそろえます。
片方だけ範囲を変えると、条件とデータの形がずれてエラーや想定外の結果になることがあります。
また、表に見出しがある場合は、A1:C100ではなくA2:C100のようにデータ部分だけを指定します。
まずは小さい範囲でTOCOL(A2:C10)だけを試して、値が縦に並ぶか確認すると式の動きが理解しやすくなります。
スプレッドシートでの数式例
Googleスプレッドシートで隣接する複数列を1列にまとめたい場合は、FLATTEN関数を使う方法が分かりやすいです。
基本式は、=UNIQUE(FILTER(FLATTEN(A2:C100),FLATTEN(A2:C100)<>””)) です。
この式では、A2:C100の値をFLATTEN関数で1列に並べています。
その結果からFILTER関数で空白を除外し、UNIQUE関数で重複を取り除きます。
Googleスプレッドシートでは、配列の扱いがExcelと異なるため、Excelの式をそのまま貼り付けても動かない場合があります。
特にTOCOL関数を使ったExcelの式と、FLATTEN関数を使ったスプレッドシートの式は分けて考えると混乱しにくくなります。
式が長くなる場合は、まずFLATTEN(A2:C100)だけを試して、値が1列に並ぶか確認すると原因を見つけやすいです。
FLATTEN関数で値が縦に並ぶことを確認できたら、次にFILTER関数を組み合わせます。
そして最後にUNIQUE関数をかぶせると、空白を除いた重複なし一覧になります。
このように、完成形の式を一度に理解しようとせず、FLATTEN、FILTER、UNIQUEの順に分けて確認すると分かりやすいです。
Googleスプレッドシートでは、空白セルだけでなく、関数によって返された空文字が混ざる場合もあります。
空文字が残る場合も、基本的には <>”” の条件で除外できることがあります。
ただし、スペースだけが入力されているセルは除外されない場合があるため、元データの整形も確認しておくと安心です。
結果を表示する場所の下にデータがあると、展開結果が邪魔されてエラーになることがあります。
式を入れるセルの下方向には、十分な空きスペースを用意しておきます。
離れた複数列から空白を除いて抽出する方法
離れた複数列から値を抽出する場合は、対象列をどうやって1つのまとまりにするかがポイントになります。
隣接列のようにA2:C100とまとめて指定できないため、列ごとに範囲を指定して結合する考え方が必要です。
ExcelとGoogleスプレッドシートでは、離れた範囲をまとめる書き方が違います。
無理に同じ式で対応しようとせず、自分が使っている環境に合わせて方法を選ぶと失敗しにくくなります。
離れた列の抽出が難しくなる理由
離れた列は、A2:C100のように1つの連続した範囲として指定できません。
たとえば、A列、C列、F列だけを対象にしたい場合、A2:F100を指定すると不要なB列、D列、E列まで含まれてしまいます。
不要な列を含めると、結果に関係ない値や空白が混ざる原因になります。
そのため、離れた列だけを取り出してから、空白除外と重複除外を行う必要があります。
ここで必要になるのが、複数の列を縦に結合したり、配列としてまとめたりする考え方です。
この部分はExcelとGoogleスプレッドシートで書き方が変わりやすいため、環境別に分けて考えるのが安全です。
離れた列を扱うときに失敗しやすいのは、不要な列まで含めて広い範囲を指定してしまうことです。
たとえば、A列、C列、F列だけが必要なのにA:Fを指定すると、B列、D列、E列の値も結果に入ってしまいます。
不要な列にメモや別のデータが入っている場合、重複なし一覧の中に関係ない値が混ざることがあります。
また、空白の列が多い場合は、空白除外の処理も無駄に増えます。
離れた列では、必要な列だけを正しく取り出すことが最初のポイントです。
そのうえで、取り出した列を縦に並べて、空白を除き、重複を除くという流れで考えます。
Excelの場合の考え方
Excelで離れた列をまとめる場合は、使える関数によって選択肢が変わります。
TOCOL関数やVSTACK関数が使える環境なら、離れた列を縦に積み上げてから空白を除く考え方が使えます。
たとえば、A列、C列、F列をまとめたい場合は、VSTACKでそれぞれの列を縦に結合します。
考え方としては、VSTACK(A2:A100,C2:C100,F2:F100) で対象列を1列方向にまとめます。
その結果にFILTER関数で空白ではない条件をかけ、最後にUNIQUE関数で重複を除きます。
式の考え方は、対象列をまとめる、空白を除く、重複を除くという順番です。
ただし、Excelでは同じ計算を式の中で何度も書くと読みにくくなる場合があります。
読みにくいと感じるときは、作業用の列に対象データをまとめてからUNIQUE関数を使う方法も現実的です。
初心者の場合は、いきなり長い式にせず、列をまとめる部分だけを先に確認すると失敗しにくくなります。
たとえば、最初に別の空きセルへVSTACK(A2:A10,C2:C10)だけを入れて、値が縦に並ぶか確認します。
その結果が確認できたら、次に空白を除くFILTER関数を組み合わせます。
最後にUNIQUE関数を追加すると、式のどこで問題が起きているのか判断しやすくなります。
離れた列をまとめる式は長くなりやすいため、あとから自分や他の人が修正できる形にしておくことも大切です。
実務では、1つのセルに長い式を入れるより、作業用の範囲で列をまとめてから最終結果を作る方が管理しやすいことがあります。
また、Excelのバージョンによっては、VSTACK関数やTOCOL関数が使えない場合があります。
関数名を入力しても候補に出てこない場合や、名前のエラーになる場合は、利用環境が対応していない可能性があります。
その場合は、対象列をコピーして縦に並べる方法や、使える関数で代用する方法を検討します。
スプレッドシートの場合の考え方
Googleスプレッドシートでは、波かっこを使って離れた範囲をまとめる方法がよく使われます。
たとえば、A列、C列、F列を縦にまとめる場合は、{A2:A100;C2:C100;F2:F100} のように書きます。
セミコロンでつなぐと、複数の範囲を縦方向に並べる考え方になります。
そのまとめた範囲に対してFILTER関数で空白を除き、UNIQUE関数で重複を取り除きます。
基本の考え方は、=UNIQUE(FILTER({A2:A100;C2:C100;F2:F100},{A2:A100;C2:C100;F2:F100}<>””)) です。
この式では、離れた列をひとつの縦長データとして扱っています。
対象列が増えるほど式が長くなるため、最初は2列だけで試してから列を増やすと安全です。
スプレッドシートでは配列を使いやすい一方で、区切り記号の使い方を間違えるとエラーになることがあります。
うまく動かないときは、まず {A2:A100;C2:C100} のような部分だけを別セルで確認すると原因を切り分けやすくなります。
波かっこの中でセミコロンを使うと縦に並べる意味になります。
一方で、カンマを使うと横方向に並べる意味になるため、目的に合わせて使い分けます。
空白を除いて1列の一覧にしたい場合は、縦に並べる形を使う方が扱いやすいです。
また、範囲ごとの行数が大きく違う場合でも、縦方向に並べる考え方なら比較的整理しやすくなります。
ただし、範囲が広すぎると式が重くなることがあります。
最初はA2:A100やC2:C100のように必要な範囲で試し、問題がなければ範囲を広げます。
対象列が増えると、同じ範囲指定を式の中で繰り返すため、入力ミスも起きやすくなります。
列名を変えるときは、抽出する範囲と条件に使う範囲の両方をそろえるように確認します。
UNIQUE関数で空白を除くときのよくある失敗
UNIQUE関数とFILTER関数を組み合わせても思った結果にならないときは、空白の種類や範囲指定を確認すると原因を見つけやすくなります。
数式そのものが合っているように見えても、元データの状態や使用環境によって結果が変わることがあります。
ここでは、空白が残る、複数列でエラーになる、Excelとスプレッドシートで同じ式が使えない、処理が重くなるといったよくある失敗を整理します。
原因をひとつずつ確認すれば、どこを直せばよいか判断しやすくなります。
空白セルが残ってしまう
空白を除く式を使ったのに空白が残る場合は、まずそのセルが本当に空白か確認します。
よくある原因は、半角スペースや全角スペースが入力されているケースです。
この場合、見た目は空白でもセルには文字が入っているため、完全な空白として扱われません。
また、別の関数の結果として空文字が返っている場合も、見た目だけでは判断しにくいことがあります。
空白が残るときは、元データを選択してDeleteキーで消し直すと改善する場合があります。
データ量が多い場合は、TRIM関数や検索置換を使って余分なスペースを整理する方法もあります。
特に、外部システムからダウンロードしたCSVや、別の表からコピーしたデータでは、見えない文字が混ざることがあります。
セルの中に改行やタブのような文字が入っている場合も、空白に近い見た目になることがあります。
このようなデータは、通常の空白判定だけでは除外しきれない場合があります。
まずは、空白に見えるセルをクリックして、数式バーに何か入っていないか確認します。
スペースが原因なら、検索置換でスペースを削除すると改善することがあります。
ただし、名前や住所の中に必要なスペースがある場合は、まとめて削除すると別の問題が起きることがあります。
そのため、削除してよいスペースかどうかを確認してから作業することが大切です。
複数列でエラーになる
複数列でエラーになる場合は、抽出範囲と条件範囲の形が合っていない可能性があります。
FILTER関数では、抽出する範囲と条件として指定する範囲の行数や列数の関係が重要です。
たとえば、A2:C100を抽出したいのに、条件範囲としてA2:A100だけを指定すると、意図した判定にならないことがあります。
値だけを1列にまとめたい場合は、先に複数列を1列化してから空白判定をする方が分かりやすいです。
ExcelならTOCOL関数やVSTACK関数、GoogleスプレッドシートならFLATTEN関数や配列の考え方を使います。
式がエラーになるときは、一度に完成形を作らず、範囲をまとめる部分、空白を除く部分、重複を除く部分に分けて確認します。
複数列の式では、どこで配列の形が変わっているのかを意識することが大切です。
たとえば、複数列を1列にまとめる前と後では、データの形が変わります。
そのため、空白かどうかを判定する条件も、まとめた後の形に合わせる必要があります。
抽出範囲は縦長なのに、条件範囲が横長のままだと、エラーや想定外の結果につながりやすくなります。
式がうまく動かない場合は、最初に複数列を1列化する部分だけを別セルで確認します。
次に、その結果から空白が除けるかを確認します。
最後に、UNIQUE関数を追加して重複が消えるかを確認します。
このように段階を分けると、どの部分が原因か特定しやすくなります。
Excelとスプレッドシートで同じ数式が使えない
ExcelとGoogleスプレッドシートでは、同じ目的でも使える関数や配列の書き方が違うことがあります。
たとえば、Excelで使うTOCOL関数やVSTACK関数を、すべての環境でそのまま使えるとは限りません。
一方で、GoogleスプレッドシートではFLATTEN関数や波かっこを使った配列指定が便利な場面があります。
そのため、検索で見つけた数式を使うときは、それがExcel用なのかスプレッドシート用なのかを確認することが大切です。
特に複数列や離れた列を扱う式は、環境差が出やすい部分です。
同じ見た目の表でも、使うアプリが違えば適した式も変わると考えておくと失敗を減らせます。
Excelで便利な関数が、Googleスプレッドシートでは存在しない場合があります。
反対に、Googleスプレッドシートでよく使う書き方が、Excelではそのまま使えない場合もあります。
また、Excelでもバージョンによって使える動的配列関数が異なることがあります。
古いExcelでは、紹介されている式を入れても関数名のエラーになることがあります。
この場合は、式の考え方は同じでも、別の方法に置き換える必要があります。
数式を探すときは、自分が使っているツール名と一緒に検索すると、環境に合う式を見つけやすくなります。
たとえば、Excelで使うならExcel用、スプレッドシートで使うならスプレッドシート用の式を確認します。
同じUNIQUE関数でも、周りに組み合わせる関数が変わることを覚えておくと安心です。
範囲を広く取りすぎて重くなる
列全体を指定すると、データが少なくても大量のセルを計算対象にしてしまう場合があります。
たとえば、A:Aのように列全体を指定すると、空白セルも含めて広い範囲を処理することになります。
小さな表なら問題になりにくいですが、関数が多いシートでは動作が重くなることがあります。
最初はA2:A100やA2:C100のように、実際に使う範囲に近い指定で試すのがおすすめです。
データが増える場合は、必要に応じて範囲を広げる方が、エラー原因も見つけやすくなります。
特に、複数列を対象にする場合は、範囲が広いほど計算するセルの数が一気に増えます。
A:Cのように列全体を複数列で指定すると、かなり広い範囲を毎回計算することになります。
さらに、FILTER関数やUNIQUE関数を複数の場所で使っているシートでは、再計算の負荷が大きくなることがあります。
シートが重いと感じる場合は、まず対象範囲を必要な行数に絞ります。
また、使っていない空白行まで含めていないかを確認します。
データが毎月増えるような表では、少し余裕を持たせた範囲を指定する程度にすると扱いやすいです。
たとえば、現在100行ならA2:A300のように指定し、必要になったら広げる方法があります。
範囲を広く取るほど便利に見えますが、処理速度やエラー確認のしやすさとのバランスを考えることが大切です。
ケース別に使う数式を選ぶポイント
UNIQUE関数で空白を除く方法は、対象データが1列か複数列か、列が隣接しているか離れているかで選び方が変わります。
最初から複雑な式を選ぶより、自分のデータに必要な処理だけを選ぶ方が失敗しにくいです。
ここでは、1列だけの場合、隣接する複数列の場合、離れた複数列の場合に分けて、どの考え方を使うとよいか整理します。
環境や目的に合わせて選べるようにしておくと、あとから表の形が変わっても対応しやすくなります。
1列だけなら基本式で十分
対象が1列だけなら、UNIQUE関数とFILTER関数を組み合わせる基本式で十分です。
この場合は、抽出範囲と条件範囲が同じ列になるため、式の意味も理解しやすいです。
まずは =UNIQUE(FILTER(A2:A100,A2:A100<>””)) の形を覚えるとよいです。
この式を理解しておくと、B列やC列に置き換えるだけで他のデータにも応用できます。
初心者は、最初に1列の小さな範囲で動きを確認してから複数列へ進むと理解しやすくなります。
1列だけなら、複数列をまとめる関数を使う必要はありません。
そのため、式が短く、修正もしやすいです。
たとえば、担当者名の一覧、商品カテゴリの一覧、都道府県の一覧などを作る場合に向いています。
空白を除いて重複なしのリストを作るだけなら、この基本式を使えば十分なケースが多いです。
まずはこの形を基準にして、必要に応じて範囲だけを変えるとよいです。
隣接する複数列なら範囲をまとめて考える
隣接する複数列を扱う場合は、A2:C100のように連続した範囲として指定できるかを確認します。
値だけを1列の一覧にしたい場合は、まず複数列を縦に並べる考え方が必要です。
ExcelならTOCOL関数が使えるかを確認し、GoogleスプレッドシートならFLATTEN関数を検討します。
同じ範囲でも、表の形を残したいのか、値だけを一覧化したいのかで式は変わります。
迷ったときは、最終的に作りたい結果が表なのか一覧なのかを先に決めると選びやすくなります。
隣接する複数列は、範囲指定がしやすい分、最終結果の形を決めることが重要です。
たとえば、A列からC列までに名前が入力されていて、すべての名前を重複なしでまとめたいなら、1列に並べてからUNIQUE関数を使います。
一方で、A列からC列の組み合わせを1行のデータとして扱いたい場合は、別の考え方が必要になります。
空白をセル単位で除くのか、行単位で除くのかを決めておくと、式の選び方を間違えにくくなります。
隣接列は扱いやすいですが、目的があいまいなまま式を作ると結果がずれやすいです。
離れた複数列なら配列化や結合を検討する
離れた複数列を扱う場合は、対象列だけを取り出してまとめる工程が必要です。
ExcelではVSTACK関数などで列を縦に積み上げる考え方が使える場合があります。
Googleスプレッドシートでは、波かっこを使って {A2:A100;C2:C100} のように縦へまとめる方法があります。
離れた列は式が長くなりやすいため、慣れていない場合は作業用の列を使う方法も選択肢です。
無理に1つの式にまとめるより、後から見ても分かる形にする方が実務では扱いやすいことがあります。
離れた列を1つの式で処理すると、対象範囲を変更するときに修正箇所が多くなります。
たとえば、A列、C列、F列を対象にしていたものを、さらにH列まで増やす場合は、式の中に新しい範囲を追加する必要があります。
そのとき、抽出する範囲と条件に使う範囲の両方をそろえないと、エラーの原因になります。
作業用の列を使えば、対象列を順番にまとめてから空白除外と重複除外を行えるため、修正しやすくなります。
見た目をすっきりさせたい場合は1つの式にまとめる方法が便利ですが、保守しやすさを優先するなら作業用の列も有効です。
初心者は小さい範囲で試してから広げる
関数に慣れていない場合は、いきなり広い範囲で式を作らない方が安全です。
まずはA2:A10のような小さい範囲で、空白が除外されるか確認します。
次に、データ範囲を広げたり、対象列を増やしたりします。
段階的に試すと、エラーが出たときにどこが原因か分かりやすくなります。
特に複数列や離れた列では、完成形を一度で作るより、部品ごとに確認する方が失敗を減らせます。
たとえば、最初にFILTER関数だけを試し、空白が除外されるか確認します。
次に、UNIQUE関数を追加して重複が消えるか確認します。
複数列の場合は、まず列を1列にまとめる部分だけを試します。
その後で空白除外と重複除外を加えると、式の動きが理解しやすくなります。
完成形の式をコピーするだけでも結果は作れますが、どこを置き換えるか分からないと修正に困ります。
小さな範囲で試しながら作ることで、自分の表に合う式へ調整しやすくなります。
UNIQUE関数の空白除外に関するFAQ
UNIQUE関数で空白を除外するときによくある疑問を整理しておくと、実際の表に合わせて式を調整しやすくなります。
空白といっても、空白セル、空文字、スペース、0などは扱いが異なります。
また、ExcelとGoogleスプレッドシートでは同じ考え方でも数式が変わる場合があります。
最後に、空白除外と重複除外を同時に行う場合や、元データを更新したときの動きについて確認しておきます。
空白だけでなく重複も同時に消せますか?
空白除外と重複除外は、FILTER関数とUNIQUE関数を組み合わせることで同時にできます。
FILTER関数が空白ではないデータだけを取り出し、UNIQUE関数がその中の重複を取り除きます。
そのため、結果として空白を含まない重複なしの一覧になります。
1列なら基本式の =UNIQUE(FILTER(A2:A100,A2:A100<>””)) で対応できます。
複数列の場合も、対象データを1列にまとめてから同じ考え方を使うと整理しやすくなります。
この式では、空白を消す役割はFILTER関数が担当しています。
重複を消す役割はUNIQUE関数が担当しています。
それぞれの役割を分けて考えると、複数列へ応用するときも理解しやすくなります。
空白も重複も同時に整理したい場合は、まず空白を除き、その後に重複を除く順番を意識します。
この順番を覚えておくと、別のデータでも同じ考え方を使えます。
0や空文字も空白として扱われますか?
0、空白セル、空文字、スペースはそれぞれ扱いが異なります。
0は数値として入力されている値なので、通常は空白ではありません。
空白セルは何も入力されていないセルです。
空文字は、関数の結果として “” が返っている状態を指すことがあります。
スペースは見た目が空白に近くても文字が入っている状態です。
結果から消したい対象がどれなのかによって、条件の作り方を変える必要があります。
たとえば、0を残したい場合は、単純に空白だけを除く条件で問題ないことがあります。
一方で、0も不要な値として除きたい場合は、0ではないという条件を追加する必要があります。
空文字は見た目が空白と似ていますが、関数の結果として返されている場合があります。
スペースだけのセルは、完全な空白ではないため、通常の空白除外では残る場合があります。
このように、見た目では同じように見えても、データとしては別物です。
うまく除外できないときは、まず何を空白として扱いたいのかを決めることが大切です。
元データを更新したら結果も変わりますか?
UNIQUE関数やFILTER関数で作った結果は、元データが変わると更新されます。
たとえば、元データに新しい名前を追加すると、条件に合う場合は抽出結果にも反映されます。
また、元データの空白を埋めたり削除したりした場合も、結果が変わることがあります。
ただし、指定範囲の外に追加したデータは反映されません。
データが増える予定があるなら、あらかじめ少し広めの範囲を指定しておくと便利です。
たとえば、A2:A100を指定している場合、A101に追加したデータは対象外になります。
この場合は、範囲をA2:A200などに広げる必要があります。
一方で、範囲を広げすぎると処理が重くなることがあります。
更新のしやすさと処理の軽さのバランスを見て範囲を決めると扱いやすくなります。
また、抽出結果が自動で広がるため、結果を表示するセルの下に別のデータがあるとエラーになる場合があります。
結果を表示する場所には、あらかじめ十分な空白スペースを用意しておくと安心です。
Excelとスプレッドシートのどちらでも使えますか?
空白を除いてからUNIQUE関数で重複を除く考え方は、ExcelでもGoogleスプレッドシートでも使えます。
ただし、複数列や離れた列を扱う場合は、具体的な数式が変わることがあります。
ExcelではTOCOL関数やVSTACK関数が使える環境かどうかを確認します。
GoogleスプレッドシートではFLATTEN関数や波かっこを使った配列指定が便利な場合があります。
同じ記事や回答に載っている式でも、自分が使っている環境に合っているかを確認してから使うと失敗しにくくなります。
1列の基本式であれば、ExcelでもGoogleスプレッドシートでも考え方はほとんど同じです。
しかし、複数列を1列にまとめる処理になると、使う関数や書き方が変わりやすくなります。
Excel用の式をスプレッドシートに貼り付けても動かないことがあります。
反対に、スプレッドシート用の配列指定をExcelに貼り付けても、そのままでは使えないことがあります。
そのため、数式を使う前に、自分が使っているのがExcelなのかGoogleスプレッドシートなのかを確認します。
さらに、Excelの場合はバージョンによって使える関数が異なる点にも注意します。
もし式が使えない場合は、関数が対応しているか、別の方法で同じ考え方を実現できるかを確認するとよいです。
基本方針は共通でも、具体的な式は環境に合わせて選ぶことが大切です。