• ベストアンサー

セル内の記号(英数字以外全て)の数の取得

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です。(そうすれば有無は必然的に分かるので) 複数の関数を駆使する都合で使用列がもっと右に伸びても構いません。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

tanapyondai
質問者

お礼

ありがとうございます。 簡単に実現できました。 一番最初にNo.3の方が回答してくれましたが、結果のセル属性が文字列になってしまうのが残念で、 こちらは、有無まで表示してくれて結果の文字数も数値属性で出してくれるので要望通り完璧です。 とちらもベストアンサーにしたいですが、システム的に無理なのでこちらにさせていただきます。 すみませんん。

その他の回答 (4)

noname#204879
noname#204879
回答No.4

A列の文字列は、半角文字で統一されているの?それともテンデンパラパラの無茶苦茶?

tanapyondai
質問者

補足

全て半角で統一されています。 私が書いた(例)に全角が含まれており紛らわしく申し訳ありません。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

関数でもゴチョゴチョやればできそうですが、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

tanapyondai
質問者

お礼

ありがとうございます! 簡単に実現できました。

回答No.2

>A列に商品型番のようなデータが半角英数字記号にて列挙されているのですが とありますが >x9-1 の「x」が全角ですが、どちらに含まれるのでしょうか? =SUM(ISERROR(FIND(MID(A1,ROW(A$1:INDEX(A:A,LEN(A1))),1),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"))*1) [Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる

tanapyondai
質問者

補足

例が間違っておりました、すみません。 実際は半角しか存在しないので、全角の存在は考慮しなくて構いません。

  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.1

英数字以外の文字数 =LENB(A2)-LEN(A2)

tanapyondai
質問者

補足

試しに A2に「a/b/c-1」が入っているときに、ご教授の数式を入れてみましたが結果は「0」でした。 本当なら「3」と出ないといけません。

関連するQ&A