1

У меня есть следующая таблица Excel -

Hy Newcastle 042216     -1                          Not Matched  1000
Hy Newcastle 042216     6461735 Khanyile;Florence   Success      1000
Hy Newcastle 042216     -1                          Not Matched  1000
Hy Newcastle 042216     6765475 Manana;Witness      Success      1000
Hy Newcastle 042216     -1                          Not Matched  1000
Hy Newcastle 042216     -1                          Not Matched  1000
Hy Newcastle 042216     -1                          Not Matched  1000
Hy Newcastle 042216     6765459 Kubheka;Nomusa      Success      1000
Hy Newcastle 042216     -1                          Not Matched  1000
Hy Newcastle 042216     1905465 Nkosi;Xolani        Success      1000

Что мне нужно сделать, так это подсчитать, сколько раз -1 появляется над каждым человеком. Я попробовал сводку, но затем она объединяет одних и тех же сотрудников, и мне нужно, чтобы они подсчитывали по отдельности. Таким образом, для

Кубека, Номуса будет 3,
Khanyile; во Флоренции это будет 1 и т.д.

Это возможно?

3 ответа3

0

Используя VBA, вставьте модуль в worknook и вставьте его справа:

Public Function countNegatives(name As Range)
    countNegatives = 0
    If name <> "-1" Then
        therow = name.Row
        thecolumn = name.Column
    End If
    endrow = False
    counter = 0
    While endrow = False
        If therow > 1 Then
            therow = therow - 1
            If Cells(therow, thecolumn) = -1 Then
                counter = counter + 1
            Else
                endrow = True
            End If
        Else
            endrow = True
        End If
    Wend
    countNegatives = counter
End Function

На листе в ячейку G2 поместите =countNegatives(D2) и вы получите результат.

0

Этот скрипт VBa делает это

Option Explicit

Sub walkThePlank()

Dim row As Integer
row = 1

Dim total As Integer
total = 0
Do While (Range("D" & row).Value <> "")

    Dim val As String
    val = Range("D" & row).Value

    If (val = "-1") Then
        total = total + 1
    Else
        Range("G" & row).Value = total
        total = 0
    End If


row = row + 1
Loop

End Sub

Перед тем, как запустить

И после

Как добавить VBA в MS Office?

0

Решение без VBA:

  1. Создайте вспомогательный столбец с этой формулой: =IF(C2=-1,"",COUNTIF($C1:C$2,-1)-SUM($G1:G$2))
  2. Добавьте сводную таблицу с именами и вспомогательный столбец (или вы можете даже отфильтровать исходный диапазон, чтобы исключить строки без имен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .