- ベストアンサー
セル内の記号(英数字以外全て)の数の取得
A列に商品型番のようなデータが半角英数字記号にて列挙されているのですが(2,000個ほど)、 セルの中に英数字以外の文字の、 ・有無 ・文字数 を取得するにはどうしたらよいでしょうか? (例)A列に文字列、B列に英数字以外の文字の有無、英数字以外の文字数が入ります A列、B列、C列 C1k-B/W、有、2 x9-1、有、1 Y158*1-w-6/b-7、有、5 A123、無、0 文字数が分かるだけでOKです。(そうすれば有無は必然的に分かるので) 複数の関数を駆使する都合で使用列がもっと右に伸びても構いません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! VBAになってしまいますが、一例です。 データはA1セルからあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long Application.ScreenUpdating = False Range("B:C").ClearContents For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Len(Cells(i, "A")) If Not StrConv(Mid(Cells(i, "A"), k, 1), vbNarrow) Like "[A-Z a-z 0-9]" Then Cells(i, "C") = Cells(i, "C") + 1 End If Next k If Cells(i, "C") > 0 Then Cells(i, "B") = "有" Else With Cells(i, "B") .Value = "無" .Offset(, 1) = 0 End With End If Next i Application.ScreenUpdating = True End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m
その他の回答 (4)
A列の文字列は、半角文字で統一されているの?それともテンデンパラパラの無茶苦茶?
補足
全て半角で統一されています。 私が書いた(例)に全角が含まれており紛らわしく申し訳ありません。
- mt2008
- ベストアンサー率52% (885/1701)
関数でもゴチョゴチョやればできそうですが、VBAでユーザ関数を作ってしまった方が早そうです。 標準モジュールに以下のコードをいれて、C列のセルに =fSample(A1) の様に入れて下さい。 Function fSample(sTarget As String) As String Set oRE = CreateObject("VBScript.RegExp") With oRE .Pattern = "[0-9|A-Z]" .IgnoreCase = True .Global = True fSample = Len(.Replace(sTarget, "")) End With End Function
お礼
ありがとうございます! 簡単に実現できました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>A列に商品型番のようなデータが半角英数字記号にて列挙されているのですが とありますが >x9-1 の「x」が全角ですが、どちらに含まれるのでしょうか? =SUM(ISERROR(FIND(MID(A1,ROW(A$1:INDEX(A:A,LEN(A1))),1),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"))*1) [Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる
補足
例が間違っておりました、すみません。 実際は半角しか存在しないので、全角の存在は考慮しなくて構いません。
- aokii
- ベストアンサー率23% (5210/22063)
英数字以外の文字数 =LENB(A2)-LEN(A2)
補足
試しに A2に「a/b/c-1」が入っているときに、ご教授の数式を入れてみましたが結果は「0」でした。 本当なら「3」と出ないといけません。
お礼
ありがとうございます。 簡単に実現できました。 一番最初にNo.3の方が回答してくれましたが、結果のセル属性が文字列になってしまうのが残念で、 こちらは、有無まで表示してくれて結果の文字数も数値属性で出してくれるので要望通り完璧です。 とちらもベストアンサーにしたいですが、システム的に無理なのでこちらにさせていただきます。 すみませんん。