VBA excel, Sumif динамически грести - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь суммировать все проверенные значения. Для

ActiveCell.Formula = "=SUMIF(B1:B5,TRUE,A1:A5)" 

работает нормально, однако, когда:

ActiveCell.Formula = "=SUMIF(Range(cells(1,2),cells(lastrow,2)),TRUE,Range(cells(1,3),cells(lastrow,3))" 

я получаю ошибку компиляции. Может кто-нибудь, пожалуйста, помогите мне.


Dim lastrow As Long

lastrow = Cells(Rows.Count, "A").End(xlUp).Row
Range("D1").Select
ActiveCell.Formula = "=SUMIF(B1:B5,TRUE,A1:A5)"    'Please help me to convert into Range(cells(1,2),cells(lastrow,2)),True,Range(cells(1,3),cells(lastrow,3))

1 Ответ

0 голосов
/ 27 июня 2019

У вас неверный синтаксис для вашей формулы. Вы используете ссылку VBA в формуле Excel (будет разбивать точки):

ActiveCell.Formula = _
"=SUMIF( _  'Application
Range(cells(1,2),cells(lastrow,2)) _ 'VBA
,TRUE, _ 'Application
Range(cells(1,3),cells(lastrow,3)) _ 'VBA
" 'Application

Чтобы формула отображалась в ячейке, вы должны отобразить ее так:

ActiveCell.Formula = "=SUMIF(B1:B" & lastrow & ",TRUE,A1:A" & lastrow & ")" 

Если вы хотите, чтобы VBA выполнял эту работу, и вы хотите вывести только значение:

ActiveCell.Value = Application.SUMIF(Range(Cells(1,2),Cells(lastrow,2)),"TRUE",Range(Cells(1,1),Cells(lastrow,1)))

В связи с изменением кода вы ранее использовали столбец 1 (a) в качестве диапазона сумм, хотя в своем коде вы указали столбец 3 (c) ... я использовал 1 в моих примерах кода из вашей рабочей SUMIF функция.

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