Excel VBA函数需求:判断字符串中数字是否多于字母
Hey there! Let's tweak your existing HasNumber function to instead check if the number of digits in the string is greater than the number of letters. Here's a revised version that does exactly that:
Revised VBA Function: Count Digits vs Letters
Function NumbersMoreThanLetters(strData As String) As Boolean Dim numCount As Integer, letterCount As Integer Dim iCnt As Integer Dim currentChar As String ' Start both counters at 0 numCount = 0 letterCount = 0 For iCnt = 1 To Len(strData) currentChar = Mid(strData, iCnt, 1) ' Increment digit counter if character is a number If IsNumeric(currentChar) Then numCount = numCount + 1 ' Increment letter counter if character is upper/lowercase A-Z ElseIf currentChar Like "[A-Za-z]" Then letterCount = letterCount + 1 End If ' Ignore non-alphanumeric characters (spaces, symbols, etc.) Next iCnt ' Return True only when digits outnumber letters NumbersMoreThanLetters = (numCount > letterCount) End Function
Key Changes & Explanations:
- Renamed the function:
NumbersMoreThanLettersmakes its purpose instantly clear (no more guessing what it does!) - Added dual counters:
numCounttracks digits,letterCounttracks letters - Letter detection: Used
Like "[A-Za-z]"since VBA doesn't have a built-inIsLetterfunction—this reliably catches both upper and lowercase letters - Ignored non-relevant characters: Spaces, symbols, and other non-alphanumeric characters don't affect the count, which keeps the logic focused on your core requirement
- Final comparison: Returns
Trueonly if the digit count is strictly greater than the letter count
Quick Test Cases:
NumbersMoreThanLetters("abc1234")→ ReturnsTrue(4 digits vs 3 letters)NumbersMoreThanLetters("HelloWorld12")→ ReturnsFalse(2 digits vs 10 letters)NumbersMoreThanLetters("123!@#abc")→ ReturnsFalse(3 digits = 3 letters; needs strictly more digits)
内容的提问来源于stack exchange,提问作者JoaMika
相关产品推荐
相关产品推荐

