• ベストアンサー

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

  • VBAでの文字列検索

    セルA1からA5に文字列があり 名前が以下のように表示されています。 富田(男) 渡辺(男) 松浪(女) 小牧(男) 和佐(女) 上記の文字列で(以下の文字列を消してB1~B5に編集した文字を表示する場合ってどうすればいいでしょうか? つまり B1からB5には以下のように表示させたいです 富田 渡辺 松浪 小牧 和佐 以上 よろしくお願い致します

  • エクセル 特定の文字列を抽出・挿入

    例えば A列にあるセルの中から特定の文字列を検索・抽出して、その特定の文字列だけB列に挿入していく関数はありますか? またはA列にあるセルの中から特定の文字列に挟まれた文字列を検索・抽出してその特定の文字列だけB列に挿入していく関数はありますか? マクロを組まないと難しいのでしょうか?

  • エクセルである文字列をカウントしたい

    例えば、シート1のA列のセルごとに下記のいずれかの文字列が入っているとします。(文字列の1部ではなく、完全一致の文字列です。) おはよう こんにちは こんばんは そこで、シート2で上記の各文字列が記入されているセルがいくつあるか集計したいのですが、どうしたらよいでしょうか。 シート2は、A列に上記3つの文字列、B列にはそれぞれのカウント数を入れようと思っています。

  • エクセル2003 VBAなのですが

    エクセル2003 VBAなのですが   A   B    C    D    E    F 1 あ   い   う   お   う   123 2 お   さ   え   あ   お   お 3 あ   い   え   お   え   888 上記のような表があるときに 3個以上同じ文字がある場合にセルに色をつけていきたい状況です 上記表でいうと『あ』と『え』と『お』のセルに色をつけたいのです セルには文字列のほかに数字も入っている状況です 単純にCtrl+Fで検索をして『すべて検索』で 出てきたセル全部に色をつける。 それをA1から文字があるところ全部やる と言った事をマクロでやりたいと思っております。 皆様よろしくお願いいたします。

  • EXCEL マクロ 文字列を種類分けして並べ替え

    みなさんいつもいろいろ教えていただきありがとうございます。 マクロ初心者の者です。 さて、早速ですが以下の内容を実現できるマクロを 教えていただけませんでしょうか?     A 1 A********* 2 0********* 3 1********* 4 3********* 5 ****** 6 BAE****** 7 BSE****** ・A列に上記のような文字列が入力されています。  (※注文番号)(数十~最大100行くらいまで) *にはランダムに数字が入ります。 A列の並び順、数はランダムです ・B列にはA列からVLOOKUPを使って得た日付(納期)が入ります。 例(B1セル)⇒=VLOOKUP(A1,納期リスト,2,FALSE)   結果 2/20 と表示されている ・C列にはA列からVLOOKUPを使って得た、客先名が入ります。 例(C1セル)⇒=VLOOKUP(A1,納期リスト,3,FALSE)   結果 ***商店 などと表示されている ■この場合に、アルファベット3文字から始まるA6,A7の種類の  注文番号"以外"を削除し、B列の日付の昇順に、  残った注番を並べ替えたいです。 お手数ですが、ご指導よろしくお願いいたします。

  • 【エクセル】結合した文字列の検索について

    エクセルで、複数セルの文字列を「=A1&A2&A3&…」という感じで、B1セルに結合するとして、 例えばA2の文字列に「★」という文字が含まれているとします。 検索で「★」を指定した場合、A2のものは引っかかるのですが、B1の結合された文字列は引っかかりません。 B1セルの文字列も通常通り検索できるようにするには、B1セルでどのような処理をすれば良いのでしょうか。

  • エクセルVBAでの文字列抽出

    エクセルVBAで文字列を検索して、検索した文字列を他のセルへ出力する方法がわかる方法を探しております。状況を図で説明すると、 A1セル:aaa\bbb\item1\ddd A2セル:aaa\bbb\ccc\item2\ddd A3セル:aaa\bbb\ccc\ddd\item3\eee このような状態からitemを検索して、B1セルに B1セル:item1 B2セル:item2 B3セル:item3 と表示させたいです。エクセルVBA初心者な者でRegExpを使うのかな、というところまではたどり着きましたが、そこから先にすすめません。 何か良い方法をご存知の方、教えていただきたいです。よろしくお願いいたします。

  • 文字の入っているセルをカウントしていくマクロ作成

    マクロ初心者です。 文字を検索する列の範囲はD~Fとし、検索開始セルはDとします。 検索結果を表示するセルの先頭セルはAとし、A~Cに結果を表示させます。 もしD2に文字があった場合、A1に”1”を表示させます。 E3に文字があった場合は、A3に”1”を、B3に”1”を表示。 E5に文字があった場合、E列に文字が入ったのが2回目となる為、A5に”1”を、B5に”2”と表示。 上記のように、それぞれの列に何個文字があったのかカウントしていくマクロを作成したいのですが、作成できずに困っています。 よろしくお願いします。

  • Excelで文字列の中から特定の文字の出現回数を数える

    いつもお世話になっています。 また皆さんのお知恵を拝借させて下さい。 Excelで、複数のセルに入力されている文字列の中から特定の文字だけ の個数を数えるにはどのような方法があるでしょうか。 例: A1セル あ A2セル あいう A3セル あう A4セル いう ※セル毎の文字数は一定ではありません。 上記のような場合で、「あ」は3個、「い」は2個、「う」は3個というように 特定の文字の出現回数を数えたいのです。できればVBAやマクロではなく、関数がいいのですが・・・ よろしくお願いします。

  • エクセルで文字列の抽出方法についてお尋ねします。

    宜しくお願いします。 エクセルを使用して条件付の文字列の抽出をしたいと思っています。 A列のセルに2つの文字列がスペースを挟んで50行ほど入っています。 また、その中にはひとつの文字列しか入っていないものもあります。 イメージ的には以下のようなものです。 | A | B ------------------------------------- 1|エクセル マウス| -------------------------------------- 2|エクセル ペン | -------------------------------------- 3|エクセル ノート | ------------------------------------- 4|エクセル    | ------------------------------------- 上記の例では「エクセル」という文字はひとつのセルですが コレが多くあります。 ここで、2つの文字列の組み合わせだけをB列に表示させることは 出来ますか? また、このパターンが終わった後に、「エクセル」という文字列の代わりに 「ワード」という文字列のものが51行目から続きます。 ここでも2つの文字列の組み合わせと「ワード」単体のものとが あるので、出来れば2つの文字列の組み合わせだけをB列に表示し なおかつ上の方へ詰めて表示したいのです。 分かりづらい質問で申し訳ありません。 宜しくお願いします。

専門家に質問してみよう