Excel VBA阵列公式太长
我已经尝试了很长时间使用vba插入数组公式,但是它太长了,所以我使用replace函数将其拆分。但“替换”并不会相应地改变公式 任何帮助都将不胜感激 这是我最初的工作公式:Excel VBA阵列公式太长,excel,vba,Excel,Vba,我已经尝试了很长时间使用vba插入数组公式,但是它太长了,所以我使用replace函数将其拆分。但“替换”并不会相应地改变公式 任何帮助都将不胜感激 这是我最初的工作公式:{=IF($F:$F;聚合(15;6;ROW($C$2:$C$1203)/($C$2:$C$C$1203=$J2);COLUMNS($F$1:F$1));“)”和“&IFERROR(索引($E:$E;聚合(15;6;ROW($C$2:$C$C$1203=$J2);COLUMNS($E$1:E$1));”)”);“)=$F2&$
{=IF($F:$F;聚合(15;6;ROW($C$2:$C$1203)/($C$2:$C$C$1203=$J2);COLUMNS($F$1:F$1));“)”和“&IFERROR(索引($E:$E;聚合(15;6;ROW($C$2:$C$C$1203=$J2);COLUMNS($E$1:E$1));”)”);“)=$F2&$E2;“Diebe-Person”和“;替代品($E:$selooku;聚合(替代品:$rore)(替代品:替代品)(15;6;行($C$2:$C$1203)/($C$2:$C$1203=$J2);列($E$1:E$1));“”)和“&IFERROR(索引($F:$F;聚合(15;6;行($C$2:$C$1203)/($C$C$2:$C$1203=$J2);列($E$1:E$1));“;”;“ß”;“ss”);“ö”;“oe”);表2!$A:$B;2;假);
以下是相应的VBA代码:
Sub Macro1()
Dim sht As Worksheet
Dim formulapart2 As String
Dim formulapart3 As String
Dim rng As Range
shtName = InputBox("Respective Sheetname:")
Set sht = ThisWorkbook.Sheets(shtName)
formulapart2 = "INDEX(C6,AGGREGATE(15,6,ROW(R2C3:R1203C3)/(R2C3:R1203C3=RC10),COLUMNS(R1C6:R1C[-6])))"
formulapart3 = "INDEX(C5,AGGREGATE(15,6,ROW(R2C3:R1203C3)/(R2C3:R1203C3=RC10),COLUMNS(R1C5:R1C[-7])))"
Set rng = sht.Range("L2:O11")
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),""""))"
rng.Replace """F2""", formulapart2, xlPart
rng.Replace """F3""", formulapart3, xlPart
rng.Replace """F4""", formulapart3, xlPart
rng.Replace """F5""", formulapart3, xlPart
End Sub
实际上,这段代码不包含任何错误,但replace函数不会更改公式。这里的问题是,您试图传递的公式部分使用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
是否确实需要输入数组?在VBA中,不允许输入长度超过255个字符的数组公式直接在excel中输入公式时不会出现问题-使用定义的名称缩短公式的部分;-尝试缩短公式本身;-(尽可能避免发生错误,避免更糟糕的后果,但这是我的观点。)