Как создать цикл VBA для суммирования итогов на основе неизвестного количества повторяющихся значений в столбце? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть набор данных, где некоторые значения (VAL) повторяются, а некоторые нет, неизвестное количество раз.Каждая VAL связана с SCORE (от 0 до 5).

Я пишу цикл VBA, чтобы начать с первой VAL и искать остальные строки в том же столбце.Если VAL повторяется, я хочу подсчитать SCORE для этих идентификаторов.Однако сумма должна отображаться только в ячейке в той же строке, что и последний VAL.

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

For Row = 2 To 350

If Cells(Row, 1) = Cells(Row + 1, 1) Then
Cells(Row, 6) = (Cells(Row, 4)) + (Cells(Row - 1, 4))
Else
Cells(Row, 6) = Cells(Row, 4)

End If

Next

End Sub

Например, если VAL1 имеет 1 балл и не повторяется, итоговое значение должно быть 1. Если VAL2 имеет 1 балл0 и не повторяется, итоговое значение должно быть 0. Если VAL3 повторяется 3 раза и имеет оценки 0, 1, 1, итоговое значение должно быть 2, но 2 должно появиться только в 3-й ячейке - 2 ячейки до того, как это должно быть0.

VAL1    1       1
VAL2    0   0
VAL3    0   0
VAL3    1   0
VAL3    1   2
VAL5    0   0
VAL5    1   0
VAL5    1   0
VAL5    1   3

Заранее спасибо

1 Ответ

1 голос
/ 20 сентября 2019

Окончательный результат

Пожалуйста, смотрите следующие формулы, которые шаг за шагом решают эту проблему.

Они также могут быть объединены в одну большую формулу, которая решает проблему одним выстрелом.

Эта формула:

=IF(   COUNTIF(A2:$A$1048576,A2)-1  = 0, SUMIFS($B$2:$B$1048576,$A$2:$A$1048576,A2),  0 )

Где:

  • A2 - первая ячейка, содержащая метки Val (Val1, Val2, ..., ValN)
  • B2 - первая ячейка, содержащая числовые значения

enter image description here

enter image description here

Объяснение:

Условие countIf подсчитывает, сколько раз конкретное значение появляется после текущей строки.Если это равно нулю, это означает, что это последнее значение.Вторая SumIfs суммирует общее числовое значение для метки ValN.

Шаг за шагом

enter image description here

enter image description here

Дополнительные записи (повторяющиеся значения)

Кроме того, приведенная выше формула имеет дело со значениями, которые повторяются снова, но не являются последовательными.Например, еще одна запись VAL1 или VAL5, которая появилась в конце.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...