使用 VBA 查找并更正所有不一致的列公式

Find and correct all inconsistent column formulas with VBA

我有一个包含 5 个工作表的 excel 工作簿,每个工作表中都有一个 table 带有值。 然后我根据用户选择(使用下拉列表)删除一些行(使用 VBA)。 在我的 VBA 代码删除所有不必要的行后 Excel 声明我有 "inconsistent column formulas" 我想在用户看到它之前用 VBA 解决它。

有什么方法可以用 VBA 做到这一点吗?

我已经搜索 Google 一整天了,但仍然没有找到任何有用的东西,我唯一想到的就是遍历所有包含公式的行和列,检查是否公式有错误,肯定会超级慢...

注意:如果这算作 Find inconsistent formulas in Excel through VBA 的重复项,我很抱歉,但唯一的答案不适用于 tables 作为数据范围

如果您尝试重置 Table 中的公式,您可以使用 DataBodyRange.Formula 属性 重置整个列的公式。这解决了获取 Inconsistent Calculated Column Formula.

的一种方法

错误示例是通过为该列设置公式,更改一个单元格,然后告诉 Excel 在该编辑后不要更改公式列。

要将其恢复为列公式(并消除错误),您可以 运行 VBA 更改 DataBodyRange.

的公式

改回代码

Sub ResetTableColumnFormula()
    Dim listObj As ListObject
    For Each listObj In ActiveSheet.ListObjects
        listObj.ListColumns("b").DataBodyRange.Formula = "=[@a]"
    Next
End Sub

请注意,我有点懒惰,遍历所有 ListObjects 而不是使用 table 的名称来获取引用。这是可行的,因为 Worksheet.

上只有一个 Table

代码后的公式运行s:

请注意,此答案与 answer here.

非常相似