• ベストアンサー

EXCEL VBA 文字列

A列のセルに、文字列が以下の様に並べられています。 【あああああ】いいいいいいううううううえええおおおお 上記のような場合に、”あああああ”と【】の文字だけを取り出して、B列に表示させることはマクロで可能でしょうか?但し、【】のなかの文字数はセルによりバラバラです。 ネットでかなり検索したのですが、自分では解決できませんでした。 どうか、よろしくお願いいたします。

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

  • ベストアンサー
回答No.3

【 】が、一組しかないのなら、これで良いと思います。 標準モジュールに登録してください。 '// Sub PickupWords()  Dim Matches As Object  Dim Match As Object  Dim buf As String  Dim c As Variant  With CreateObject("VBScript.RegExp")   .Pattern = "【(.+)】"   .Global = False   Application.ScreenUpdating = False   For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))    If .Test(c.Value) Then     buf = c.Value     Set Matches = .Execute(buf)    c.Offset(, 1).Value = Matches.Item(0).SubMatches(0) '括弧の中を取り出す    End If   Next c   Application.ScreenUpdating = True  End With End Sub

urashiba12
質問者

お礼

ありがとうございます!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 横からお邪魔します。 No.1さんとほぼ同じコトになりますが・・・ Sub Sample1() Dim i As Long, stStr As Long, edStr As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row '←A列1行目から最終行まで If InStr(Cells(i, 1), "【") > 0 And InStr(Cells(i, 1), "】") > 0 Then '【 】が両方存在すれば '(必ず【 】が存在するのであれば↑の1行は不要) stStr = InStr(Cells(i, 1), "【") + 1 edStr = InStr(Cells(i, 1), "】") Cells(i, 2) = Mid(Cells(i, 1), stStr, edStr - stStr) End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m

urashiba12
質問者

お礼

ありがとうございます!

  • cma3atgoo
  • ベストアンサー率35% (32/90)
回答No.1

VBAならコレで Dim str As String Dim stchar As String Dim edchar As String stchar = "【" edchar = "】" str = ThisWorkbook.ActiveSheet.Cells(1, 1).Value str = Mid(str, InStr(1, str, stchar) + 1, _ InStr(1, str, edchar) - InStr(1, str, stchar) - 1) ThisWorkbook.ActiveSheet.Cells(1, 2).Value = str セル関数ならコレで =MID(A1,FIND("【",A1,1)+1,FIND("】",A1,1)-FIND("【",A1,1)-1)

urashiba12
質問者

お礼

ありがとうございます。最終行まで繰り返すにはどうすればよいでしょうか?

関連するQ&A