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列,因此它不起作用。但是,您几乎可以肯定使用查找而不是此数组公式,除非您可能有多个匹配项,并且希望得到第一个结果而不是最后一个结果。