Если вы используете Excel для анализа группы ячеек, содержащих текст, вы можете определить количество ячеек, содержащих верхний регистр, число, содержащее строчные буквы, и число, содержащее смешанный регистр.

Есть два способа подойти к этой задаче: использовать обычную формулу рабочего листа или определить свою собственную пользовательскую функцию.

Если текст, который вы хотите оценить, находится в столбце A, начиная с ячейки A1, вы можете использовать следующую формулу в ячейке B1:

=IF(A1>"",IF(EXACT(UPPER(A1),A1),"Upper", IF(EXACT(LOWER(A1),A1),"Lower","Mixed")),"")

Формула проверяет, есть ли что-нибудь в A1. Если есть, то он использует функцию EXACT для сравнения содержимого с различными преобразованиями содержимого ячейки. Формула возвращает пустую строку, если ячейка A1 пуста или есть слова Верхний, Нижний или Смешанный.

Скопируйте формулу в столбец B, насколько это необходимо, и затем вы можете использовать следующий тип формулы для определения количества:

=COUNTIF(B:B,"Upper")

Чтобы узнать количество ячеек в нижнем или смешанном регистре, замените «Верхний» на «Нижний» или «Смешанный».

Очевидно, что использование формул таким образом включает добавление столбца на ваш рабочий лист. Вы можете использовать другой подход с формулами, который не предполагает использования промежуточного столбца таким образом.

Рассмотрим следующую формулу, которая возвращает количество ячеек в диапазоне A1: A100, содержащих только прописные буквы:

=SUMPRODUCT(--(EXACT(A1:A100,UPPER(A1:A100))),--(A1:A100<>""))

Вариант этой формулы может использоваться для возврата количества ячеек в нижнем регистре. Единственное, что изменилось ниже, — это использование функции НИЖНИЙ вместо функции ВЕРХНИЙ:

=SUMPRODUCT(--(EXACT(A1:A100,LOWER(A1:A100))),--(A1:A100<>""))

Чтобы определить ячейки, содержащие смешанный регистр, вам нужно придумать смесь двух формул на основе SUMPRODUCT:

=SUMPRODUCT(--(NOT(EXACT(A1:A100,UPPER(A1:A100)))),-- (NOT(EXACT(A1:A100,LOWER(A1:A100)))),--(A1:A100<>""))

У этих формул есть некоторые недостатки, недостатки, которые не очевидны в более ранних формулах. Во-первых, если ячейка содержит числовое значение, эти формулы могут считать ячейку прописной. Во-вторых, если ячейка содержит значение ошибки, формула возвращает ошибку.

Если вам нужно подсчитывать регистр довольно часто, то вам, вероятно, будет лучше, если вы создадите определяемую пользователем функцию, которая выполняет подсчет за вас. Есть много способов написать такую ​​функцию, но общие рекомендации таковы:

Пройдите по каждой ячейке диапазона. Определите, является ли ячейка верхним, нижним или смешанным регистром. Увеличить какой-либо счетчик. Вернуть значение

Следующий макрос является одним из примеров того, как это может быть реализовано:

Function CountCase(rng As Range, sCase As String) As Long     Dim vValue     Dim lUpper As Long     Dim lMixed As Long     Dim lLower As Long     Dim rCell As Range     lUpper = 0     lLower = 0     lMixed = 0

For Each rCell In rng         If Not IsError(rCell.Value) Then             vValue = rCell.Value             If VarType(vValue) = vbString _                 And Trim(vValue) <> "" Then                 If vValue = UCase(vValue) Then                     lUpper = lUpper + 1                 ElseIf vValue = LCase(vValue) Then                     lLower = lLower + 1                 Else                     lMixed = lMixed + 1                 End If             End If         End If     Next     Select Case UCase(sCase)

Case "U"

CountCase = lUpper         Case "L"

CountCase = lLower         Case "M"

CountCase = lMixed         Case Else             CountCase = CVErr(xlErrValue)

End Select End Function

Определение того, является ли ячейка верхним, нижним или смешанным регистром, очевидно, является сутью макроса, такого как этот. Для такого определения используется тот же процесс, что и в формулах рабочего листа: сравнивать содержимое ячейки с преобразованием этого содержимого в верхний или нижний регистр. В этом макросе значение ячейки (vValue) сравнивается с vValue, преобразованным с помощью функции UCase или LCase.

Функция также игнорирует ячейки, оценку которых не имеет смысла.

Он игнорирует ячейки, содержащие числовые значения, логические значения, значения ошибок, пустые ячейки и ячейки, содержащие только пробелы. Если числовое значение отформатировано как текст, функция считает эту ячейку прописной. Чтобы использовать эту пользовательскую функцию, используйте на рабочем листе формулу, например следующую:

=COUNTCASE(A1:A100, "L")

В качестве первого аргумента вы используете диапазон, который хотите оценить. Второй аргумент — это один символ L, M или U, указывающий, какой счет вы хотите вернуть. Если вы используете другое значение для второго аргумента, функция вернет ошибку.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (10593) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Counting_Cells_According_to_Case [Подсчет ячеек в зависимости от случая].