vba - 使用 activecell.offset 进行减法
问题描述
我的 lastrow 是 (315) - 在下面的代码中,我在最后一行需要帮助(我正在尝试通过在 col k 中使用 activecell-offset 来做(col H 的总和)-(col J 的总和)
''Totals''
Range("K" & LastRow).Offset(5, 0).Formula = "=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 的回答。
此外,我建议您参考正确的工作簿和表格。如果您忽略这一点,VBA 代码将始终引用活动的工作簿/工作表,这是您通常不想要的。
例如
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
推荐阅读
- c# - 如何从 asp.net core 中的外部 Json 文件访问数据?
- sql - 基于先进后出生成查询的 Oracle 查询获取员工进出时间
- url - 如何过滤多级扩展的Odata Query?
- reactjs - 如何将我的自定义主题从带有 material-ui 的反应项目传递给一个相同的主题,但只有可重用的组件通过汇总转译?
- c++ - GetKeyboardLayout() 在 ENG US 和 ENG INT 之间切换时不会改变
- android - 如何使用 Picasso 和 Android Studio 将图像加载到 Android 应用程序中
- graph-databases - Gentics Mesh 模式中的新字段类型
- python - 如何修复返回列表中最大增加的python代码的“列表索引超出范围”错误?
- angular - 将 FullCalendar 与 Angular 8 一起使用,dayGridMonth 中的事件与 timeGridWeek 不同,没有结束值
- php - 使用 composer 安装 phpunit selenium 时安装失败