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

时间:2016-02-29 17:07:10

标签: excel vba excel-vba excel-2007

我有一个excel工作簿,每个工作表中有5个工作表,有一个包含值的表。 然后我根据用户选择(使用下拉列表)删除一些行(使用VBA)。 在我的VBA代码删除所有不必要的行后,Excel表明我有"不一致的列公式"我想在用户看到之前用VBA解决这个问题。

有没有办法用VBA做到这一点?

我现在一整天都在搜索谷歌,但仍然没有找到任何有用的东西,我脑子里唯一想要的就是在其中包含公式的所有行和列中进行迭代,检查是否公式包含一个错误,肯定会超级慢......

注意:如果这被视为Find inconsistent formulas in Excel through VBA的重复,我很抱歉,但唯一的答案是没有使用表作为数据范围

1 个答案:

答案 0 :(得分:1)

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

错误示例是通过设置列的公式,更改一个单元格,然后告知Excel在编辑后不更改公式列来获得的。

enter image description here

要将其还原为列公式(并删除错误),您可以运行更改DataBodyRange公式的VBA。

要更改的代码

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

请注意,通过迭代所有ListObjects而不是使用表的名称来获取引用,我有点懒惰。这是有效的,因为Table上只有一个Worksheet

该代码运行后的公式:

enter image description here

请注意,此答案与answer here.

非常相似