【发布时间】:2011-10-02 12:59:19
【问题描述】:
所以我得到了这个包含大量数据的工作簿。我有这张表,它基本上根据某些条件复制数据。
每一行中的每个单元格如下所示(最后指定的单元格是公式所在的单元格):
=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 不能在没有“帮助”我的情况下保持公式不变?
【问题讨论】:
-
您使用什么方法来更新“Numbers1”工作表中的数据?如果您使用剪切/粘贴,Excel 会破坏旧的单元格引用并用它“移动”的单元格覆盖它们。如果您使用复制/粘贴,我相信它不应该这样做。
-
Numbers1 工作表中的数据是通过宏导入的。也许单元格引用因此被覆盖?如果是这种情况,也许我需要使用宏重新插入每个单元格的引用'
-
您是否有权访问正在导入数据的宏?如果它是批量删除行然后添加新数据而不是清除现有数据,我不会感到惊讶。如果是这样,那么简单的事情就是改变数据更新的方法。如果没有,接下来最好的办法是编写一个宏来在导入后重新编写您的公式。
-
我认为后者是最好的,因为宏是由提供从数据库读取数据的软件的公司编写的。所以这是一种“他们的财产”。但在这种情况下,我需要一个 Sub 来执行此操作而无需太多代码。每个公式本质上是相同的,唯一的区别是对公式所在单元格的引用。因此,如果很容易从“我在”单元格中获取单元格编号,那将更容易创建公式。我会自己尝试,但如果您有任何建议,我很乐意尝试:)
标签: excel excel-2007 formula excel-formula vba