• ベストアンサー

EXCEL(エクセル)で、シート上のすべての任意アルファベットの横に一桁の任意数字があるセルを変換したい

EXCEL(エクセル)で、シート上のすべての任意アルファベットの横に一桁の任意数字があるセルを、次に示すセルに変換する方法を教えていただけないでしょうか。(\d一桁の任意数字\n)の横に上記の任意アルファベットがあるセル。実際には()はつけないでください。 例、 H2Oを、H\d2\nOに置換。 O2を、O\d2\nに置換。 ただし、数式のセルは変更しないようにしてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.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

rounin3
質問者

お礼

ありがとうございます。作業がとても楽になりました。

その他の回答 (2)

noname#204879
noname#204879
回答No.2

何だか、自分は何もしないオネダリのような質問ですが… =LEFT(A1,1)&"\d"&MID(A1,2,1)&"\n"&MID(A1,3,1) では如何?

rounin3
質問者

お礼

ありがとうございます。試してみましたが、エラーになってしまいました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

前回の質問では「H2Oを、H\d2\n」となっていたので難しいと思ったのですが今回の内容なら Ctrl+Hで置換ウィザードを開き「検索する文字列」に H2 、「置換後の文字列」に H\d2\n を入力するのが一番簡単ではないでしょうか。 もしマクロでやりたい場合は補足してください

rounin3
質問者

お礼

ありがとうございます。実は、ご回答にあるような方法で作業をしていました。

rounin3
質問者

補足

マクロで実行する方法を教えていただけないでしょうか。

関連するQ&A