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

エクセル2013を使用しています。
とあるデータの住所列の「丁目」「番」「号」「番地」を「-(半角)」か削除したいのです。

例:住所列を「A列」とします。
1、○○市○○1丁目2番3号
2、○○市○○2番3号
3、○○市○○2番地3
4、○○市○○2番地

Dim i As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
Cells(i, 1) = Replace(Cells(i, 1), "丁目", "-")
Cells(i, 1) = Replace(Cells(i, 1), "番", "-")
Cells(i, 1) = Replace(Cells(i, 1), "地", "")
Cells(i, 1) = Replace(Cells(i, 1), "号", "")
Next i
End Sub

1の「丁目」は Replace を使って「-(半角)」にし、「号」は削除してOKになります。
残りの2と3だけならば、「番」も「-(半角)」に、「地」は削除すれば済むのですが、
そうすると、4が「○○市○○2-」となってしまいます。
最後の「-」を削除する記述を考え、探してもみたのですが分かりませんでした。
変換の方法でも、最後の「-」を削除する方法でも良いのでお教えいただけないでしょうか?
よろしくお願いいたします。m(__)m

A 回答 (5件)

Cells(i, 1) = Replace(Cells(i, 1), "号", "")・・・の後へ



If Right(Cells(i, 1), 1) = "-" Then
Cells(i, 1) = Left(Cells(i, 1), Len(Cells(i, 1)) - 1)
End If

を追加してください。
    • good
    • 1
この回答へのお礼

ありがとうございます。
Right、Leftも探ってみたのですが、理解できていなかったみたいです(^^;)
完成に1歩近づきました。

お礼日時:2017/03/21 19:16

ちなみに別のセルでPHONETIC関数を使えば


郵便番号の引き当てできる住所かどうかが
判りますので。
    • good
    • 0
この回答へのお礼

ありがとうございます。調べてみます(^^;)

お礼日時:2017/03/21 19:18

こんばんは!



一例です。

Sub Sample1()
Dim i As Long, k As Long, myAry As Variant
'//まず一気に置換//
myAry = Array("丁目", "番", "地", "号")
With Range("A:A")
For k = 0 To UBound(myAry)
If k < 2 Then
.Replace what:=myAry(k), replacement:="-"
Else
.Replace what:=myAry(k), replacement:=""
End If
Next k
End With
'//最後一文字が「-」の場合の処理//
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
With Cells(i, "A")
If Right(.Value, 1) = "-" Then
.Value = Replace(.Value, Right(.Value, 1), "")
End If
End With
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さんのマクロでも出来ました。
まだまだ勉強不足で「一気に」と記述できませんが、参考にさせていただきますm(__)m

お礼日時:2017/03/21 19:21

だめだと思いますよ。


世の中には地、番、号 等を含む地名が多々ありますから。
郵便番号と照らし合わせて前をどけてから処理すべきじゃないですか?

で、いちいちセルに戻してますけど、変数に取り込んでやる方が
うんと早いですよ。

最後の「-」を削除する方法は
right$(ほにゃらか,1)が”-"の場合でいいんじゃないですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
うっ、まだ「変数に取り込む」ところまで頭が付いて行っていないんです(^^;)

お礼日時:2017/03/21 18:49

置換を使う

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

ありがとうございます。置換が「Replace」だと思うのですが(^^;)

お礼日時:2017/03/21 18:47

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A