- ベストアンサー
エクセル 英数字の後のハイフンの置換
エクセルの表でA列に 「〇○センター10ーA」 「株式会社OkーWaveオーケー1号店」 ↓ 「〇○センター10-A」 「株式会社Ok-Waveオーケー1号店」 のように、英数字の間にある「ー」のみ「-」のハイフンに置換するには、どうしたら良いでしょうか? 何万件とデータがあるので関数などがあれば教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この手の地道な作業こそマクロの出番です。 この機会に手を出してみては? Sub Sample() '数字の置換 Call fReplace("0", "9") '英大文字の置換 Call fReplace("A", "Z") '英小文字の置換 Call fReplace("a", "z") End Sub Function fReplace(sStart, sEnd) For i = Asc(sStart) To Asc(sEnd) Columns("A:A").Replace What:=Chr(i) & "ー", Replacement:=Chr(i) & "-" Next i End Function
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
ユーザー定義関数を正規表現でやってみては? Alt + F11 でVBEの画面に切り替えます。 メニューの挿入から標準モジュールを選択。 コードウィンドウが開くので下記をコピペ。 Function chgH(r As Range) As String Dim oReg As Object Dim m As Object, mc As Object Set oReg = CreateObject("vbscript.regexp") chgH = r.Value With oReg .Global = True .IgnoreCase = True .Pattern = "[0-9a-z0-9a-z][ー][0-9a-z0-9a-z]" End With Set mc = oReg.Execute(chgH) For Each m In mc chgH = Replace(chgH, m.Value, Replace(m.Value, "ー", "-")) Next Set oReg = Nothing End Function Alt + F11 でExcelの画面に戻して 空いているセルB1かな? に =chgh(A1) として下へズズーとコピー。 動作がとろいかもしれません。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19841)
残念ながら、一発で置換する方法は無いので、半角と全角を区別するモードにした上で 「0ー」を「0-」に置換(「0」が半角) 「0ー」を「0-」に置換(「0」が全角) 「1ー」を「1-」に置換(「1」が半角) 「1ー」を「1-」に置換(「1」が全角) 「2ー」を「2-」に置換(「2」が半角) 「2ー」を「2-」に置換(「2」が全角) (中略) 「9ー」を「9-」に置換(「9」が半角) 「9ー」を「9-」に置換(「9」が全角) 「aー」を「a-」に置換(「a」が半角) 「aー」を「a-」に置換(「a」が全角) (中略) 「zー」を「z-」に置換(「z」が半角) 「zー」を「z-」に置換(「z」が全角) 「Aー」を「A-」に置換(「A」が半角) 「Aー」を「A-」に置換(「A」が全角) (中略) 「Zー」を「Z-」に置換(「Z」が半角) 「Zー」を「Z-」に置換(「Z」が全角) のように、置換を124回行うしかありません。
お礼
回答ありがとうございます! そうですよね…地道にやるしかないですよね…
お礼
回答ありがとうございます! マクロですか…!マクロは未経験なので、少し調べて挑戦してみます!