dポイントプレゼントキャンペーン実施中!

エクセルでこんなことができますか?
1つのセルに文字列が入力されています。
例えば、
B1セル 2014/11/09配布B1234確認あり。
B2セル G4321
B3セル B5セル 未確認。ただしB0025と同様の形態と思われる。
B4セル 完了。確認済み
B5セル 空白
B6セル G0125
B7セル 確認済みG6655資料送付済み

等々、まちまちです。
このデータから、BまたはGで始まる数字4桁を
B1234
G4321
B0025
のようなかたちで取り出したいのです。
どのような方法があるでしょうか?
関数でもVBAでもかまいません。教えてください。 

A 回答 (11件中11~11件)

こんばんは!



手っ取り早くVBAでの一例です。
C列にデータを表示させるとします。
シートモジュールです。
↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub Sample1()
Dim i As Long, k As Long
For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row
For k = 1 To Len(Cells(i, "B"))
If Mid(StrConv(Cells(i, "B"), vbNarrow), k, 1) Like "[B G]" Then
If IsNumeric(Mid(Cells(i, "B"), k + 1, 4)) Then
Cells(i, "C") = Mid(Cells(i, "B"), k, 5)
End If
End If
Next k
Next i
End Sub

※ 1セルに該当データは複数存在しないという前提です。m(_ _)m

この回答への補足

Like "[B G]" Then でBとGのあいだにスペースがあるのでスペース+数字4桁まで抽出されるのかと思い、ためしに Like "*[BG]" Thenとしたところうまくいきました。
Like "*[B,G]" Thenでも良いようです。
これであってますでしょうか?(理屈がよく分からず、すみません。)

補足日時:2014/11/10 09:01
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
うまくできたのですが、BやG以外にスペース+数字4桁まで抽出されてしまいました。

お礼日時:2014/11/10 08:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!