Использование динамического диапазона в Excel без использования именованных диапазонов - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь написать макрос, который будет работать по всей длине листа и делать соответствующие вычисления.

Это код, который у меня был для статического диапазона:

With .Range("P2:P" & LastRow)
    .Formula = "=SUMIF('Sheet2'!A$2:A$530,'Sheet1'!N2,'Sheet2'!B$2:B$530)"
    .Value = .Value
    Columns("P:P").Select
    Selection.NumberFormat = "0.00"
End With

У меня есть общее представление о том, что я пытаюсь сделать здесь, но, поскольку я новичок в VBA, я не могу понять, как это сделать.

Это текущий код, который я пробуюдля записи:

 With .Range("P2:P" & LastRow)
        .Formula = "=SUMIF(Worksheets('Sheet2').Range("A2:A"& LR),'Sheet1'!N2,'Sheet2'!B$2:B$530)"
        .Value = .Value
        Columns("P:P").Select
        Selection.NumberFormat = "0.00"
    End With

Однако для этого он продолжает давать мне ошибку завершения оператора, которую я хочу исправить.

Кроме того, LastRow и LR содержат номер последней ячейкиоба листа соответственно.

1 Ответ

0 голосов
/ 24 апреля 2018

Попробуй это. Ваш синтаксис был немного неправильным в первом бите вашего SUMIF, и вы жестко программировали последний номер строки. Обратите внимание, что нет необходимости выбирать.

With .Range("P2:P" & LastRow)
    .Formula = "=SUMIF(Sheet2!A$2:A$" & LR & ",'Sheet1'!N2,'Sheet2'!B$2:B" & LR & ")"
    .Value = .Value
    .NumberFormat = "0.00"
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...