所以我有这个包含大量数据的工作簿。我有一张基本上根据某些条件复制数据的表格。
每行中的每个单元格都是这样的(最后指定的单元格是公式所在的单元格):
=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不能只是保持公式而不“帮助”我?
答案 0 :(得分:2)
由于您最好使用宏来重写公式,因此以下是基础知识:
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个存储宏的工作簿,并在提供更新数据集的工作簿中更改数据。
希望有帮助...