プロが教える店舗&オフィスのセキュリティ対策術

画像のようにA列にランダムで文字列があるとします。
そこから、画像のように「C1」や「B3」などといった特定の文字だけを抜き出したいのですが、良い方法はありますでしょうか。ちなみに抜き出したい文字は2文字で「C1~3」「B1~3」「A1~3」の計9つです。※ちなみに全角文字です。

作業列なども使用可です。アドバイスよろしくお願いしますm(_ _)m

「Excelでセル内の文から特定の文字を抜」の質問画像

A 回答 (2件)

No.1です。



補足の件に関して・・・
1セル内に複数存在する場合があり、その場合は最初に出現したものを表示したい!
というコトですので、関数ではなくVBAになってしまいますが一例です。
尚、前回アップした画像通りでD列に表示したいデータを配置しているとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, k As Long, endRow As Long, c As Range
endRow = Cells(Rows.Count, "A").End(xlUp).Row
If endRow > 1 Then
Range(Cells(2, "B"), Cells(endRow, "B")).ClearContents
End If
For i = 2 To endRow
For k = 1 To Len(Cells(i, "A"))
Set c = Range("D:D").Find(what:=Mid(Cells(i, "A"), k, 2), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(i, "B") = c
Exit For
End If
Next k
Next i
End Sub 'この行まで

※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。
※ 関数で簡単にできる方法があればごめんなさいね。m(_ _)m
    • good
    • 1
この回答へのお礼

VBAまで考えて頂きありがとうございます。
しかし、仰るとおりデータ変更があるので何とか関数で解決策を模索します。VBAは後学のために参考にさせて頂きます。ありがとうございましたm(_ _)m

お礼日時:2013/10/12 05:42

こんばんは!


一例です。
大前提として、1セルに1回しか出現しない!と条件です。

↓の画像のように表示したいデータの表を作成しておきます。
今回はD1~D9セルにしています。

B2セルに
=IF(OR(ISNUMBER(FIND(D$1:D$9,A2))),INDEX(D$1:D$9,SUMPRODUCT((ISNUMBER(FIND(D$1:D$9,A2))*ROW(D$1:D$9)))),"")

配列数式になりますので、Shift+Ctrl+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → B2セルを選択 → 数式バー内に貼り付け
そのまま(編集可能のまま)Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

これをオートフィルで下へコピーで画像のような感じになります。m(_ _)m
「Excelでセル内の文から特定の文字を抜」の回答画像1

この回答への補足

こんばんは。返信ありがとうございます。m(_ _)m
説明不足で申し訳ありませんでした。
「●●●B2B3●●」など、同セルに2回出現する場合もあります・・・。その場合は、D列で設定した上の文字だけを抽出するみたいな感じはできますでしょうか。
「●●●B2B3●●」の場合は、B2の方が上なので「B2」だけ抜き出す感じです。

補足日時:2013/10/12 00:50
    • good
    • 2

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