住所編集のマクロを組んでいます。ハイフンをいれたいです。
データ住所にはハイフンが入っておらずかわりに半角スペースが入っています。
本来ハイフンがないであろう場所にも半角スペース入っている場合も有り。
データ例※●○◎は文字です。数字は伏せていません。
●●●市●●区●●● 3丁目 8 9 ●●マンション
○○市 ○○○区○○5丁目15 20
◎◎◎市 ◎◎◎◎ 6丁目 45 ◎◎◎◎マンション
スペースをハイフンにする置換をマクロで記録しました。
●●●市●●区●●●-3丁目-8-9-●●マンション
○○市-○○○区○○5丁目15-20
◎◎◎市-◎◎◎◎-6丁目-45-◎◎◎◎マンション
当然ですが、文字列と文字列の間や
数字と文字列の間にもハイフンが入ってしまいます。
そこで皆様よりお力添えをお願いしたいのですが、
数字と数字の間のみハイフンをいれることは可能でしょうか?
住所件数は不定期です。
上記例はA列に3行
1行目は項目なので合計で4行あると過程します。
勝手申し上げますが納期が迫っておりお返事急いでおります。
どなたかお力をお貸しください!
よろしくお願いします。
No.1
- 回答日時:
マクロというのは、手作業を記録して実行するということでしょうか?
VBAでスクリプトを書いてもいいのでしょうか?
簡単に処理の流れとしては、
ハイフンに置き換えた後に、
各セルの住所で
ハイフンの前後の文字について
前が数字でないとき、
そのハイフンを半角スペースに
後が数字でないときで、最後の文字でないとき
そのハイフンを半角スペースに
と変えればできると思いますよ。
早速のご回答ありがとうございます。
返事が遅れてすみません。
私が初心者なばかりに理屈を理解してもどうしたらいいのかよくわかりませんでした。
でも処理の流れがつかめました。
次に質問するまでには解説を頂けたらVBAが組めるくらいまで成長します。
この度はご回答頂き本当にありがとうございます!
No.2
- 回答日時:
データ住所が一列なんですね?
半角スペースを「区切り記号」として、データを区切って
並べ替えして目で見ながらから編集したほうが結果が早く確実な気がします。
・複数列への分解
・データの並べ替え
・連結記号(半角スペースor-)の判断
・再連結
が必要ですが。
注意点は
・データ型を文字列にしておくこと(日付と解釈されちゃう、半角数字に変換される)
・行を元に戻すために連番付与しておくこと
並び変えの方法を本当に丁寧に教えて下さって感動しております。
今回マクロをくめという指令があったので、
使うことができなかったのですが大変勉強になりました。
本当にありがとうございます。
今度使うことがあればぜひ使わせていただきます。
ありがとうございました!!
No.3
- 回答日時:
こんにちは。
お邪魔します。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)[すべて置換]を押す
お急ぎということなので、とりあえず以上です。
解らないことは後からでも確認するようにしてくださいね。
No.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度押す
でした。失礼しました。
わかりやすい解説しかも混乱しないようにお気づかいまで頂きありがとうございます!!
とっても役に立ち無事マクロがすべて完成しました。
本当に早速の回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) エクセルで一つのセル内の特定の数字のみ足す方法 6 2022/12/06 15:11
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GoogleAppsScript文字列置換の...
-
Excel・ユーザーフォームの情報...
-
PowerShellでテキストの空白行...
-
VBscriptで「改行」と「"」を置...
-
正規表現で、特定の文字列を含...
-
VBA 置換文字がみつからない時
-
Eclipse 改行後のタブ
-
アドレスを見れなくするには?
-
document.referrer防御
-
秀丸で数字だけの行を削除したい
-
PerlでUTF-8のファイルの文字列...
-
エクセルVBA 置換のことで...
-
ダブルコーテーション 、"を二...
-
正規表現 特定の文字列を含む行...
-
TeraPadエディターの操作方法に...
-
csvデータ ダブルクォーテ...
-
[Ecxel VBA] 山括弧(>)のエ...
-
秀丸での一括変換について
-
CSVファイルの中で、「 , 」カ...
-
VBA EXCEL あるセルの中の一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
各項目がダブルクォーテーショ...
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
スペースで区切られた氏名から...
-
csvデータのダブルクォーテーシ...
-
csvデータ ダブルクォーテ...
-
GoogleAppsScript文字列置換の...
-
C言語でテキストファイルの内容...
-
正規表現 特定の文字列を含む行...
-
テキストボックスの文字列を置...
-
EXCEL警告「置換対象のデータが...
-
TeraPadエディターの操作方法に...
-
xmlファイル内の文字列置換
-
python 大文字小文字を区別しな...
-
C#で空白行を削除する方法
-
テキストファイル中の文字列の置換
-
Excel VBA 教えてください。 VB...
-
ハングルを日本語に置換
-
EXCEL VBA でCTRL+Fのダイア...
-
PowerShellでテキストの空白行...
おすすめ情報