2017-01-20 3 views
0

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

Код:

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 
+1

Формула SUMIF неправильно: SUM (RANGE , КРИТЕРИИ, [RANGE_TO_SUM]). Вы хотите использовать весь диапазон, а не отдельную ячейку. И у вас есть два критерия: строка '' Daily Total: "' и '' '' Не могли бы вы показать некоторые данные теста и ожидаемый результат? –

+1

Скорректированный комментарий, поскольку это только частично: Удалите эту строку: «Листы (« Макросы »). Диапазон (« C29 ») = totalHours« – Zerk

ответ

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 ... 
+0

Это работает, спасибо. По-видимому, я уже усложнял это, перебирая все ячейки, а не только диапазон. – duberry

+0

добро пожаловать. хорошее кодирование! – user3598756

 Смежные вопросы

  • Нет связанных вопросов^_^