2013-05-31 67 views
1

我有一个Excel工作簿与工作表Sheet1Sheet2,其中Sheet2具有参考值Sheet1如下公式:防止Excel当行被删除在式删除参考

+-----------+------------+ 
| address | value | 
+-----------+------------+ 
| Sheet1!A1 | 1   | 
| Sheet1!B1 | 3   | 
| Sheet1!C1 | 5   | 
| Sheet2!A1 | =Sheet1!A1 | 
| Sheet2!B1 | =Sheet1!B1 | 
| Sheet2!C1 | =Sheet1!C1 | 
+-----------+------------+ 

如果删除行1从Sheet1,使用以下C#interop:

thisRange["a1"].EntireRow.Delete() 

然后所有的公式设置为错误,例如=Sheet1!#REF!

一旦行被删除,有没有办法保留公式中现有的引用?我想我可以将所有的公式复制到一个数组中,然后将它们重新复制到表单中,但我最好喜欢让它们不首先消失。

+0

可能还需要进一步解释。你想达到什么目的?例如,如果你想保留公式而不是数值,那么为什么不把这些行删除而只是将'1','3'&'5删掉?如果Sheet1!A2包含'7'和Sheet2!A2 = Sheet1!A2删除后对Sheet2!A2的期望是什么? – pnuts

回答

1

我不知道这种情况不会发生。

即便如此,我通常用于类似场景的工作是在删除命令期间使公式不再使用公式。如果您在Sheet2公式前添加一个文本信,完成删除功能,在Sheet2则公式之前删除的文字字母的功能将仍然工作

=工作表Sheet1!A1

A =工作表Sheet1!A1

=工作表Sheet1!A1

这可能与查找,替换命令来完成,如果你手动删除的行或如果编程功能,我想看看一个For Each在公式范围内连接“a”的单元格然后通过使用字符串的长度将其修剪回去-1

6

你想要做的是在Sheet2中使用引用。这些保持不变,不要抱怨,如果一个单元格或行被移动或删除,他们将可靠地保持指向相同的参考。

因此,在你的榜样,你的Sheet2中值变为:

+-----------+------------------------+ 
| address |   value   | 
+-----------+------------------------+ 
| Sheet2!A1 | =INDIRECT("Sheet1!A1") | 
| Sheet2!B1 | =INDIRECT("Sheet1!B1") | 
| Sheet2!C1 | =INDIRECT("Sheet1!C1") | 
+-----------+------------------------+ 

我要把它留给读者使得参考文本更具活力的发挥(如& ROW()“工作表Sheet1!A”) 。请参阅https://superuser.com/questions/316239/how-to-get-the-current-column-name-in-excel