- ベストアンサー
EXCEL(エクセル)で、シート上のすべての任意アルファベットの横に一桁の任意数字があるセルを変換したい
EXCEL(エクセル)で、シート上のすべての任意アルファベットの横に一桁の任意数字があるセルを、次に示すセルに変換する方法を教えていただけないでしょうか。(\d一桁の任意数字\n)の横に上記の任意アルファベットがあるセル。実際には()はつけないでください。 例、 H2Oを、H\d2\nOに置換。 O2を、O\d2\nに置換。 ただし、数式のセルは変更しないようにしてください。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#01です。このようなマクロになるかと思います。 もう少し整理すればスッキリすると思いますが、それは質問者さまが自由に手を入れてください。 Option Explicit Sub Macro3() Dim RE, strPattern, repPattarn, trgStr As String Dim r As Range, i As Integer, mchItem Set RE = CreateObject("VBScript.RegExp") strPattern = "[A-Z]\d" With RE .Pattern = strPattern ''検索パターンを設定 .IgnoreCase = True ''大文字と小文字を区別しない .Global = True ''文字列全体を検索 For Each r In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 3) trgStr = r.Formula Set mchItem = .Execute(trgStr) If mchItem.Count > 0 Then For i = mchItem.Count - 1 To 0 Step -1 repPattarn = Left(mchItem(i).Value, 1) & "\d" _ & Right(mchItem(i).Value, 1) & "\n" If Len(trgStr) - 2 = mchItem(i).FirstIndex Then trgStr = Left(trgStr, Len(trgStr) - 2) & repPattarn Else trgStr = Left(trgStr, mchItem(i).FirstIndex) & repPattarn _ & Right(trgStr, Len(trgStr) - mchItem(i).FirstIndex - 2) End If Next i r.Formula = trgStr End If Next r End With Set RE = Nothing End Sub
その他の回答 (2)
何だか、自分は何もしないオネダリのような質問ですが… =LEFT(A1,1)&"\d"&MID(A1,2,1)&"\n"&MID(A1,3,1) では如何?
お礼
ありがとうございます。試してみましたが、エラーになってしまいました。
- zap35
- ベストアンサー率44% (1383/3079)
前回の質問では「H2Oを、H\d2\n」となっていたので難しいと思ったのですが今回の内容なら Ctrl+Hで置換ウィザードを開き「検索する文字列」に H2 、「置換後の文字列」に H\d2\n を入力するのが一番簡単ではないでしょうか。 もしマクロでやりたい場合は補足してください
お礼
ありがとうございます。実は、ご回答にあるような方法で作業をしていました。
補足
マクロで実行する方法を教えていただけないでしょうか。
お礼
ありがとうございます。作業がとても楽になりました。