• ベストアンサー

EXCEL 文字列操作

教えてください。 たとえば、エクセルのセルの  AAA555さくらサクラ という文字列から、英数字だけ抜き出す方法を教えてください。 文字列は可変(不規則な長さ)で、文字列中には英数の他にひらがな、 カタカナ、漢字があります。 例の結果として、AAA555を抜き出したいです。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆英数字の後にひらがな、カタカナ、漢字が並んでいるものとします (ひらがな、カタカナ、漢字は順不同でも可) B1=LEFT(A1,MATCH(1,INDEX(1/(CODE(MID(ASC(A1),ROW($1:$50),1))>5000),),0)-1)

kinokox
質問者

お礼

maron-5様 ありがとうございました。 CODE関数の文字コードを>126とし、実行したら英数字を抜くことができました。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

数字と英文字(半角、全角)を抜き出すユーザ定義関数です まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 次にワークシート画面に戻って =AtoZ(A1) のように式を入力してください。A1の部分が文字列が入っているセルアドレスです。 英記号などを抽出文字に追加したかったら  strPattern = "[0-9A-Za-z0-9A-Za-z]+-@" のように後ろに追加してください Function AtoZ(ByVal trg As Range) As String Dim RE, mchItems Dim strPattern As String Dim idx As Integer If trg <> "" Then  Set RE = CreateObject("VBScript.RegExp")  strPattern = "[0-9A-Za-z0-9A-Za-z]"  With RE   .Pattern = strPattern   .IgnoreCase = True   .Global = True   Set mchItems = .Execute(trg.Value)   If mchItems.Count > 0 Then    For idx = 0 To mchItems.Count - 1     AtoZ = AtoZ & mchItems(idx).Value    Next idx   End If  End With  Set RE = Nothing End If End Function

kinokox
質問者

お礼

zap35さんへ ありがとうございました。 問題解決しました。 VBA初心者で書き方がわからずググっても調べられず、 困り果てていました。 親切なご回答感謝いたします。

  • pamsd
  • ベストアンサー率18% (39/209)
回答No.2

アドバイスです。 VBAを使って関数を作るしかないと思います。

noname#33959
noname#33959
回答No.1

・正規表現(パターンマッチ構文) ・1文字ずつチェック。 0-9,a-zA-Zにあればコピー などいろいろ方法があります

関連するQ&A