Я попробовал и протестировал этот метод с более простыми формулами, и он отлично работал, однако, когда я пробую его с моими новыми более длинными формулами, он вводит FormulaPart1
в range("J2")
, но не заменяет текст на FormulaPart2
и FormulaPart3
.Код также не дает никаких ошибок.
В основном формула рассчитывает% доступности, который составляет
((Available Hours - Engineering Downtime)/ Available Hours) * 100
Пожалуйста, смотрите мой код ниже.
Sub ArrayFormCalc()
Dim FormulaPart1 As String
Dim FormulaPart2 As String
Dim FormulaPart3 As String
Dim S1 As Worksheet
Set S1 = Sheets("Sheet1")
FormulaPart1 = "=IFERROR(((INDEX(INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")),MATCH(RC6,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Shift""),0)" & _
",MATCH(R5C,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Date""),0))))-xxxxx,"""")"
FormulaPart2 = "SUMIFS(DT_Cur_Day_Hrs,DT_Equip,RC7,DT_Site,RC5,DT_Strt_Date,R5C,DT_Shift,RC6,DT_Cat,""Engineering Downtime"")" & _
"+SUMIFS(DT_Nxt_Day_Hrs,DT_Equip,RC7,DT_Site,RC5,DT_End_Date,R5C,DT_Shift,RC6,DT_Cat,""Engineering Downtime""))/yyyy"
FormulaPart3 = "(INDEX(INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")),MATCH(RC6,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Shift""),0)," & _
"MATCH(R5C,INDIRECT(RC5&""_""&TEXT(R5C,""mmm"")&""_Date""),0))*100)"
Application.ReferenceStyle = xlR1C1
With S1.Range("J2")
.FormulaArray = FormulaPart1
.Replace "xxxxx", FormulaPart2, xlPart
.Replace "yyyy", FormulaPart3, xlPart
End With
Application.ReferenceStyle = xlA1
End Sub