-1

[ Сообщение об ошибке после запуска кода 1

[ Строка, где код ломается 2

Весь мой код работал отлично, пока я не добавил числа в строку 5 в моей таблице. После того, как я добавил данные, моя формула COUNTIFS больше не возвращает правильный результат.

Для строки 5 значение MonthsWithValues должно равняться 10; однако каждый раз, когда я запускаю код сейчас, он дает мне 0. Я попытался отладить его, используя Step Into, Break Points/Toggle Points и Watch. Каждый раз, когда я запускаю код, он постоянно говорит, что значение MonthsWithValue равно 0. Помогите!

Код:

For i = 5 To LastRow
MonthsWithValues = Excel.WorksheetFunction.CountIfs(.Range(("M" & i), ("X" & i)), "<>0", .Range(("M" & i), ("X" & i)), "<>""")
Next i

2 ответа2

0

Попробуйте удалить третий аргумент для показателей:

MonthsWithValues = Excel.WorksheetFunction.CountIfs(.Range(("M" & i), ("X" & i)), "<>0", "<>""")

Только первый аргумент для countifs должен быть диапазоном; все остальные должны быть критериями. По сути, вы даете свой диапазон в качестве критерия. Excel принимает его (я не уверен, почему, но, возможно, он сравнивает значения с первым значением диапазона), но это не соответствует желаемым результатам.

0

@Musselman, ты был прав. Это давало мне ошибку, потому что MonthsWithValues не инициализировался числом, поэтому оно оценивалось как 0.

Правильный код:

Sub ReduceCost_Percentage()

With Worksheets("Analysis Worksheet")

Dim i As Long
Dim LastRow As Long
LastRow = Range("X" & Rows.Count).End(xlUp).Row
Dim Orig2016Total(68) As Long
Dim MonthsWithValues(68) As Long

For i = 5 To LastRow
Orig2016Total(i) = Excel.WorksheetFunction.Sum(.Range(("BC" & i), ("BN" & i)))
MonthsWithValues(i) = Excel.WorksheetFunction.CountIfs(.Range(("M" & i), ("X" & i)), "<>0", .Range(("M" & i), ("X" & i)), "<>""""")
Next i

Теперь это работает! Спасибо всем за помощь!

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