Значение SumIf всегда возвращается как 0 - Excel VBA

Я использую функцию SumIf для сложения всех ячеек, содержащих строку dailyTotal слева от них. Затем я устанавливаю ячейку C29 на листе Macros в это значение и сравниваю его с числом, чтобы увидеть, какой код выполняется дальше. У меня есть значения в ячейках столбца E, но значение всегда возвращается как 0.

Код:

dailyTotal = "Daily Total:"
Dim totalHours As Double
Dim rng As Range: Set rng = Application.Range("Totals!E11:E100")
Dim cell As Range

For Each cell In rng.Cells
  With Sheets("Totals")
    Sheets("Macros").Range("C29").Formula = Application.SumIf(cell.Offset(, -1), dailyTotal, "")
    Sheets("Macros").Range("C29") = totalHours
  End With
Next cell

' check if command is applicable
If totalHours > 4 Then

person duberry    schedule 20.01.2017    source источник
comment
Формула СУММЕСЛИ неверна: СУММ(ДИАПАЗОН, КРИТЕРИИ, [ДИАПАЗОН_ДО_СУММ]). Вы хотите использовать весь диапазон, а не отдельную ячейку. И у вас есть два критерия, строка "Daily Total:" и "" Не могли бы вы показать некоторые тестовые данные и ожидаемый результат?   -  person Scott Craner    schedule 20.01.2017
comment
Скорректировано с учетом комментария, так как это частично: удалите эту строку: Sheets(Macros).Range(C29) = totalHours   -  person Zerk    schedule 20.01.2017


Ответы (1)


ты можешь быть после этого

Dim totalHours As Double
Dim dailyTotal As String: dailyTotal = "Daily Total:"
Dim rng As Range: Set rng = Application.Range("Totals!E11:E100")

totalHours = Application.SumIf(rng.Offset(, -1), dailyTotal, rng)
Sheets("Macros").Range("C29") = totalHours

' check if command is applicable
If totalHours > 4 Then ...
person user3598756    schedule 20.01.2017
comment
Это работает, спасибо. По-видимому, я слишком усложнял это, перебирая все ячейки, а не только диапазон. - person duberry; 20.01.2017