- ベストアンサー
住所編集マクロでハイフンを挿入したい
- 住所編集のマクロでハイフンを挿入したいですが、数字と数字の間のみハイフンを挿入することは可能でしょうか?
- データ例では、データ住所にはハイフンがなく、代わりに半角スペースが入っています。ハイフンが不足している場所にも半角スペースが入っていることもあります。
- 納期が迫っており、お返事を急いでおります。どなたかお力をお貸しください!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 すみません、提示したコード、ミスってましたので直しました。 それと、混乱するといけないので参照設定しないで済む書き方に替えました。 Sub Re8013103j() ' ' 正規表現を使って ' ' 「数字」「スペース」「数字」を ' ' 「数字」「-ハイフン」「数字」に置換 ' ' 該当するセルだけを置換(改) ' ' 「○○2 3 4」のような場合は2度置換(改) Dim oRegExp As Object Dim r As Range Dim s As String Set oRegExp = CreateObject("VBScript.RegExp") With oRegExp .Global = True .Pattern = "([\d0-9])[\s ]+([\d0-9])" For Each r In Range("A2:A6") ' セル範囲は適宜指定 s = r.Value If .test(s) Then s = .Replace(s, "$1-$2") If .test(s) Then s = .Replace(s, "$1-$2") End If r.Value = s End If Next End With Set oRegExp = Nothing End Sub Wordの方も一発置換ではなかったですね。 7)[すべて置換]を2度押す でした。失礼しました。
その他の回答 (3)
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。お邪魔します。 Excel VBA ?の話でしたらば、ベタな方法ですが Sub testJ() ' ' 参照設定:Microsoft VBScript Regular Exprssions 5.5 ←注目※ Dim oRegExp As RegExp Dim r As Range Dim s As String Set oRegExp = New RegExp With oRegExp .Global = True .Pattern = "([\d0-9])[\s ]+([\d0-9])" For Each r In Range("A2:A4") s = r.Value s = .Replace(s, "$1-$2") r.Value = s Next End With Set oRegExp = Nothing End Sub マクロを仕上げたいのではなく、住所編集作業を早く終わらせたい場合で、 住所を含んだ範囲を一カ所に纏めることが可能なら ExcelからWordにコピペして以下の手順で一発置換。 Excelではなく、Word VBAでしたらば、 [マクロの記録]で以下の手順を実行すれば不足ないものは出来ます。 1)Ctrl*Aで全文選択 2)[置換]ダイアログを表示 3)[オプション]を表示 4)[検索オプション]の「ワイルドカードを使用する」にチェック 5)[検索する文字列]に ([0-90-9])[ ]@([0-90-9]) 6)[置換後の文字列]に \1-\2 7)[すべて置換]を押す お急ぎということなので、とりあえず以上です。 解らないことは後からでも確認するようにしてくださいね。
- bin-chan
- ベストアンサー率33% (1403/4213)
データ住所が一列なんですね? 半角スペースを「区切り記号」として、データを区切って 並べ替えして目で見ながらから編集したほうが結果が早く確実な気がします。 ・複数列への分解 ・データの並べ替え ・連結記号(半角スペースor-)の判断 ・再連結 が必要ですが。 注意点は ・データ型を文字列にしておくこと(日付と解釈されちゃう、半角数字に変換される) ・行を元に戻すために連番付与しておくこと
お礼
並び変えの方法を本当に丁寧に教えて下さって感動しております。 今回マクロをくめという指令があったので、 使うことができなかったのですが大変勉強になりました。 本当にありがとうございます。 今度使うことがあればぜひ使わせていただきます。 ありがとうございました!!
- kamikami30
- ベストアンサー率24% (812/3335)
マクロというのは、手作業を記録して実行するということでしょうか? VBAでスクリプトを書いてもいいのでしょうか? 簡単に処理の流れとしては、 ハイフンに置き換えた後に、 各セルの住所で ハイフンの前後の文字について 前が数字でないとき、 そのハイフンを半角スペースに 後が数字でないときで、最後の文字でないとき そのハイフンを半角スペースに と変えればできると思いますよ。
お礼
早速のご回答ありがとうございます。 返事が遅れてすみません。 私が初心者なばかりに理屈を理解してもどうしたらいいのかよくわかりませんでした。 でも処理の流れがつかめました。 次に質問するまでには解説を頂けたらVBAが組めるくらいまで成長します。 この度はご回答頂き本当にありがとうございます!
お礼
わかりやすい解説しかも混乱しないようにお気づかいまで頂きありがとうございます!! とっても役に立ち無事マクロがすべて完成しました。 本当に早速の回答ありがとうございます。