我已经尝试了很长时间使用vba插入数组公式,但是它太长了,因此我使用replace函数将其拆分。但是替换仍然不会相应地更改公式。
任何帮助将不胜感激。
这是我最初的工作公式:WHEN MATCHED AND EXISTS (SELECT SRC.* EXCEPT SELECT TGT.*) THEN
UPDATE ...
以下是相应的VBA代码:
{=IF(IFERROR(INDEX($F:$F;AGGREGATE(15;6;ROW($C$2:$C$1203)/($C$2:$C$1203=$J2);COLUMNS($F$1:F$1)));"")&" "&IFERROR(INDEX($E:$E;AGGREGATE(15;6;ROW($C$2:$C$1203)/($C$2:$C$1203=$J2);COLUMNS($E$1:E$1)));"")=$F2&" "&$E2;"dieselbe Person";IFERROR(VLOOKUP(SUBSTITUTE(SUBSTITUTE(IFERROR(INDEX($E:$E;AGGREGATE(15;6;ROW($C$2:$C$1203)/($C$2:$C$1203=$J2);COLUMNS($E$1:E$1)));"")&" "&IFERROR(INDEX($F:$F;AGGREGATE(15;6;ROW($C$2:$C$1203)/($C$2:$C$1203=$J2);COLUMNS($E$1:E$1)));"");"ß";"ss");"ö";"oe");Sheet2!$A:$B;2;FALSE);""))}
实际上,该代码不会带来任何错误,但是replace函数只是不会更改公式。
答案 0 :(得分:1)
这里的问题是,您要传递的公式部分使用R1C1表示法表示,而已经在范围内的公式可能用A1表示法表示。
我使用“可能”一词,是因为这很可能是您为Excel公式设置的,因此在运行该行之后
rng.FormulaArray = "=IF(IFERROR(""F2"","""")&"" ""&IFERROR(""F3"","""")=RC6&"" ""&RC5,""dieselbe Person"",IFERROR(VLOOKUP(SUBSTITUTE(SUBSTITUTE(IFERROR(""F4"","""")&"" ""&IFERROR(""F5"",""""),""ß"",""ss""),""ö"",""oe""),Sheet2!C1:C2,2,FALSE),""""))"
该公式将转换为A1样式的公式,并且会阻止您的Replace
方法按您期望的方式工作。
解决此问题的一种方法是在代码开始时将引用样式设置为R1C1,最后像这样将其恢复为A1:
Application.ReferenceStyle = xlR1C1
' You code
Application.ReferenceStyle = xlA1