dポイントプレゼントキャンペーン実施中!

エクセルの表でA列に

「〇○センター10ーA」
「株式会社OkーWaveオーケー1号店」

「〇○センター10-A」
「株式会社Ok-Waveオーケー1号店」

のように、英数字の間にある「ー」のみ「-」のハイフンに置換するには、どうしたら良いでしょうか?

何万件とデータがあるので関数などがあれば教えていただきたいです。

A 回答 (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
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
マクロですか…!マクロは未経験なので、少し調べて挑戦してみます!

お礼日時:2013/05/09 13:33

ユーザー定義関数を正規表現でやってみては?


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) として下へズズーとコピー。
動作がとろいかもしれません。
    • good
    • 0

残念ながら、一発で置換する方法は無いので、半角と全角を区別するモードにした上で



「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回行うしかありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
そうですよね…地道にやるしかないですよね…

お礼日時:2013/05/09 12:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!