- ベストアンサー
EXCEL VBA 文字列
A列のセルに、文字列が以下の様に並べられています。 【あああああ】いいいいいいううううううえええおおおお 上記のような場合に、”あああああ”と【】の文字だけを取り出して、B列に表示させることはマクロで可能でしょうか?但し、【】のなかの文字数はセルによりバラバラです。 ネットでかなり検索したのですが、自分では解決できませんでした。 どうか、よろしくお願いいたします。
- みんなの回答 (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
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 横からお邪魔します。 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
お礼
ありがとうございます!
- cma3atgoo
- ベストアンサー率35% (32/90)
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)
お礼
ありがとうございます。最終行まで繰り返すにはどうすればよいでしょうか?
お礼
ありがとうございます!