- ベストアンサー
EXCEL 文字列操作
教えてください。 たとえば、エクセルのセルの AAA555さくらサクラ という文字列から、英数字だけ抜き出す方法を教えてください。 文字列は可変(不規則な長さ)で、文字列中には英数の他にひらがな、 カタカナ、漢字があります。 例の結果として、AAA555を抜き出したいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
◆英数字の後にひらがな、カタカナ、漢字が並んでいるものとします (ひらがな、カタカナ、漢字は順不同でも可) B1=LEFT(A1,MATCH(1,INDEX(1/(CODE(MID(ASC(A1),ROW($1:$50),1))>5000),),0)-1)
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
数字と英文字(半角、全角)を抜き出すユーザ定義関数です まず以下のマクロを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
お礼
zap35さんへ ありがとうございました。 問題解決しました。 VBA初心者で書き方がわからずググっても調べられず、 困り果てていました。 親切なご回答感謝いたします。
- pamsd
- ベストアンサー率18% (39/209)
アドバイスです。 VBAを使って関数を作るしかないと思います。
・正規表現(パターンマッチ構文) ・1文字ずつチェック。 0-9,a-zA-Zにあればコピー などいろいろ方法があります
お礼
maron-5様 ありがとうございました。 CODE関数の文字コードを>126とし、実行したら英数字を抜くことができました。