[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『英数字だけ抽出する』(あらばしり)
こんにちは。はじめまして。初心者です。
C列にある漢字仮名英数字交じりの文字列から D列に英数字のみを抜き出す方法(関数、マクロ)を ご教授いただけないでしょうか。
(例) C列 D列 にほんTA100 TA100 やまと900CA 900CA 富士J100 J100 WINDOWS XP、エクセル2007です。
よろしくお願いいたします。
半角英数字のみ抽出
Sub Sample() Dim v() As String Dim z As Long Dim i As Long
With CreateObject("VBScript.RegExp") .Pattern = "\w+" z = Range("C" & Rows.Count).End(xlUp).Row ReDim v(1 To z, 1 To 1) For i = 1 To z With .Execute(Range("C" & i).Value) If .Count > 0 Then v(i, 1) = .Item(0).Value End If End With Next End With
Columns("D").ClearContents Range("D1").Resize(z).Value = v
End Sub
(ぶらっと)
ご提示の例(漢字・仮名+英・数字)でしたら =MID(C1,LENB(C1)-LEN(C1)+1,LEN(C1)) こんなのでも良さそうです。
(HANA)
A B 1 ジャズ100選 100 2 音楽CDロック CD
B1 =MID(ASC(A1),MIN(INDEX((CODE(MID(ASC(A1)&REPT(" ",50),ROW($1:$50),1))>160)*10^16+ROW($1:$50),)),SUMPRODUCT((CODE(MID(ASC(A1)&REPT(" ",50),ROW($1:$50),1))<161)*1))
※音楽CDコーナー2F みたいに英数字のカタマリが複数ある場合はNG。 ※結果は半角
(GobGob)
半角英数を抽出
Sub test() Dim a, i As Long, x With Range("c1", Range("c" & Rows.Count).End(xlUp)) a = .Value For i = 1 To UBound(a, 1) x = Split(StrConv(a(i, 1), 64), Chr(0)) If UBound(x) > 0 Then x(0) = Right$(x(0), 1) ReDim Preserve x(UBound(x) - 1) a(i, 1) = Join$(x, "") End If Next .Offset(, 1).Value = a End With End Sub (seiya)
seiyaさん、GobGobさん、HANAさん、ぶらっとさん ご回答ありがとうございます。しかも早い! 無事解決できました。ありがとうございました。 (あらばしり)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.