Я долго пытался вставить формулу массива с помощью 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);""))}
Вот соответствующий код 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
На самом деле этот код не влечет за собой никакой ошибки, а просто заменяет функциюне меняет формулу.