Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除行时防止Excel删除公式中的引用_C#_Excel_Excel Formula - Fatal编程技术网

C# 删除行时防止Excel删除公式中的引用

C# 删除行时防止Excel删除公式中的引用,c#,excel,excel-formula,C#,Excel,Excel Formula,我有一个Excel工作簿,其中包含工作表Sheet1和Sheet2,其中Sheet2包含引用Sheet1中值的公式,如下所示: +-----------+------------+ | address | value | +-----------+------------+ | Sheet1!A1 | 1 | | Sheet1!B1 | 3 | | Sheet1!C1 | 5 | | Sheet2!A1 | =Sheet1!A1

我有一个Excel工作簿,其中包含工作表Sheet1和Sheet2,其中Sheet2包含引用Sheet1中值的公式,如下所示:

+-----------+------------+
|  address  |   value    |
+-----------+------------+
| Sheet1!A1 | 1          |
| Sheet1!B1 | 3          |
| Sheet1!C1 | 5          |
| Sheet2!A1 | =Sheet1!A1 |
| Sheet2!B1 | =Sheet1!B1 |
| Sheet2!C1 | =Sheet1!C1 |
+-----------+------------+
如果使用以下C互操作从Sheet1中删除第1行:

thisRange["a1"].EntireRow.Delete()
然后,所有公式都设置为错误,例如=Sheet1!REF


删除行后,是否有办法保留公式中的现有引用?我想我可以将所有公式复制到一个数组中,然后重新复制到工作表中,但理想情况下,我希望它们不会在第一时间消失

我不知道有哪种设置允许这种情况不发生

话虽如此,我通常用于类似场景的工作是在delete命令期间使公式不再是公式。如果在Sheet2中的公式之前添加文本字母,请完成delete函数,删除Sheet2中公式之前的文本字母,然后这些函数仍然有效

=第1页!A1

a=1!A1

=第1页!A1


如果您正在手动删除行,或者如果编程一个函数,则可以使用Find Replace命令来完成此操作。我会为范围内的每个单元格查找a,在公式之前连接a,然后使用字符串-1的长度将其修剪掉。

我不知道有哪种设置允许这种情况发生

话虽如此,我通常用于类似场景的工作是在delete命令期间使公式不再是公式。如果在Sheet2中的公式之前添加文本字母,请完成delete函数,删除Sheet2中公式之前的文本字母,然后这些函数仍然有效

=第1页!A1

a=1!A1

=第1页!A1


如果您要手动删除行,或者如果要编程一个函数,则可以使用Find Replace命令来完成此操作。我将为范围内的每个单元格查找a,在公式之前连接a,然后使用字符串-1的长度将其修剪掉。

您要做的是使用Sheet2中的引用。它们保持不变,并且不会抱怨如果单元格或行被移动或删除,它们将可靠地保持指向同一引用

因此,在您的示例中,Sheet2值变为:

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

我将把它留给读者去玩,让参考文本更加动态,例如Sheet1!A&ROW。请参见

您要做的是使用表2中的引用。它们保持不变,并且不会抱怨如果单元格或行被移动或删除,它们将可靠地保持指向同一引用

因此,在您的示例中,Sheet2值变为:

+-----------+------------------------+
|  address  |          value         |
+-----------+------------------------+
| Sheet2!A1 | =INDIRECT("Sheet1!A1") |
| Sheet2!B1 | =INDIRECT("Sheet1!B1") |
| Sheet2!C1 | =INDIRECT("Sheet1!C1") |
+-----------+------------------------+
我将把它留给读者去玩,让参考文本更加动态,例如Sheet1!A&ROW。看