- 締切済み
住所の並び替え
エクセルで住所録を作っています。住所の若い順に並び替えをしたいのですが、うまくいきません。 というのも、**1丁目1-1のあとに**1丁目2-1を並べたくても**1丁目11-1のように並んでしまいます。一桁が先に並ぶ方法がないでしょうか?とっても困ってます!!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- siskin
- ベストアンサー率18% (9/49)
住所データの入っているセルを指定して、 ツールバーの「データ」→「区切り位置」で 「カンマやタブなど・・・」を選択して次へ 区切り文字を「-」としてセルを分割して 並べ替えると上手くいくと思います。 同じような質問が他に出てますので、詳しくは そちらの回答を参考になさっては如何でしょう?
- gakushaneko
- ベストアンサー率68% (2350/3407)
それでは,私はNo.1のgonta_gomaさんの方法をもう少しすっきりとさせたやつを・・・。 **1丁目 1- 1 **1丁目 2- 1 **1丁目11- 1 とスペースを入れるのはどうでしょう? 軒数が多い場合は,No.2のnishi6さんの方法で・・・。
- nishi6
- ベストアンサー率67% (869/1280)
住所の数が多かったり、**1丁目02-01とかの入力にしたくない場合の対応例です。 住所の『番地、号』部分を2桁化するユーザー定義関数を作ってみました。これでソートします。 例えば、住所の列の横(C列として)に1列挿入(D列)して、D列に、=番地補正(C2) のようにします。 『番地、号』部分が2桁化されると思うので、この列を基準にソートします。 通常は、この列を非表示にしておけば気にならないでしょう。 『丁目と-』を基準に考えています。入力具合が完全には分かりませんが、うまくいかない場合があれば補足して下さい。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、 挿入→標準モジュールで標準モジュールを挿入します。出てきたコードウインドウに下記マクロを貼り付けます。 Public Function 番地補正(rg As Range) Dim Jyusyo As String '住所 Dim pot1 As Integer '丁目の位置 Dim pot2 As Integer '『-』の位置 Dim wk1 As String '『-』以下の1文字のチェック用変数 Dim wk2 As String '『-』以下の2文字のチェック用変数 Jyusyo = rg.Text Jyusyo = Application.Substitute(Jyusyo, "-", "*") '号の後の『-』を無視するため Jyusyo = Application.Substitute(Jyusyo, " ", "*") '号の後の『 』を無視するため '番地の2桁化 pot1 = InStr(Jyusyo, "丁目") + 1 pot2 = InStr(pot1, Jyusyo, "*") If pot2 - pot1 = 2 Then Jyusyo = Left(Jyusyo, pot1) & "0" & Right(Jyusyo, Len(Jyusyo) - pot1) End If '号の2桁化 pot2 = InStr(pot1, Jyusyo, "*") wk1 = Mid(Jyusyo, pot2 + 1, 1) wk2 = Mid(Jyusyo & "*", pot2 + 1, 2) If IsNumeric(wk1) = True And IsNumeric(wk2) = False Then Jyusyo = Left(Jyusyo, pot2) & "0" & Right(Jyusyo, Len(Jyusyo) - pot2) End If 番地補正 = Jyusyo End Function
- gonta_goma
- ベストアンサー率50% (37/73)
**1丁目01-01 **1丁目02-01 **1丁目11-01 という風に桁数をそろえたらどうでしょうか。
お礼
とりあえずやってみたのですが、うまくいきませんでした。データが大量なので、この方法をもう少し研究してみたいと思います。ありがとうございました。