関数で重複を削除し並び替える

VLOOKUPの限界! > エクセル関数にこだわる! > 重複を削除し並び替える

関数で重複を削除し並び替える方法です。

先ほどCOUNTIFで重複チェックをした以下の表(COUNTIFで重複チェックを参照)から、重複データを削除し並び替えます。
A B C D E
1 エクセル 1
2 EXCEL 1
3 えくせる 1
4 エクセル 2
5 COUNTIF 1

欲しい結果は重複している”エクセル”を削除し、並び替えた後の以下の表です。
A B C D E
1 エクセル 1 エクセル
2 EXCEL 1 EXCEL
3 えくせる 1 えくせる
4 エクセル 2 COUNTIF
5 COUNTIF 1

まずはC列に、重複していないものだけに連番を付けていきます。
A B C D E
1 エクセル 1 1
2 EXCEL 1 2
3 えくせる 1 3
4 エクセル 2 3
5 COUNTIF 1 4
方法はいくつもあります。
C1に =SUMIF($B$1:B1,1) と入力し下にドラッグする。(B1からB○まで、1を合計する)
C1に =COUNTIF($B$1:B1,1) と入力し下にドラッグする。(B1からB○まで、1がいくつあるか数える)
C2に =IF(B2=1,C1+1,"") と入力し下にドラッグする。(隣が1なら上に1を足す。ただし、C1は関数を変える必要あり)

次に、D列に上から1の連番を付けます。D1に =ROW() と入力し下にドラッグ。直接入力でももちろん構いません。
A B C D E
1 エクセル 1 1 1
2 EXCEL 1 2 2
3 えくせる 1 3 3
4 エクセル 2 3 4
5 COUNTIF 1 4 5

そして最後に、E列に計算式を入れます。 E1に =INDEX(A:A,MATCH(D1,C:C,0)) と入力、下にドラッグして下さい。
INDEXとMATCHの組み合わせについてはVLOOKUPの限界>INDEXとMATCHの組み合わせを参照下さい。

上の関数の意味は、
E1では、C列で1(=D1)は上から何番目か? → 1番目。ではA列の1番目は何か? → エクセル
E2では、C列で2(=D2)は上から何番目か? → 2番目。ではA列の2番目は何か? → EXCEL
E3では、C列で3(=D3)は上から何番目か? → 3番目。ではA列の3番目は何か? → えくせる
E4では、C列で4(=D4)は上から何番目か? → 5番目。ではA列の5番目は何か? → COUNTIF
E5では、C列で5(=D5)は上から何番目か? → なし。 → エラー

A B C D E
1 エクセル 1 1 1 エクセル
2 EXCEL 1 2 2 EXCEL
3 えくせる 1 3 3 えくせる
4 エクセル 2 3 4 COUNTIF
5 COUNTIF 1 4 5 #N/A

エラーを空白にしたい場合、IFERRORを使い、E1の関数を =IFERROR(INDEX(A:A,MATCH(D1,C:C,0)),"") としてみて下さい。

E1の関数は、=OFFSET($A$1,MATCH(D1,C:C,0)-1,0) でも同じ結果になります。
MATCHで求めた1番目、2番目、3番目、5番目、を使い、A1を起点に下にその分ずらした所の値は何? というものです。



→エクセル関数にこだわる!