(Excel)重複を削除して1つだけ残す方法 (original) (raw)

Excelで、値の重複を削除して、残った1つずつの値を表示させる方法についてです。
関数による方法とメニューを使う方法をそれぞれ紹介します。

UNIQUE関数を使う方法

次の画像では、D3セルに数式を入力し、B3:B11セルの範囲のデータから重複を除いた結果を表示させています。

D3セル

=UNIQUE(B3:B11)

UNIQUE関数を使って対象となる範囲を指定するだけで、値の重複を削除した結果を得ることができます。
第2引数を使って列方向に重複を除く(横並びのデータから重複を除く)こともできますが詳しくは省略します。

次の画像は対象が複数列であるケースです。
このような場合は、複数の列の全体で重複が判定され、重複するデータが除かれます。

D3セル

=UNIQUE(B3:C11)

「りんご,山形県」、「ぶどう,宮城県」、「もも,福島県」という行がそれぞれ2つずつあるので重複が除かれ、9つ(9行)あったデータが6つ(6行)になっています。

データが複数列に渡る場合でも1つ1つのセル単位で重複を判定して重複を除く場合は次のようにします。

D3セル

=UNIQUE(TOCOL(B3:D5))

TOCOL関数はデータを縦1列に並べ直す関数です。これを使うことで値が縦1列に並んでいる場合と同じ結果が得られます。

COUNTIF/INDEX関数等を使う方法

UNIQUE関数が使えないバージョンでも利用できる方法です。
ただし段階を経る必要があり、絶対参照($)の知識が必要になります。

まずD3セルに次のように入力してD11セルまでフィルコピーします。

D3セル(下方にフィルコピー)

=IF(COUNTIF(B$3:B3,B3)=1,ROW(),"")

これは「その行のB列の値がはじめて出現するものだったら行番号を表示し、そうでなければ何も表示しない」という意味の式です。
数字(行番号)が表示されている行にある果物が、(上から順にみて)初めて出現していることを確認ください。

あとはB列からその行番号の果物を抽出できれば、重複を除いた結果が得られることがわかります。
そこでE3セルに次のように入力してE11セルまでフィルコピーし、重複を除いた結果を表示させています。

E3セル(下方にフィルコピー)

=INDEX(B:B,SMALL(D$3:D$11,ROW(A1)))

「SMALL(D$3:D$11,ROW(A1)」がポイントで、ここではD列の数字のうち1番目に小さい値(3)を抽出しています。下方へのフィルコピーにより2番目に小さい値(4)、3番目に小さい値(6)、4番目に小さい値(9)が抽出されます。これをINDEX関数と組み合わせることでB3セルの値(りんご)、B4セルの値(ぶどう)、B6セルの値(メロン)、B9セルの値(もも)が抽出されます。

エラー値を表示させたくない場合は次のようにします。

E3セル(下方にフィルコピー)

=IFERROR(INDEX(B:B,SMALL(D$3:D$11,ROW(A1))),"")

IFERROR関数でエラーを空文字列("")に置き換えています。
以降の例でも同様にできますが以降ではこの処理は省略します。

なお、COUNTIF/INDEX関数を使ったこれらの数式(UNIQUE関数の代用)に関しては次の記事でもう少し詳しく説明していますので参考まで。

(Excel)UNIQUE関数の代用となる関数の例 - いきなり答える備忘録

また、対象が複数列の場合については、複数列の値をくっつけてからその重複を判定するのが一つの方法です(結果のイメージについては上記のUNIQUE関数の例を参照)。まずはE3,F3セルに次のように入力してE11,F11セルまでフィルコピーします。

E3,F3セル(ともに下方にフィルコピー)

=B3&"_"&C3 =IF(COUNTIF(E$3:E3,E3)=1,ROW(),"")

そしてG3セルに次の数式を入力し、G11セルまでフィルコピー、さらに隣のH列にフィルコピーすることで複数列から重複を除いた結果が得られます。

G3セル(G11セルまでフィルコピー→H列へフィルコピー)

=INDEX(B:B,SMALL($F$3:$F$11,ROW(A1)))

基本的な考え方は上記例(1列だけの例)と同様です。絶対参照($)の使い方にご注意ください。

「重複の削除」メニューを使う方法

メニュー操作により重複を削除する方法です。関数で実行する例と異なり、対象データが直接変更されます。

まずは対象範囲となるデータ(B3:B11)を選択した状態で「データ」タブにある「重複の削除」のアイコンをクリックします。

ダイアログが出ますので、そのまま(「果物」列が対象となっていることを確認して)OKをクリックします。

なお、B3:B11の範囲を選んでおかなくても、表の中のどこかのセルを選択した状態で「重複の削除」アイコンをクリックすると表全体が選択された状態となり、「先頭行をデータの見出しとして使用する」にチェックが入った状態でこのダイアログが現れます。結果的にはどちらでも同じですが好みで選んでください。

OKをクリックするとデータの重複が削除されました。

複数列を対象とする場合も同様です。
次の画像は、B3:C11セルを選択した状態で「データ」タブにある「重複の削除」のアイコンをクリックしたところです。
「果物」「産地」が対象列になっていることを確認してOKをクリックすると…

UNIQUE関数の例と同様に、複数の列の全体で重複が判定され、重複するデータが除かれました。