Формула SUMIF в VBA с двумя операторами LastRow - PullRequest
0 голосов
/ 20 января 2020

Я хочу иметь формулу, которая делает SUMIF с двумя операторами lastrow. У меня есть следующий код, но я получаю сообщение об ошибке: Несоответствие типов.

LastRowStaff = Cells(Rows.Count, 4).End(xlUp).Offset(-1, 0).Row
LastRowExpense = Cells(Rows.Count, 12).End(xlUp).Offset(-1, 0).Row

Range("F12").Formula = "=SUMIF(D42:D" & LastRowStaff & ";" * Accrual * ";& L42:L" & LastRowExpense & ")"

Формула основана на следующей формуле в Excel, которая выполняет именно то, что я хочу, без функции lastrow.

=SUMIF(D42:D857;"*Accrual*";L42:L857)

Что не так с моим кодом VBA?

1 Ответ

0 голосов
/ 20 января 2020

Согласно моему комментарию, вы путаете синтаксис Excel с VBA. Вам нужно использовать запятую вместо точки с запятой, удвоить кавычки и удалить лишние операторы &. Лучше всего Debug.Print ваш результат перед его использованием.

"=SUMIF(D42:D" & LastRowStaff & ",""*Accrual*"",L42:L" & LastRowExpense & ")"

Примечание 1: И LastRowStaff, и LastRowExpense берут свое значение из неявного ActiveSheet. Попробуйте использовать явные ссылки на листы.

Примечание 2: Также обратите внимание, что обе последние строки должны быть одинаковыми, в противном случае формула вернет ошибка. Поэтому вам нужно будет получить только одну последнюю использованную переменную строки, чтобы минимизировать вероятность неправильных формул.

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