概要
Excelで項目をリストアップする方法2種類
関数を使用して、重複したセルを除外しリストアップする方法を2パターン記載します(VBAなし)
※Office365をお持ちの方はUNIQUEやSORTで検索してください
ここではoffice 2010,2013,2016等で上記関数が使えないケースを対象にしています
なぜ使えないのだ。。。(涙
note:SQLはDISTINCT
- 単純に項目だけをリストアップ
項目 | 抽出後 |
---|---|
BBB | BBB |
AAA | AAA |
BBB | ABC |
AAA | |
ABC |
- 項目を昇順で並び替えてリストアップ
項目 | 抽出後 |
---|---|
BBB | AAA |
AAA | ABC |
BBB | BBB |
AAA | |
ABC |
- 理解しやすいよう、扱いが容易な関数のみを使うことにしました
MATCHを使えば多分もっと簡単に書けるはず?
関数 | 内容 |
---|---|
IF(条件,真の場合,偽の場合) | 条件分岐 |
VLOOKUP(検索値, 範囲, 列番号, [検索方法]) | 項目リストアップ |
COUNTIF(範囲,条件) | 条件を満たすセルのカウント |
OFFSET(参照, 行数, 列数, [高さ], [幅]) | 検索範囲の指定 |
ISERROR(値) | セルの値がエラーのとき[TRUE]を返す |
IFNA(値,値が#N/Aの場合に返す値) | 値が#N/Aのとき、第2引数の値を返す |
方法
- 単純に項目だけをリストアップ
実施例
>ここがA1セルです< | LIST | 出現確認 | 並び替え | LIST | リストアップ項番 | リストアップ後 |
---|---|---|---|---|---|---|
1 | BBB | 1 | 0 | BBB | 0 | BBB |
2 | AAA | 1 | 1 | AAA | 1 | AAA |
3 | BBB | 2 | 1 | BBB | 2 | ABC |
4 | AAA | 2 | 1 | AAA | 3 | |
5 | ABC | 1 | 2 | ABC | 4 |
サンプルコード
↓A1セルに直接貼り付ければ動くはず
項目を増やす場合は、EXCELに貼り付けた後5項目を下にコピーしてください
A1セル | LIST | 出現確認 | 並び替え | LIST | リストアップ項番 | リストアップ後 |
---|---|---|---|---|---|---|
1 | BBB | 1 | 0 | =B2 | 0 | =IFNA(VLOOKUP(F2,$D$2:$E$6,2,FALSE),"") |
2 | AAA | =COUNTIF(OFFSET($B$2,0,0,A3),"="&B3) | =IF(C3=1,D2+1,D2) | =B3 | 1 | =IFNA(VLOOKUP(F3,$D$2:$E$6,2,FALSE),"") |
3 | BBB | =COUNTIF(OFFSET($B$2,0,0,A4),"="&B4) | =IF(C4=1,D3+1,D3) | =B4 | 2 | =IFNA(VLOOKUP(F4,$D$2:$E$6,2,FALSE),"") |
4 | AAA | =COUNTIF(OFFSET($B$2,0,0,A5),"="&B5) | =IF(C5=1,D4+1,D4) | =B5 | 3 | =IFNA(VLOOKUP(F5,$D$2:$E$6,2,FALSE),"") |
5 | ABC | =COUNTIF(OFFSET($B$2,0,0,A6),"="&B6) | =IF(C6=1,D5+1,D5) | =B6 | 4 | =IFNA(VLOOKUP(F6,$D$2:$E$6,2,FALSE),"") |
出現確認:COUNTIFとOFFSETの組み合わせで上から順に調べて初めてその項目が出現したかを表現しているところがポイントかと思います
- 項目を昇順で並び替えてリストアップ
実施例
A1セル | LIST | 順序確認 | LIST | 出現確認 | リストアップ項番 | リストアップ対象 | リストアップ後 |
---|---|---|---|---|---|---|---|
0 | BBB | 3 | BBB | 0 | 0 | 0 | AAA |
1 | AAA | 0 | AAA | 0 | 1 | 2 | ABC |
2 | BBB | 3 | BBB | 1 | 2 | 3 | BBB |
3 | AAA | 0 | AAA | 2 | 3 | #N/A | |
4 | ABC | 2 | ABC | 2 | 4 | #N/A |
サンプルコード
↓A1セルに直接貼り付ければ動くはず
A1セル | LIST | 順序確認 | LIST | 出現確認 | リストアップ項番 | リストアップ対象 | リストアップ後 |
---|---|---|---|---|---|---|---|
0 | BBB | =COUNTIF($B$2:$B$6,"<"&B2) | =B2 | 0 | 0 | =VLOOKUP(F2,$E$2:$F$6,2,FALSE) | =IFNA(VLOOKUP(G2,$C$2:$D$6,2,FALSE),"") |
1 | AAA | =COUNTIF($B$2:$B$6,"<"&B3) | =B3 | =IF(ISERROR(VLOOKUP(A3,$C$2:$C$6,1,FALSE)),E2,E2+1) | 1 | =VLOOKUP(F3,$E$2:$F$6,2,FALSE) | =IFNA(VLOOKUP(G3,$C$2:$D$6,2,FALSE),"") |
2 | BBB | =COUNTIF($B$2:$B$6,"<"&B4) | =B4 | =IF(ISERROR(VLOOKUP(A4,$C$2:$C$6,1,FALSE)),E3,E3+1) | 2 | =VLOOKUP(F4,$E$2:$F$6,2,FALSE) | =IFNA(VLOOKUP(G4,$C$2:$D$6,2,FALSE),"") |
3 | AAA | =COUNTIF($B$2:$B$6,"<"&B5) | =B5 | =IF(ISERROR(VLOOKUP(A5,$C$2:$C$6,1,FALSE)),E4,E4+1) | 3 | =VLOOKUP(F5,$E$2:$F$6,2,FALSE) | =IFNA(VLOOKUP(G5,$C$2:$D$6,2,FALSE),"") |
4 | ABC | =COUNTIF($B$2:$B$6,"<"&B6) | =B6 | =IF(ISERROR(VLOOKUP(A6,$C$2:$C$6,1,FALSE)),E5,E5+1) | 4 | =VLOOKUP(F6,$E$2:$F$6,2,FALSE) | =IFNA(VLOOKUP(G6,$C$2:$D$6,2,FALSE),"") |
サンプルコード?サンプルシート?伝わればいいか笑