【发布时间】:2021-08-05 16:49:14
【问题描述】:
我在电子表格中有一张表格,我每天都会刷新。工作表中的行数每天都在变化,我目前用于计算表中项目的公式不包括刷新后添加到我的表中的任何新数据行(如果有) .
我想创建一个宏来自动更新这些公式以包含表中的所有行。下面的代码是我的尝试。该代码在计算正确值方面工作得很好,但它没有在单元格中输入公式。它只是输入公式的结果。
如何更改代码以将公式输入单元格而不仅仅是值?
Sub formula_update()
ThisWorkbook.Activate
Worksheets("Summary").Activate
Range("F9").Select
Do Until IsEmpty(Selection)
ActiveCell.Formula = Application.CountIfs(Range(ActiveCell.Offset(3, 0), ActiveCell.Offset(3, 0).End(xlDown)), "<>0")
ActiveCell.Offset(0, 1).Select
Loop
End Sub
【问题讨论】:
-
您需要输入一个公式(作为字符串):
ActiveCell.Formula = "=COUNTIFS(...)"。 -
另见How to avoid using Select。
Activate和ActiveCell也应避免使用。 -
如果您使用
CTRL+T将数据集格式化为表格,您可以命名范围,公式实际上会随着表格的大小而缩放,因此您可以完全避免使用 VBA。例如,=Counta( YourTable[ColumnA] ) -
@BigBen 你有没有一个例子可以分享如何在变化范围内做到这一点?我的桌子经常有行被添加/删除。公式不会自动更新以包含我添加的新行,因此我希望宏为我重新创建公式。如何将公式作为字符串输入并仍然捕获偏移量和 end(xldown) 为我做了什么?
标签: excel vba excel-formula