関数で重複を削除し並び替える方法です。先ほどCOUNTIFで重複チェックをした以下の表(COUNTIFで重複チェックを参照)から、重複データを削除し並び替えます。
欲しい結果は重複している”エクセル”を削除し、並び替えた後の以下の表です。
まずはC列に、重複していないものだけに連番を付けていきます。
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() と入力し下にドラッグ。直接入力でももちろん構いません。
そして最後に、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)は上から何番目か? → なし。 → エラー
エラーを空白にしたい場合、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を起点に下にその分ずらした所の値は何? というものです。 →エクセル関数にこだわる! |
|