スプレッドシートで住所ソート
スプレッドシートで住所をソートすると、枝番が2桁のとかが混じっていると、変な順番でソートされるケースがある
住所 | 備考 |
---|---|
六本木1-4-36 | |
六本木1-8-12 | |
六本木2-34-30 | |
六本木3-21-24 | ここと |
六本木3-4-31 | ここが入れ替わって欲しい |
六本木7-8-5 |
それを綺麗にソートする方法
以下の3つの関数を3つのセルに設定する
- =VALUE(REGEXEXTRACT(A1,"[0-9]+"))
- =VALUE(REGEXEXTRACT(A1,"-([0-9]+)-"))
- =VALUE(REGEXEXTRACT(A1,"-([0-9]+)$"))
これを設定することで、枝番順に住所を分割する事が出来る。
REGEXEXTRACT関数を採用しているので、正規表現使える人だったら、XXX丁目みたいなパターンにも対応できるはず。 漢数字も似たような手法で抜き出して、更に正規表現を使って変換すればいい。
ポイントとなるのは、VALUE関数を使っていること。 これにより抽出した文字列を数値化して綺麗にソート出来るようにしている。 VALUE関数を使っていないと非常に頭の悪いソートになる。
最終的にソートするとこうなる
住所 | B列 | C列 | D列 |
---|---|---|---|
六本木1-4-36 | 1 | 4 | 36 |
六本木1-8-12 | 1 | 8 | 12 |
六本木2-34-30 | 2 | 34 | 30 |
六本木3-4-31 | 3 | 4 | 31 |
六本木3-21-24 | 3 | 21 | 24 |
六本木7-8-5 | 7 | 8 | 5 |
もし、住所ソートで悩んだ時は参考にして欲しい。 エクセルではREGEXEXTRACT関数が無いので、この方法は採用できないので、あしからず。 (データだけスプレッドシートにコピペして、ソートし直してからコピペするのが一番速い)
コメント
コメントを投稿