• ベストアンサー

Excelでセル内の文から特定の文字を抜き出す方法

画像のようにA列にランダムで文字列があるとします。 そこから、画像のように「C1」や「B3」などといった特定の文字だけを抜き出したいのですが、良い方法はありますでしょうか。ちなみに抜き出したい文字は2文字で「C1~3」「B1~3」「A1~3」の計9つです。※ちなみに全角文字です。 作業列なども使用可です。アドバイスよろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

mzakom
質問者

お礼

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

その他の回答 (1)

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

こんばんは! 一例です。 大前提として、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

mzakom
質問者

補足

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

関連するQ&A