2010-12-14 5 views
0

Angenommen, ich habe eine Spalte mit 10.000 Einträgen. Ich möchte zählen, wie viele dieser Einträge nur Buchstaben, Zahlen und Buchstaben und schließlich alles andere enthalten. Beachten Sie, dass alle Daten als Text und nicht als Zahlen gespeichert werden.Excel: Zählen Sie, wie viele Textwerte in einer Datenspalte nur Alpha, alphanumerische und alle Typen sind

+1

Haben Sie etwas versucht? Hatten irgendwelche Probleme? –

+0

Ich würde gerne die Antwort auf Belisarius Frage wissen. – Fionnuala

Antwort

2

Ich testete das Folgende und es schien zu funktionieren.

Hinweis zu bekommen diese Sie einen Verweis auf Microsoft VBScript Regular Expressions 5.5 aus dem VB-Editor hinzufügen müssen arbeiten:

Tools> Referenzen> Microsoft VBScript Regular Expressions 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

Die Ausgabe, die ich bekomme, ist Zahlen und Buchstaben = 0 Buchstaben = 0 Rest = 188281 – varunsrin

+0

Ich entfernte die Dim RngToCheck und Set RngToCheck Zeilen und substituierten RngToCheck überall sonst mit Selection.Cells und es funktionierte, wenn ich die richtige Spalte – varunsrin

+0

auswählte, was wäre Regexp, wenn ich auch ein anderes Feld erhalten wollte, das nur Zahlen war – varunsrin

Verwandte Themen