Excel在复制时更改公式中的string
我在公式中有一个string(“A1”)的单元格编号,这需要在复制时相对更改,就像自动执行正常的单元格引用一样。 所以我不必访问400个单元格并手动更改它们。 任何方式我可以pipe理这个? 谢谢您的帮助。
我在400个单元格中使用的公式:
=IF(IDENTIC($M$10;"Entries are correct.");IF(ISNUMBER(FIND("A1";$N$5));"S1";IF(ISNUMBER(FIND("A1";$N$6));"S2";IF(ISNUMBER(FIND("A1";$N$7));"S3";IF(ISNUMBER(FIND("A";$N$8));"S4";IF(ISNUMBER(FINDEN("A1";$N$9));"S5";"")))));"")
我不想在所有400个单元格中将每个单元格都作为文本进行更改,它应该相对于正常的单元格引用进行相对更改。
要在Excel中获取单元格引用作为string,您可以使用CELL
函数 :
=CELL("address";A1)
由于函数的第二个参数是实际的单元格引用,所以如果复制并粘贴此公式,它将自动更新。
请记住,这将返回一个包含绝对地址的string,所以它将返回"$A$1"
,而不是"A1"
。
CELL(…)将工作。
更一般地说,您也可以使用连接来将公式构build为string。 当你有一个列表的东西,你想有公式引用这些名字,这可能是有用的。 或者在你的情况下,它也可以工作。
build立公式为带连接符的string,然后search和replace
首先,我尽可能多地build立公式,以便总体结构已经形成(只有你想要改变的参考不会是最终的):
以你的案例为例:
然后,我把这个几乎形成的公式包装成一个CONCATENATE()。 然后我会安排一些参考资料,我将在CONCAT()中指向自动递增到我实际上想包括在我的公式中的文本。 像这样的东西:
=CONCATENATE("IF(FIND(""",A1,"""$A$4),TRUE, FALSE)")
A1,是指实际的单元格,所以单元格的内容就是我的公式中所包含的内容。 然后,您可以一路增加,为每个单元格(您的案例中的400个单元格)build立适当的公式。 你需要三元组“”“,因为你想要包括A1,B1等……是文本引用,而不是单元格。
然后,所有你需要做的就是select所有的公式,复制它们,并确保select过去作为值,说下线(保持连接完好,所以你可以稍后编辑它,如果需要)。 然后用所有选定的粘贴线,您使用查找和replace在公式的开头添加“=”符号。 在查找和replace方面最好是太具体,所以find“IF(F”),并用“= IF(F”或类似的replace,然后发生魔法:
你可以看到A1,C1,D1已经返回TRUE,其余的都是#VALUE! 因为find方法找不到string。