[[20140923133428]] 『各セルの文字列から【数字】以後を削除する』(じゅじゅ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『各セルの文字列から【数字】以後を削除する』(じゅじゅ)

要約の件が、どうしてもわからず困っております。。

P列3行目以下に住所が入力されているのですが、
●●丁目を含めて詳しい住所は不要なので、
数字以後を削除するマクロを作りたいです。

自分で調べた結果、以下のマクロを考えたのですが、
検索文字列にどう入れればよいか分からず困っております。

===============
Sub 各セルの文字列から数字以後を削除する()

    下端行 = Range("P500").End(xlUp).Row       'データの下端行を取得
    For 行 = 3 To 下端行
        位置 = Application.WorksheetFunction.Search("[1-9]", Range("P" & 行), 1)
        住所 = Left(Range("P" & 行).Value, 位置 - 1)
        Range("P" & 行).Value = 住所
        Next
End Sub
===============
検索文字列の数字は[半]数字ではなく、[全]数字です。
マクロ初心者です。。
よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 >●●丁目以降の詳しい住所は不要なので、
 でしたら、置換で「丁目」を「丁目♪」などとし
 区切り文字に「♪」を指定して分割してはどうですか?
  
(HANA) 2014/09/23(火) 14:00

>●●丁目以降の詳しい住所は不要なので
●●丁目○○番地○○号...が不要で、町名までが必要と言うことですね
(wisemac21) 2014/09/23(火) 14:12

HANAさん wisemac21さん

早速アドバイスありがとうございます!
実は、「丁目」が省略されている人もいるんです…
wisemac21さんの言う通り、●●丁目も含めて削除しちゃって大丈夫なので、
【数字】以後を削除したいと考えております。
(じゅじゅ) 2014/09/23(火) 14:16


 関数弱いんですけれど、Search って "[1-9]" の検索できましたっけ?

 正規表現で使えば、こんな感じかと思います。
 Sub 各セルの文字列から数字以後を削除する()
    下端行 = Range("P500").End(xlUp).Row
    With CreateObject("VBScript.RegExp")
        .Pattern = "[1-9].*$"
        For 行 = 3 To 下端行
            Set re = .Execute(Range("P" & 行).Value)
            If re.Count > 0 Then Range("P" & 行).Value = Replace(Range("P" & 行).Value, re(0), "")
        Next
    End With
 End Sub

(Mook) 2014/09/23(火) 14:50


マクロは分かりませんので、数式ですが
A1セルに住所データがあると
=SUBSTITUTE(A1,MID(A1,AGGREGATE(15,6,FIND({"1";"2";"3";"4";"5";"6";"7";"8";"9";"0"},A1),1),20),"")
削除するのを最初の数字から20文字にしていますので、適当に数字を変更してください。
(wisemac21) 2014/09/23(火) 14:52

 計算式で一個ずつ見る案!
    Sub juju()
        Dim 住所, i As Long
        住所 = Application.Transpose(Range("P3", Range("P" & Rows.Count).End(xlUp)).Value)
        For i = 1 To UBound(住所)
            住所(i) = Evaluate("LEFT(""" & 住所(i) & """,MIN(IFERROR(FIND(IF(ROW(1:10),ROW(1:10)-1),ASC(""" & 住所(i) & """)),1000))-1)")
        Next i
        Range("Q3").Resize(UBound(住所)).Value = Application.Transpose(住所)
    End Sub

(稲葉) 2014/09/23(火) 15:18


 >●●丁目○○番地○○号...が不要で、町名までが必要と言うことですね 

 そうですね。すみません。
 関数だと
 =LEFT(P3,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(P3)&"0123456789"))-1)
 ってのはどうですか?
  
(HANA) 2014/09/23(火) 15:29

Mookさん 稲葉さん

見事に思い通りにできました!
本当にありがとうございました><。。感謝します!

wisemac21さん HANAさん

関数でも実現可能なのですね!
大変勉強になりました><
ありがとうございました!
(じゅじゅ) 2014/09/24(水) 19:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.