2010-12-14 2 views
0

10,000 개의 항목이있는 열이 있다고 가정 해보십시오. 나는이 엔트리들 중 얼마나 많은 글자들만 글자, 숫자, 글자들, 그리고 마지막으로 그 밖의 것들을 포함하고 있는지 세고 싶다. 모든 데이터는 숫자가 아닌 텍스트로 저장됩니다.Excel : 데이터 열의 텍스트 값 수를 알파 만, 영숫자 및 모든 유형으로 계산하십시오.

+1

너 뭔가 먹어 봤니? 어떤 문제가 있었습니까? –

+0

나는 belisarius의 질문에 대한 답을 알고 싶다. – 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

출력은 Numbers and Letters = 0입니다. Letters = 0 Remainder = 188281 – varunsrin

+0

Dim rngToCheck 및 Set rngToCheck 줄을 제거하고 Selection.Cells를 사용하여 다른 곳의 rngToCheck를 대체했습니다. 그러면 오른쪽 열을 선택했을 때 작동했습니다. – varunsrin

+0

무엇이 될까요? regexp 또한 숫자 만있는 다른 필드를 얻고 싶다면 – varunsrin

관련 문제