エクセルのUNIQUE関数とは?【使えない場合の代用方法】

Excelでデータから重複値を除くのに便利なUNIQUE関数ですが、Microsoft 365またはExcel 2021以降のバージョンでしか使えません。この記事では、Excel 2019以前でも、UNIQUE関数以外の方法で一意の値を抽出する方法を解説しているので、ぜひ参考にしてみてください。

スポンサーリンク

はじめに

エクセルのUNIQUE関数とは?【使えない場合の代用方法】

UNIQUE関数は、指定した範囲から、すべての一意の値を返します。 

例:=UNIQUE(A2:A5)

  • UNIQUE関数が使えるExcelのバージョン
    • 使える:Microsoft 365またはExcel 2021以降
    • 使えない:Excel 2019以前

UNIQUE関数の引数:(範囲, [列の比較], [回数指定])

スポンサーリンク

UNIQUE関数の代用方法

作業列を使う方法

エクセルのUNIQUE関数とは?【使えない場合の代用方法】

UNIQUE関数が使えない場合、次のように、作業列を使って一意の値を抽出します。

  1. 作業列で一意の行番号を取得
    • 例:=IF(COUNTIF( $B$2:B2, B2 )=1,ROW(),"")
  2. INDEX関数で一意の値を抽出
    • 例:=IFERROR(INDEX(B:B,SMALL($A$2:$A$5,ROW(A1))),"")

数式の解説

作業列で一意の行番号を取得
エクセルのUNIQUE関数とは?【使えない場合の代用方法】

まず、作業列に以下の数式を入力し、データのある行までオートフィルでコピーします。

例:=IF(COUNTIF( $B$2:B2, B2 )=1,ROW(),"")

この数式は、COUNTIF関数で「その値が何回出現したか」を数え、IF関数を使って「初めて出現した場合(回数が1)」にだけ、行番号を返すようにしています。

ポイント

COUNTIF($B$2:B2, B2)のように、範囲の開始位置のみを固定($を付ける)します。これにより、数式を下にコピーすると範囲が広がり、その値が何回目に出てきたかを正確に数えられます。

COUNTIF関数の引数:(範囲, 検索条件)

IF関数の引数:(論理式, 真の場合, 偽の場合)

INDEX関数で一意の値を抽出
エクセルのUNIQUE関数とは?【使えない場合の代用方法】

次に、以下の数式を入力し、データのある行までオートフィルでコピーします。

例: =IFERROR(INDEX(B:B,SMALL($A$2:$A$5,ROW(A1))),"")

この数式は、SMALL関数で作業列の行番号を小さい順に抜き出し、INDEX関数で、その行番号にある元のデータを抽出しています。

ポイント

関数の第2引数(順位)にROW(A1)を指定することで、数式を下にコピーするたびに、1位、2位、3位と順位を変えながら、値を取り出せるようになります。

INDEX関数の引数:(参照, 行番号, [列番号])

作業列を使わない方法

エクセルのUNIQUE関数とは?【使えない場合の代用方法】

作業列を作らずに一意の値を抽出したい場合は、以下の数式を入力してオートフィルでコピーします。

例:=IFERROR(INDEX(A$2:A$5,MATCH(0,COUNTIF(C$1:C1,A$2:A$5),0)),"")

※Excelのバージョンによっては、[Ctrl]+[Shift]+[Enter]で確定する必要があります。

ポイント

COUNTIF関数の検索範囲は、C$1:C1のように、開始位置(C$1)のみ絶対参照($を付ける)にします。これにより、数式をコピーすることでC$1:C2C$1:C3…と1行ずつ拡張され、これまでに抽出した値を正確に数えることができます。

MATCH関数の引数:(検索キー, 範囲, [検索の種類])

数式の解説

  1. COUNTIF(C$1:C1,A$2:A$5)
    • A2からA5までの各値が、これまでに抽出した値の範囲(C1:C1)に何回出現するか一度に数え{0, 0, 0, 0}のような「配列」で返しています。
      • A2C1に何回? → 0回
      • A3C1に何回? → 0回
      • A4C1に何回? → 0回
      • A5C1に何回? → 0回
  2. MATCH(0, …)
    • MATCH関数は、COUNTIF関数が返す配列{0, 0, 0, 0}の中から、最初に現れる0(まだ抽出されていない値)を見つけ、その位置(例:1番目)を返します。
  3. INDEX(A$2:A$5, …)
    • INDEX関数は、MATCH関数が返す位置を使って、元のデータ範囲(A$2:A$5)から、その位置にある値を抽出します。
タイトルとURLをコピーしました