Excel-подсчет букв и цифр отдельно в одной ячейке

мне нужен способ подсчета чисел и букв отдельно в одной ячейке.

например, если ячейка содержит 1234567ABC Мне нужно иметь возможность выводить это как

  • "7 цифр" и
  • "3 буквы".

Я не могу придумать, как использовать len() функция, которая будет работать, и countif считает только сами клетки.

любая помощь будет оценили.

2 ответов


если каждая ячейка заполнена только цифрами и буквами, быстрый способ не-vba выполнить это-вложить функцию замены 10 раз, чтобы удалить 10 числовых символов. у тебя осталась только альфа. Тогда вы можете len() Альфа-текст / вычесть это число из исходной длины, чтобы получить численное длина.

предполагая, что "1234567ABC" находится в ячейке A1:

эта формула дает количество букв. (3)

=LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,""))

эта формула дает общее количество: (7)

=LEN(A1)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,""))

если вы хотите начать обработку данных другими способами / более подробно, вероятно, потребуется решение VBA.

Примечание

чтобы соответствовать требованиям в исходном сообщении, добавьте этот суффикс в конец приведенных выше формул:

=x & " Numbers / Letters" 

где x = две вышеуказанные формулы. это добавит текст после расчетного числа.

далее Чтение:

следующая ссылка описывает VBA UDF, который делает что-то подобное: http://www.mrexcel.com/forum/excel-questions/16364-how-remove-numbers.html

Дополнительные Обновления (спасибо lori_m)

эту формулу намного проще читать / обновлять:

=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},"")))

из моего ответа в анализ формата Альфа-числовой строки:

для более подробного ответа эта строка 1234567ABC456 будет сообщено как 7N3L3N

такое регулярное выражение сделает работу

  • пресс altf11 вместе, чтобы пойти VBE
  • Вставить Модуль
  • скопируйте и вставьте код ниже
  • пресс altf11 вместе вернуться к В Excel

затем вы можете использовать функцию (которая также обнаруживает недопустимые строки) в Excel, т. е. в Б1
=AlphaNumeric(A1)

enter image description here

Function AlphaNumeric(strIn As String) As String
    Dim objRegex As Object
    Dim objRegMC As Object
    Dim objRegM As Object
    Dim strOut As String
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Global = True
        .ignorecase = True
        .Pattern = "[^\w]"
        If .test(strIn) Then
            AlphaNumeric = "One or more characters is invalid"
        Else
            .Pattern = "(\d+|[a-z]+)"
            Set objRegMC = .Execute(strIn)
            For Each objRegM In objRegMC
                strOut = strOut & (objRegM.Length & IIf(IsNumeric(objRegM), "N", "L"))
            Next
            AlphaNumeric = strOut
        End If
    End With
End Function