Excelの文字の抽出について質問です。 以前、スプレットシートの関数を使ったやり方を教わりました。 抜き出したいのは図のようなパターンです。 I,J列で空白になってしまっているところを埋めたいです。 例えば、三郷から柏の間は全角と半角スペースが入り交ざってます。 前回の質問はこちら https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11297742591 標準モジュールに、 Function Regexreplace(Expression As String, num As Long) As String Dim arr() As String, i As Integer, msg As String Dim reg As Object Set reg = CreateObject("VBScript.RegExp") With reg .Pattern = "([A-Za-z0-90-9 ETC 首都高速 特別割引])" .IgnoreCase = False .Global = True End With Dim str1 As String, str2 As String str1 = Expression str2 = reg.Replace(str1, "") arr = Split(str2, "→") msg = str2 & vbCrLf If InStr(msg, "→") > 0 Then If num = 1 Then Regexreplace = Split(msg, "→")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, "→")(num - 1), vbLf)(0) ElseIf InStr(msg, "一") > 0 Then If num = 1 Then Regexreplace = Split(msg, "一")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, "一")(num - 1), vbLf)(0) ElseIf InStr(msg, "-") > 0 Then If num = 1 Then Regexreplace = Split(msg, "-")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, "-")(num - 1), vbLf)(0) ElseIf InStr(msg, "⇔") > 0 Then If num = 1 Then Regexreplace = Split(msg, "⇔")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, "⇔")(num - 1), vbLf)(0) ElseIf InStr(msg, "⇒") > 0 Then If num = 1 Then Regexreplace = Split(msg, "⇒")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, "⇒")(num - 1), vbLf)(0) ElseIf InStr(msg, "~") > 0 Then If num = 1 Then Regexreplace = Split(msg, "~")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, "~")(num - 1), vbLf)(0) ElseIf InStr(msg, " ") > 0 Then If num = 1 Then Regexreplace = Split(msg, " ")(num - 1) If num = 2 Then Regexreplace = Split(Split(msg, " ")(num - 1), vbLf)(0) End If End Function と書き込み、I列には =Regexreplace(B2,1) J列には =CLEAN(Regexreplace(B2,2)) と関数が入っております。 何度も恐縮ですがどうか皆様のお知恵を拝借したくよろしくお願い申し上げます。
Visual Basic