[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『各セルの文字列から【数字】以後を削除する』(じゅじゅ)
要約の件が、どうしてもわからず困っております。。
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: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
計算式で一個ずつ見る案! 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
見事に思い通りにできました!
本当にありがとうございました><。。感謝します!
wisemac21さん HANAさん
関数でも実現可能なのですね!
大変勉強になりました><
ありがとうございました!
(じゅじゅ) 2014/09/24(水) 19:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.