[[20120918194919]] 『英数字だけ抽出する』(あらばしり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『英数字だけ抽出する』(あらばしり)

 こんにちは。はじめまして。初心者です。

 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.