2010-12-14 9 views
0

1万のエントリを持つ列があるとします。私はこれらのエントリーのどれだけが文字のみ、数字と文字、そして最後に他のすべてを含んでいるのかを数えたいと思う。すべてのデータは数値ではなくテキストとして保存されることに注意してください。Excel:アルファのみ、英数字およびすべてのタイプのデータ列のテキスト値の数を数えます。

+1

何か試しましたか?何か問題があった? –

+0

私はブリサリウスの質問に対する答えを知りたいと思います。 – Fionnuala

答えて

2

私は以下をテストしたところ、うまくいくように見えました。

これはあなたがVBエディタ内からマイクロソフトのVBScriptの正規表現5.5への参照を追加する必要が動作するように取得する注:

ツール>参考資料>マイクロソフトのVBScriptの正規表現5.5

Sub CountTextPatterns() 
Dim rngToCheck As Range 
Dim cl As Range 

Set rngToCheck = Range("A1:A10000") //Set up the range that contains the text data 

Dim numbersLetters As VBScript_RegExp_55.RegExp 
Set numbersLetters = New RegExp 
numbersLetters.Pattern = "^\d*[a-zA-Z][a-zA-Z0-9]*$" //Regex pattern to match alphanumeric with at least one letter 

Dim lettersOnly As VBScript_RegExp_55.RegExp 
Set lettersOnly = New RegExp 
lettersOnly.Pattern = "^[a-zA-Z]+$" //Regex pattern for letters only 

Dim cntNumbersLetters As Long, cntLetters As Long, cntRemainder As Long 
cntNumbersLetters = cntLetters = cntRemainder = 0 

//Loop through range, match cell contents to pattern, and increment count accordingly 
For Each cl In rngToCheck 
    If lettersOnly.Test(cl) Then 
     cntLetters = cntLetters + 1 
    ElseIf numbersLetters.Test(cl) Then 
     cntNumbersLetters = cntNumbersLetters + 1 
    End If 
Next 

//For anything that isn't letters only or numbers and letters, simply subtract from counts and total row count 
cntRemainder = rngToCheck.Rows.Count - cntNumbersLetters - cntLetters 

Debug.Print "Numbers and Letters = " & cntNumbersLetters & vbTab & "Letters = " & cntLetters & vbTab & "Remainder = " & cntRemainder 

End Sub 
+0

私は数値と文字= 0レター= 0残り= 188281 – varunsrin

+0

Dim rngToCheckとSet rngToCheckの行を削除し、Selection.CellsでrngToCheckの代わりに置き換えて、右の列を選択したときに機能しました – varunsrin

+0

何が私が数字だけである別のフィールドを取得したいのであれば、正規表現 – varunsrin

関連する問題