• 締切済み

住所の並び替え

nishi6の回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

住所の数が多かったり、**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

kimikimi
質問者

お礼

とりあえずやってみたのですが、うまくいきませんでした。データが大量なので、この方法をもう少し研究してみたいと思います。ありがとうございました。

関連するQ&A

  • EXCEL2003で住所の並び替えがうまくいきません

    EXCEL2003で住所録を作成しています。 A.○○市○○町1丁目1番1号 B.○○市○○町1丁目2番1号 C.○○市○○町1丁目11番1号 ABCのように並べたいのですが、番地の部分の2より11が優先されて しまい、BよりCのほうが上にきてしまいます。 番地を01のように入力することも考えましたが、見栄えが悪くなるので やめました。 何か並び替えの良い方法はないでしょうか?

  • エクセル2007の並び替えについて質問です。

    エクセル2007の並び替えについて質問です。 元データの数字を昇順で並び替えると☆1のようになってしまいます。二桁もしくは三桁の数字が混じっても☆2のように並び替えることは可能ですか? ※元データは他のデータベースから取り込んでいるため手を加えることは出来ません。番地表示としてのデータですので、丁目・番地・枝番が同セル内に存在します。 元データ 1-3-12 1-3-5 1-3-8 1-4-1 1-4-9 1-5-10 1-10-1 ☆1 1-10-1 1-3-12 1-3-5 1-3-8 1-4-1 1-4-9 1-5-12 ☆2 1-3-5 1-3-8 1-3-12 1-4-1 1-4-9 1-5-10 1-10-1

  • エクセルの並び替え

    こんにちは。エクセルの並び替えの方法を教えてください。 たとえば,18081235 たい      19852354 なな      15879856 しょうこ      44578973 みほ      56873864 きみへ 以上の番号と名前を下四桁で並び替えたいのですが,そうすれば良いでしょうか?エクセル2003です。

  • Excelの住所による並び替え

    Excel2010を使用しています。 A列 顧客名 B列 住所 C列 顧客履歴 のデータがあります。 C列の顧客データはA列の顧客に対して複数行あります。 このとき、住所のB列で地域ごとに並び替えをしたいと考えています。 住所は、○○県○○市○○町1-2-3のようになっています。 しかし住所登録によっては、 ○○県○○郡○○町1-2-3 ○○市○○町1-2-3 のように、入力した人や時期(市町村統合前の状態)によって形式が違います。 「○○町」の部分を使って並び替えをするために、ユーザー設定リストで、町名リストを北から南の町名順で作成してそれを使って並び替えをしてみましたが、上手く反映しません。 ユーザー設定リストの作り方や、マクロの組み方があれば教えていただけないでしょうか?

  • エクセル 数字並び替え

    エクセルの数字並び替えにて優先順位を2桁目にして 出力するにはどうしたらよいでしょうか? 1つのセルに数字が3桁があります。それが5行あります。 エクセルの並び替えを使用すると、1桁目を基準に下記のようになりますが ----- 211 ----- 305 ----- 311 ----- 454 ----- 502 ----- このようにではなく下記のように優先順位を2桁目以降にし 順番に並び替えをしたいです。 ----- 502 ----- 305 ----- 211 ----- 311 ----- 454 ----- 宜しくお願い致します。

  • エクセルでの並び替えについて

    住所録で都道府県順に並び替えるたにデーター 並び替えを活用すると下記の順番になります。(あいうえ順である。)    1番に京都 2番に神戸 3番に奈良 4番に和歌山 並び替えのオプション以外の方法で並び替える方法は、ありませんか。 (自分の好きな順に) (例)1番に奈良 2番に和歌山 3番に神戸 4番に京都の順に変更できませんか。

  • エクセルの並び替えについてなのですが・・・

    エクセルでの並び替えに関しての質問なのですが、 例えば 12345 あ 12345 い 12345 う 12345 え 23456 あ 23456 い 34567 あ 34567 い 34567 う 45678 あ 45678 い というように11個の数値があるとき、同じ値が多い順または少ない順にまとめて並べ替えることは可能でしょうか? 上の場合だと12345が4つ、23456と45678が2つずつ、34567が3つなので、 23456 あ 23456 い 45678 あ 45678 い 34567 あ 34567 い 34567 う 12345 あ 12345 い 12345 う 12345 え というようにしたいのですが、エクセルをまだ使い慣れておらずうまくできません。どなたか教えていただけませんか? よろしくお願いします。 (既出でしたら申し訳ありません。探したのですが見つからなくて・・・。)

  • Excel の並び替え機能について

    Excel の並び替え機能について質問です。デフォルトでは「記号・数字・アルファベット」 の順に昇順/降順されますが、これを「記号・アルファベット・数字・(日本語)」 の順に並び替える方法を教えてください。 並び替えオプションでやってみたのですがうまくいきません。宜しくお願いします。

  • 【中国人に住所について質問です。】中国の住所の後ろ

    【中国人に住所について質問です。】中国の住所の後ろに1000-1130-1という番地みたいな番号が付いていたのですが、 日本の住所は丁目ー番地がありますが、中国は4桁の丁目、4桁の番地、1桁の何ですか? しかしこの住所の番号はないそうです。 この住所の後ろの数字はなんですか?

  • エクセルでデータの並び替え

    お尋ねします。 エクセルでデータの並び替えをしたいのです。具体的にいいますと、エクセルで茶道サークルの会員名簿を作ったのですが、それを『あいうえお』順ではなく『いろは・・・』順で並び替えしたいのです。 『あいうえお』順には私でも簡単に並び替えることはできるんですが、『いろは・・・』順は・・・。 オフィス自体、『いろは・・・』なんてことを想定して作られていないから無理なのでしょうか? もしできるとしても、関数とかを用いないとできないのでしょうか?簡単に並び替える方法があればご教示下さい。