アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで住所録を作っています。住所の若い順に並び替えをしたいのですが、うまくいきません。
というのも、**1丁目1-1のあとに**1丁目2-1を並べたくても**1丁目11-1のように並んでしまいます。一桁が先に並ぶ方法がないでしょうか?とっても困ってます!!

A 回答 (4件)

**1丁目01-01


**1丁目02-01
**1丁目11-01 という風に桁数をそろえたらどうでしょうか。
    • good
    • 0

住所の数が多かったり、**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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/02/19 18:55

それでは,私はNo.1のgonta_gomaさんの方法をもう少しすっきりとさせたやつを・・・。



**1丁目 1- 1
**1丁目 2- 1
**1丁目11- 1

とスペースを入れるのはどうでしょう?
軒数が多い場合は,No.2のnishi6さんの方法で・・・。
    • good
    • 0

住所データの入っているセルを指定して、


ツールバーの「データ」→「区切り位置」で
「カンマやタブなど・・・」を選択して次へ
区切り文字を「-」としてセルを分割して
並べ替えると上手くいくと思います。

同じような質問が他に出てますので、詳しくは
そちらの回答を参考になさっては如何でしょう?

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=260031
    • good
    • 0

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