dポイントプレゼントキャンペーン実施中!

住所の番地を昇順に並び替えたいのですが、エクセルの並び替えでは数字と数字の間のハイフォンは無視されてしまうので、例えば1-2-3と1-12-3で並び替えると後者の方が先頭になってしまい正しい順序で並び替えることが出来ません。

これを正しく並び替えできる方法がありましたら教えて下さい。  宜しくお願いします。

A 回答 (5件)

>正確に並び変えるには 丁目、番、号をそれぞれ別のセルに 分解して数字で入力しないと駄目です。

#3のご回答。
これに対し、VBAですが、考えて見ました。
A列に住所があるとして、A、B列の間に4列列挿入してください。そして下記を実行してください。
ツール-マクロ-VBE
挿入-標準モジュールで出てくる画面にコピーペースト。
カーソルを途中行において、F5キーを押すと実行します。
Sub test01()
n = "0123456789"
d = Range("A1").CurrentRegion.Rows.Count
For r = 1 To d
s = Cells(r, 1)
m = ""
found = "n"
k = 2
hiphn = 0
moji = 0
For i = 1 To Len(s)
For j = 1 To 10
If Mid(s, i, 1) = Mid(n, j, 1) Then
m = m & Mid(n, j, 1)
found = "y"
GoTo p01
Else
End If
Next j
If Mid(s, i, 1) = "-" Then
hiphn = hiphn + 1
' MsgBox hiphn
Else
If found = "y" Then Exit For
End If
If found = "y" Then
If k <= hiphn + 2 Then
Cells(r, k) = m
k = k + 1
found = "n"
m = ""
Else
End If
Else
End If
p01:
Next i
If found = "y" Then
If k <= hiphn + 2 Then
Cells(r, k) = m
Else
End If
End If
Next r
End Sub
(テスト例)
新町2-23-4AIマンション305
新町2-23-5
新町2マンション1-2
新町2-3
新町2-3マンション1-4
新町2
新町3マンション3-34
に対し
B、C、D、E列は
新町2234
新町2235
新町2
新町23
新町23
新町2
新町3
になりました。
E列でソート。
BCD列でソートでどうでしょうか。

この回答への補足

ご回答大変ありがたく思います。

とても役に立つと思いましたのでやってみましたが、どういう訳か判らないのですが、実行されませんでした。

補足日時:2003/12/27 00:44
    • good
    • 0

#4の補足について


動かない理由についての推測
(1)プログラムロジックが不適切。
(1)’プログラムが入力済の住所に対して不適切。
(2)VBEの利用の不慣れ
が考えられます。
(2)について
(A)VBEの標準モジュールにプログラムコード(#4のSUBからEnd SUBまで)をコピー・貼りつけ出来ましたか。
(B)カーソルを、SUBからEnd SUBまでの、どこかの行に置いてクリックし、実行-Subユーザーフォームの実行をクリック(F5キーを押しても良い)をしましたか。
(1)(1)’ですが
この種の問題は、住所データの表現(入力済み)内容と密接にかかわってくるので(住所文字列の表現状態の「規則性を頼りに」プログラムを組んでいるので)、住所データが目の前にない、小生にとっては、完全を期すのが難しいタイプの問題です。
貴殿の既に入力済の住所の表記状態について、私のプログラムで都合が悪くなりそうなケース=困るケースを述べますので、該当・非該当をチェックして見てください。
(A)住所はA列にあること。県市からマンション名まで
1セルに入っていること。
またA1セルから、第1人目が始まっていること。BCDE列を列挿入で空白列を増やすこと。
(B)「全体が空白セル(行)」(なにも住所入力のない行)が混じってないこと。
(C)住所の文字列は「全角」文字ばかりであること。文字列途中に「空白(半角や全角)」が混じってないこと。
(D)町字までの部分に「数字がない」こと。例、1本松町、4日市などは困る。町字のあとに空白がないこと。
(E)全角ハイフンで町・番・号の間は区切りがあり、半角のハイフンでないこと。
(F)住所録のあるワークシートがアクチブになっていますか。別のシートがアクチブになっていませんか。
新しいブックのシートに住所をコピーしてやって見てください。
○「実行されません」とはどういう状態でしょうか。

この回答への補足

元のデータは地名が書かれた後のセルに(1-2-3-1101セントラルビル)というかたちで書かれていますが、漢字以外は全て半角です(カッコ、数字、ハイフォン、カタカナ)。

データが全部で約1000件分ありますので何件かをピックアップして全角に書き換えることで実行する事ができ、並べ替が確認出来ました。

補足日時:2003/12/27 23:01
    • good
    • 0
この回答へのお礼

感謝いたします。

#4で回答して頂いたデータの一部分(数字とハイフォン)を半角に修正する事によって、問題なく対応し解決することが出来ました。
本当にありがとうございました。

お礼日時:2003/12/28 11:12

問題は表示桁数があっていないからです。



正確に並び返るには 丁目、番、号をそれぞれ別のセルに
分解して数字で入力しないと駄目です。

現状のままでするなら、0を加えて桁数を同じにします。
「1-02-03」という具合です。
これだと住所印刷には使えませから隣の使わない列、
3列に入れる方法が一番です。
    • good
    • 0
この回答へのお礼

大変参考になりました。 ありがとうございました。

お礼日時:2003/12/28 11:16

そうですね、いわゆる「丁目」「番地」「号」それぞれを別のセルに入力してやるしかないでしょうか。

    • good
    • 0
この回答へのお礼

大変参考になりました。 ありがとうございました。

お礼日時:2003/12/28 11:17

そのセルは文字列でしょうか?


文字列であればそれが正しい並び順です.文字列の先頭から文字コードとして評価されるため,12よりも2のほうが大きくなります.

数値として正しい並び順を希望するなら,数字部分だけ別セルに抜き出して数値として評価するしかないと思いますよ.
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2003/12/28 11:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!