Excel 2007 - 公式更改为 #REF

标签 excel excel-2007 formula excel-formula vba

所以我有这本包含大量数据的工作簿。我有这张表,它基本上根据某些条件复制数据。

每行中的每个单元格如下所示(最后一个指定的单元格是公式所在的单元格):

=IF(Numbers1!E2<>0;Numbers1!A2;"")
=IF(Numbers1!E3<>0;Numbers1!A3;"")
=IF(Numbers1!E4<>0;Numbers1!A4;"")
=IF(Numbers1!E2<>0;Numbers1!B2;"")
=IF(Numbers1!E3<>0;Numbers1!B3;"")
=IF(Numbers1!E4<>0;Numbers1!B4;"")

所以单元格 A2 中的公式是第一个,A3 中的公式是第二行,依此类推。

我想从表格 Numbers1 中复制同一列和同一行的值,如果 E 列同一行中的值不为 0。这似乎工作得很好。

但是,当我更新 Numbers1 表中的数据时,公式突然无效,公式现在看起来像这样:
=IF(Numbers1!#REF!<>0;Numbers1!#REF!;"")

每个单元格中的每个公式看起来都与上面的公式相同。而且我做不到,为什么Excel不能在没有“帮助”我的情况下保持公式不变?

最佳答案

由于您最好使用宏来重写您的公式,以下是基础知识:

Sub RewriteFormulas()

    Dim row, col As Integer
    row = 1               'row you want your target formulas to be on

    For row = 1 To 60
        For col = 1 To 13

            ActiveSheet.Cells(row, col).Formula = "=IF(Numbers1!" & Cells(row,col).Address & "<>0,Numbers1!" & Cells(row+2,col).Adddress & ","""")"

        Next row
    Next col

End Sub

您可以尝试使用不同的工作表(或不同的工作簿),而不仅仅是 ActiveSheet因此,您可以拥有 1 个工作簿来存储宏并更改任何提供更新数据集的工作簿中的数据。

希望有帮助...

关于Excel 2007 - 公式更改为 #REF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646265/

相关文章:

C# COM 服务器事件 “lost” 在 Excel 处于编辑模式时引发事件

excel - 使用 Excel 查找组的两个成员是否出现在另一个组中

excel - 删除 'NULL' 值的代码

interop - 检查excel中是否存在工作表

crystal-reports - 在Crystal Reports中将数字转换为单词

Excel从文本框中获取单元格值

Excel:连接列中的最后一个非空单元格

excel - VBA - 测试一个值是否是 PivotField 的有效选择

vba - 在excel中添加不同数量的点

java - 数据库行中的公式 - Java