繁体   English   中英

使用activecell.offset减去

[英]substract using activecell.offset

我的最后一行是(315)-在下面的代码中,我需要在最后一行中寻求帮助(我正在尝试做(col H的总和)-(col J的总和)-通过在col k中使用activecell-offset

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

我不知道你的最后一行是如何变成315你有320的数据,但你正在寻找这个:

Range("K" & LastRow).Offset(5, 0).Value = ActiveCell.offset(0,-3) - ActiveCell.offset(0-1)
Range("K" & LastRow).Offset(5, 0).Formula = "=" & ActiveCell.Offset(0, -3).Address & "-" & ActiveCell.Offset(0 - 1).Address

这会起作用,但不是很漂亮。 另一种选择是静态VBA解决方案,例如Damian的答案。

此外,我建议您参考正确的工作簿和-sheet。 如果您要省略它,VBA代码将始终引用活动工作簿/ -sheet,这是您经常不想要的。

例如

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

编辑

公式是动态的。 换句话说,它们的结果会随着它们所指的值/范围而动态变化。 除非您编写一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM