вычесть с использованием activecell.offset - PullRequest
0 голосов
/ 19 марта 2019

моя последняя строка (315) - в приведенном ниже коде мне нужна помощь в последней строке (я пытаюсь сделать (сумма столбца H) - (сумма столбца J) с помощью activecell-offset в столбце k

''Totals''
Range("K" & LastRow).Offset(5, 0).Formula = "=activecell.offset(0,-3)-activecell.offset(0-1)"

Ответы [ 2 ]

0 голосов
/ 19 марта 2019
Range("K" & LastRow).Offset(5, 0).Formula = "=" & ActiveCell.Offset(0, -3).Address & "-" & ActiveCell.Offset(0 - 1).Address

Это бы сработало, но не красиво. Альтернативой может быть статическое VBA-решение, такое как ответ Дамиана.

Кроме того, я бы посоветовал вам обратиться к правильной книге и листу. Если вы пропустите это, код VBA всегда будет ссылаться на активную книгу / лист, что вам часто не нужно.

* 1006 Е.Г. *

With Workbooks(REF).Sheets(REF)
     .Range("K" & LastRow).Offset(5, 0).Formula = "=" & ActiveCell.Offset(0, -3).Address & "-" & ActiveCell.Offset(0 - 1).Address
End With

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

With Workbooks(REF).Sheets(REF)
     .Range("K" & LastRow).Offset(5, 0).Formula = "=" & .Cells(LastRow + 4, "K").Address & "-" & .Cells(LastRow, "J").Offset(0 - 1).Address  'Ranges randomly chosen 
End With

EDIT

Формулы являются динамическими. Другими словами, их результаты динамически изменяются в зависимости от значений / диапазонов, к которым они относятся. Если вы не закодируете событие Worksheet_Change, приведенные ниже вычисления не будут обновляться, если вы измените значения, для которых рассчитывается сумма. Однако вам не всегда нужны вычисления, чтобы быть динамическими, поэтому выберите то, что вам нужно. Я предполагаю, что у ваших столбцов есть заголовки.

With Workbooks(REF).Sheets(REF)
    LastRow = .Cells(.Rows.Count, "K").End(xlUp).Row
    LROWJ = .Cells(.Rows.Count, "J").End(xlUp).Row
    LROWH = .Cells(.Rows.Count, "H").End(xlUp).Row
    .Range("K" & LastRow).Value = Application.Sum(.Range("H2:H" & LROWH)) - Application.Sum(.Range("J2:J" & LROWJ))
End With
0 голосов
/ 19 марта 2019

Я не знаю, как ваша последняя строка становится 315, и у вас есть данные на 320, но вы ищете это:

Range("K" & LastRow).Offset(5, 0).Value = ActiveCell.offset(0,-3) - ActiveCell.offset(0-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...