Excelで複数の列の内容を縦に積んで重複削除してソートする関数を考えてみました。
A | B |
1 | 8 |
2 | 2 |
3 | 7 |
4 | 1 |
5 | 2 |
12 |
こんな表のA列とB列を縦に積んで重複削除してソートします。
A列の値の数を求める式は「=COUNT(FILTER(A:A,LEN(A:A)>0))」
これをC1セルにセットします。
B列の値の数を求める式は「=COUNT(FILTER(B:B,LEN(B:B)>0))」
これをD1セルにセットします。
C | D |
5 | 6 |
E1セルに次の式を入力して下までコピーします。
=IF(ROW()<=$C$1+$D$1,IF(ROW()<=$C$1,A1,INDEX(B:B,ROW()-$C$1)),"")
数式の条件は以下のようになります。
現在の行番号がA列の値の数以下の場合は同じ行のA列の値
現在の行番号がA列の数より大きい場合は[現在の行番号マイナスA列の値の数]行目のB列の値
現在の行番号がA列とB列の値の数の和より大きい場合は空欄
これにより、A列とB列の値が縦に並びます。
E |
1 |
2 |
3 |
4 |
5 |
8 |
2 |
7 |
1 |
2 |
12 |
F1に次の数式を入力します。
=SORT(UNIQUE(FILTER(E:E,LEN(E:E)>0)),1,1)
E列の内容を重複削除して、縦に並べています。
F |
1 |
2 |
3 |
4 |
5 |
7 |
8 |
12 |
以上で、エクセルのワークシート関数だけを使って、複数の列の内容を縦に積んで重複削除してソートすることができます。