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 |
以上で、エクセルのワークシート関数だけを使って、複数の列の内容を縦に積んで重複削除してソートすることができます。