通过仅更改公式中的特定数据来批量替换单元格
Mass replace cells with changing only specific data from their formula
我有一个 sheet 单元格包含这样的公式:
=IF(LEN('API Tool'!P358),IF('API Tool'!P358/POWER(10,18)>=C3+(C3*25/100),"API ERROR",'API
Tool'!P358/POWER(10,18)),)
我想批量替换它们并像这样向 C 单元格引用添加间接函数(检查粗体字母):
=IF(LEN('API Tool'!P358),IF('API Tool'!P358/POWER(10,18)>=INDIRECT("$C3")+(INDIRECT("$C3") *25/100),"API
ERROR",'API Tool'!P159/POWER(10,18)),)
有没有我可以使用的脚本或正则表达式来批量替换所有内容?
谢谢
首先,在 INDIRECT 中使用“$”符号是多余的,在这种情况下,也只会使事情复杂化。 every 的 every 部分的 INDIRECT 引用本质上是锁定引用。
就是说,如果您要进行的更改仅在特定范围内,select 首先是该范围。如果它们在整个 sheet 或整个分布sheet 中,请转到下一步。
点击Ctrl-H(或Cmd-H或编辑>查找和替换)打开“查找和替换”对话框。
在“查找”字段中,输入:
([^A-Z])(C\d+)
在“替换为”字段中,输入:
INDIRECT("")
确保将“搜索”位置设置为与所需范围相匹配。 (如果您 select 编辑了一个特定范围,然后在此处选择“特定范围”,您当前 select 编辑的范围将被填充。)
选中“使用正则表达式搜索”和“也在公式中搜索”复选框。这也会自动 select “匹配大小写”(因为正则表达式是 case-sensitive)。
单击“全部替换”按钮。
REGEX 必须包含(并避免)列可能偶然包含 C
的情况,例如对列 AC 的引用,这就是为什么它有两个部分:一个确保前面的字符C
不是另一个有效的列字母,而是抓住有问题的直接部分的字母。
此外,虽然这不是您所问内容的一部分,但我提醒您仔细考虑一下为什么要将这些直接引用替换为间接引用。很难想象有必要这样做的情况。一旦你将它们更改为 INDIRECT,如果你在任何地方添加或删除列或行,这些引用将不会根据这些更改进行调整——这意味着这些引用中的每一个随后都会指向错误的位置。
我有一个 sheet 单元格包含这样的公式:
=IF(LEN('API Tool'!P358),IF('API Tool'!P358/POWER(10,18)>=C3+(C3*25/100),"API ERROR",'API Tool'!P358/POWER(10,18)),)
我想批量替换它们并像这样向 C 单元格引用添加间接函数(检查粗体字母):
=IF(LEN('API Tool'!P358),IF('API Tool'!P358/POWER(10,18)>=INDIRECT("$C3")+(INDIRECT("$C3") *25/100),"API ERROR",'API Tool'!P159/POWER(10,18)),)
有没有我可以使用的脚本或正则表达式来批量替换所有内容?
谢谢
首先,在 INDIRECT 中使用“$”符号是多余的,在这种情况下,也只会使事情复杂化。 every 的 every 部分的 INDIRECT 引用本质上是锁定引用。
就是说,如果您要进行的更改仅在特定范围内,select 首先是该范围。如果它们在整个 sheet 或整个分布sheet 中,请转到下一步。
点击Ctrl-H(或Cmd-H或编辑>查找和替换)打开“查找和替换”对话框。
在“查找”字段中,输入:
([^A-Z])(C\d+)
在“替换为”字段中,输入:
INDIRECT("")
确保将“搜索”位置设置为与所需范围相匹配。 (如果您 select 编辑了一个特定范围,然后在此处选择“特定范围”,您当前 select 编辑的范围将被填充。)
选中“使用正则表达式搜索”和“也在公式中搜索”复选框。这也会自动 select “匹配大小写”(因为正则表达式是 case-sensitive)。
单击“全部替换”按钮。
REGEX 必须包含(并避免)列可能偶然包含 C
的情况,例如对列 AC 的引用,这就是为什么它有两个部分:一个确保前面的字符C
不是另一个有效的列字母,而是抓住有问题的直接部分的字母。
此外,虽然这不是您所问内容的一部分,但我提醒您仔细考虑一下为什么要将这些直接引用替换为间接引用。很难想象有必要这样做的情况。一旦你将它们更改为 INDIRECT,如果你在任何地方添加或删除列或行,这些引用将不会根据这些更改进行调整——这意味着这些引用中的每一个随后都会指向错误的位置。