• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで住所データに基づきを順序に並べ替える)

Excelで住所データを順序に並べ替える方法

このQ&Aのポイント
  • Excelで住所データを規則に従って順序に並べ替える方法を解説します。
  • 住所データは「あ地区」「い地区」「う地区」の順に優先し、各地区内では町名のアルファベット順で並べ替えます。
  • また、同じ町内の住所は丁目、番、号の数字の小さい順に並べます。効率的な並べ替え方法を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

とにかく今のままで並び替えれば,地区の順,住民基本台帳の順は間違っているかもしれませんが,並びます。 それから全ての地区名と対応する町名,優先順位を使って,隣のセルにその順になるような番号を振ればよいでしょう。ある程度のかたまりになっているはずですから,効率よく出来るでしょう。 それから再び,番号と元データを使って並び替えれば出来上がるはずです。

okhotsk
質問者

お礼

ありがとうございます。 何とか関数を組んでこの発想でできました。 (No2の方の所に方法を記載しました)

その他の回答 (3)

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.4

> どのように操作すれば効率よく並べ替えできるでしょうか。 本気でやろうと思っているなら データを半分作り替えるくらいの心づ もりが必要です。 例えば「11番」は「11」という数値ではなく単なる文字列なので「1番」 よりもソート順は若くなります。なので別セルに分けて数値化しないと 単純なソートは不可能です。 手順を書きます。 1. 町名から地区名を判断する列を別に用意する 2. 「丁目」「番」「号」を数値として抜き出す処理を行い別セルに表示させる 3. フィルタ機能で「号」「番」「丁目」「地区名」の順に昇順に並べ替えを実行する 2が大変だろうなと思います。何となく「簡単にできたらいいなー」くら いの感覚だったのなら 手で修正した方がいいかもしれません。 これをいっては元も子もないでしょうが 後でどういう風に使うかを考えてから その手の情報は入力しないといけません。

okhotsk
質問者

お礼

ありがとうございます。 2の数値として抜き出す方法が分かったので、何とかできました。 (No2の方の所に方法を記載しました)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

質問の仕方から勝手に判断すると、Excel初心者の貴方の現段階では、住所録の[並べ替え]は無理です。 文字コード、ふりがな、全(半)角文字、等々の[並べ替え]への影響を理解しておく必要があります。

okhotsk
質問者

お礼

ありがとうございます。 私には難易度高かったですが、何とかできました。 (No2の方の所に方法を記載しました)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

文字列の並び換えになりますので、文字コード順になります。 丁目は1桁と思いますが番と号は複数桁になるでしょうから桁数を合わせないと順番が思った通りになりません。 例えばB町5丁目11番5号、B町5丁目1番5号では昇順でB町5丁目11番5号が上位になります。 従って、最大桁数に合わせて数字の前方に半角の空白を加える必要があるでしょう。 或は、地区、町名、丁目、番、号を元にコード化してコードによる並び順を考える必要があるかも知れません。 あなたの管理に都合の良い並び順はあなたしか分かりませんので、ご自身が工夫して使い易くしてください。

okhotsk
質問者

お礼

ありがとうございます。 町名、丁目、番、号 をコード化するなどして、自動並べ替えすることができました。 (町名だけで上下関係が判断できるため地区は考慮しませんでした。) 町名のコード化: =IF(COUNTIF(F1,"*平和町*"),"02",IF(COUNTIF(F1,"*平和中央*"),"03",IF(COUNTIF(F1,"*平和*"),"01",IF(COUNTIF(F1,"*ひばりが丘*"),"04",IF(COUNTIF(F1,"*緑ヶ丘*"),"05",・・・ 全町名に対してコードを付与するための関数です。 平和、平和町、平和中央のように文字が被る町名がある場合、他と被る文字を一番最後に持ってくる必要があります。(平和はコード01ですが、関数で先に持ってくると他の平和が付く町名もワイルドカードで01に設定されてしまうため) F列は丁目/番/号に正規化した住所が入っている列です。 丁目のコード化: =IF(COUNTIF(F1,"*1丁目*"),"01",IF(COUNTIF(F1,"*2丁目*"),"02",IF(COUNTIF(F1,"*3丁目*"),"03",IF(COUNTIF(F1,"*4丁目*"),"04",IF(COUNTIF(F1,"*5丁目*"),"05",IF(COUNTIF(F1,"*6丁目*"),"06",IF(COUNTIF(F1,"*7丁目*"),"07",IF(COUNTIF(F1,"*8丁目*"),"08",IF(COUNTIF(F1,"*9丁目*"),"09","Error?")))))))) 番のコード化: =MID(F1,FIND("目",F1)+1,FIND("番",F1)-1-FIND("目",F1)) 号のコード化: =MID(F1,FIND("番",F1)+1,FIND("号",F1)-1-FIND("番",F1)) ※町名、丁目のコード化で01、02のように2桁にする必要ないことを後から気づきました。 以上で、町名、丁目、番、号それぞれのコードを付与できるので、Excelのユーザー設定の並べ替えで町名、丁目、番、号の優先順で並べ替えすることでできました。 皆さまからのご教示ありがとうございました。

関連するQ&A