长公式在单元格中有效,但从VBA插入时无效

问题描述 投票:0回答:1

首先,这是一个漫长而丑陋的公式警告。

[我正在尝试使VBA将此公式插入Excel。如果我让VBA插入不带'='的代码,然后在Excel中手动添加它,则证明该公式有效。但是,如果我试图让VBA插入并运行带有'='前缀的公式,那么一劳永逸,那么我会遇到运行时错误。

关于如何使VBA插入并运行此公式的任何想法?

    ActiveCell.FormulaR1C1 = _
"=IF(P1=""EQS FW"",IF(Statistics!B3=""Cadmium"",IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$5,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$5),'Hardness-bands'!$D$5,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$6,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$6),'Hardness-bands'!$D$6,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$7,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$7),'Hardness-bands'!$D$7,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$8,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))" & _
"<'Hardness-bands'!$C$8),'Hardness-bands'!$D$8,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$9,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$9),'Hardness-bands'!$D$9,""Err""))))),IF(Statistics!B4=""Copper"",IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$13,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$13),'Hardness-bands'!$D$13,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$14,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$14),'Hardness-bands'!$D$14,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$15,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300," & _
"MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$15),'Hardness-bands'!$D$15,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$16,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$16),'Hardness-bands'!$D$16,""Err"")))),IF(Statistics!B4=""Zinc"",IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$20,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$20),'Hardness-bands'!$D$20,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$21,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$21),'Hardness-bands'!$D$21,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-ban" & _
"ds'!$B$22,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$22),'Hardness-bands'!$D$22,IF(AND(INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))>'Hardness-bands'!$B$23,INDIRECT(ADDRESS(ROW(INDEX($B$3:$B$300,MATCH(""Alkalinity as CaCO3"",$B$3:$B$300,0))),9))<'Hardness-bands'!$C$23),'Hardness-bands'!$D$23,""Err"")))),Statistics!R4))),Statistics!R3)"
vba excel-vba excel
1个回答
0
投票

哇,那很大。您绝对应该将其拆散。

无论如何,我认为可能是因为您试图在字符串中插入语音标记。在VBA调试模式下,复制整个字符串并在立即窗口中查看它。在Excel单元格中与字符串完全相同吗?我的猜测不是。

尝试替换双语音标记:P1 =“” EQS FW“”

具有类似这样的内容:P1 =“&”“”“&” EQS FW“&”“”“

将为您正确插入语音标记。

另一个想法。进行语音标记调整将非常棘手,因此请首先从大量公式的一小部分开始尝试并逐步构建。

© www.soinside.com 2019 - 2024. All rights reserved.