Excel COUNTIF со строками, разделенными запятой - PullRequest
0 голосов
/ 31 мая 2018

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

enter image description here

В столбце с именем Возраст будут отображаться ячейки с одним или несколькими именами, разделенные запятыми, если имеется более одного значения,Если в качестве примера указать «Young», то легко сказать формулу COUNTIF, чтобы дать мне число, представляющее, сколько раз это слово появляется, являясь единственным значением в ячейке или частью ячейки с более длинным строковым значением, даваяформула « Young ».

Проблема возникает, когда я хочу, чтобы формула подсчитала, сколько раз в моем столбце появляется слово «Mature».Я не могу выработать способ, чтобы заставить его считаться только тогда, когда он говорит «Зрелый», не взяв также все «Ранний зрелый» или «Полу зрелый»

Я знаю, что это легко для тех, кто знает основы Excel, поэтому я неНе думаю, что есть необходимость дать более подробную информацию.

Спасибо

Ответы [ 4 ]

0 голосов
/ 31 мая 2018

Альтернативой может быть изменение значения «Mature» на «Fully_Mature».Тогда вы могли бы просто использовать Countif ().

Вы должны сделать это по шагам:1) Измените "Early_Mature" на "E_M"2) Измените «Semi_Mature» на «S_M»3) Измените «Зрелый» на «Полностью зрелый»4) обратный шаг 1).5) обратный шаг 2).

0 голосов
/ 31 мая 2018

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

=SUM(((LEN(A2:A7)-LEN(SUBSTITUTE(A2:A7,"Mature",""))) / LEN("Mature"))-((LEN(A2:A7)-LEN(SUBSTITUTE(A2:A7,"_Mature",""))) / LEN("_Mature")))

Обратите внимание, что эта формула применяется с Ctrl + Shift + Введите .

Учитывая, что ваш диапазон находится в столбце Y:Y, просто измените диапазон на тот, который вам нужен.

0 голосов
/ 31 мая 2018

с UDF.Код поступает в стандартный модуль , добавляемый , открывая VBE с помощью Alt + F11 , затем щелкните правой кнопкой мыши в проводнике проекта и добавьте модуль.


Код

Option Explicit

Public Function GetCount(ByRef selectRange As Range, ByVal searchTerm As String) As Long
    Application.Volatile
    With selectRange

        Dim arr(), joinedString As String, i As Long, outputCount As Long
        arr = .Value

        joinedString = Join(Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Index(arr, 0, 1)), ",")

        Dim arr2() As String
        arr2 = Split(joinedString, ",")

        For i = LBound(arr2) To UBound(arr2)
            If Trim$(arr2(i)) = "Mature" Then
                outputCount = outputCount + 1
            End If
        Next i
    End With

    GetCount = outputCount

End Function

Использование в листе

Usage

0 голосов
/ 31 мая 2018

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

Таким образом, поскольку ваши данные имеют значение COL:Y, вы можетесоздайте новый помощник COL:Z и введите следующую формулу:

="," & Y1 & ","

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

Теперь ваша строка обернута запятыми, которые вы можете изменить COUNTIF формулу следующим образом:

=COUNTIF(Z:Z,"*,"&B1&",*")

* символовшутники, которые в этом контексте означают «что угодно».

...