Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Excel VBA:如何用.replace重写我的长公式数组代码_Arrays_Excel_Replace_Vba - Fatal编程技术网

Arrays Excel VBA:如何用.replace重写我的长公式数组代码

Arrays Excel VBA:如何用.replace重写我的长公式数组代码,arrays,excel,replace,vba,Arrays,Excel,Replace,Vba,如何使用.Replace重写我的long.FormulaArray。请帮帮我 Private Sub CommandButton2_Click() Dim x As Variant Dim y As Variant Workbooks.Open (TextBox3.Text) x = Split(TextBox2.Value, Application.PathSeparator) y = Split(TextBox3.Value, Application.PathSeparator) Wo

如何使用
.Replace
重写我的long
.FormulaArray
。请帮帮我

Private Sub CommandButton2_Click()
Dim x As Variant
Dim y As Variant

Workbooks.Open (TextBox3.Text)

x = Split(TextBox2.Value, Application.PathSeparator)
y = Split(TextBox3.Value, Application.PathSeparator)

Workbooks(x(UBound(x))).Sheets("KomponentenohneDuplikate").Activate

Workbooks(x(UBound(x))).Sheets("KomponentenohneDuplikate").Range("z5").FormulaArray = "=iferror(INDEX('[" & y(UBound(y)) & "]Regelung&Partno'!C1:C10,MATCH(1,('[" & y(UBound(y)) & "]Regelung&Partno'!C5=RC[-25])*('[" & y(UBound(y)) & "]Regelung&Partno'!C9=""Diverse""),0),10),""-"")"
With Workbooks(x(UBound(x))).Sheets("KomponentenohneDuplikate").Range("y5:y3263")
.FillDown
.Value = .Value
End With
我尝试了以下代码。结果仅显示为第2部分。程序不会替换
第2部分
第3部分
中的公式。 Dim FormulaPart1作为字符串 Dim FormulaPart2作为字符串 Dim FormulaPart3作为字符串 暗淡的边缘和长的一样

origRS = Application.ReferenceStyle
Application.ReferenceStyle = xlR1C1

FormulaPart1 = "=IFerror(""Part2"",""-"")"
FormulaPart2 = "INDEX('[" & y(UBound(y)) & "]Regelung&Partno'!C1:C10,""Part3"",0),10)"
FormulaPart3 = "MATCH(1,('[" & y(UBound(y)) & "]Regelung&Partno'!C5=RC[-25])*('[" & y(UBound(y)) & "]Regelung&Partno'!C9=""Diverse"")"

With Workbooks(x(UBound(x))).Worksheets("KomponentenohneDuplikate").Range("z5")

.FormulaArray = FormulaPart1
.Replace what:="""Part2""", replacement:=FormulaPart2, lookat:=xlPart
.Replace what:="""Part3""", replacement:=FormulaPart3, lookat:=xlPart

End With
Application.ReferenceStyle = origRS

请帮我解决这个问题。

这是使用
的正确公式。替换
函数

Dim FormulaPart1 As String
Dim FormulaPart2 As String
Dim FormulaPart3 As String
Dim origRS As Long

origRS = Application.ReferenceStyle
Application.ReferenceStyle = xlR1C1

FormulaPart1 = "=IFERROR(""Part2"",""-"")"
FormulaPart2 = "INDEX('[" & y(UBound(y)) & "]Regelung&Partno'!C1:C10,""Part3"",10)"
FormulaPart3 = "MATCH(1,('[" & y(UBound(y)) & "]Regelung&Partno'!C5=RC[-25])*('[" & y(UBound(y)) & "]Regelung&Partno'!C9=""Diverse""),0)"

With     Workbooks(x(UBound(x))).Worksheets("KomponentenohneDuplikate").Range("z5")

.FormulaArray = FormulaPart1
.Replace what:="""Part2""", replacement:=FormulaPart2, lookat:=xlPart
.Replace what:="""Part3""", replacement:=FormulaPart3, lookat:=xlPart

End With
Application.ReferenceStyle = origRS

您的公式似乎试图返回1列范围中的第10列,因此它不起作用。但是,您几乎可以肯定使用查找而不是此数组公式,除非您可能有多个匹配项,并且希望得到第一个结果而不是最后一个结果。