На самом деле вам не нужно l oop через вещи, вы можете сделать базовые c дополнения с формулами sumif, а затем, возможно, просто использовать макрос для автоматизации применения формул на 2-м листе, и я думаю, один быстро l oop для удаления пустых строк:
Здесь вы можете увидеть формулы работ:
А в макросе вы просто хотите что-то вроде
Sub e()
Sheet4.Range("A2:A9").Formula = "=SUM('Sheet_1'!C2:C3)"
Sheet4.Range("B2:B9").Formula = "=IF('Sheet_1'!$B2=""X"",SUMIF('Sheet_1'!$A$2:$E$9,'Sheet_1'!A2,'Sheet_1'!$E$2:$E$9),"""")"
End Sub
Чтобы применить формулу, а затем, возможно,
Sheet4.Range("A2:B9").value2 = Sheet4.Range("A2:B9").value2
Чтобы разрешить их только до чисел.
Затем сделайте быстрый l oop, чтобы удалить пустые значения в столбце B.
NB Вы все еще можете сделать его полностью динамичным c, подставив мой жесткий диапазоны для переменной и используйте вашу функцию CountRows
.