我一直在寻找输入长数组公式的解决方案,但是replace方法不起作用。这是我的代码:
Sub code()
Dim parte1, parte2 As String
With ThisWorkbook.Sheets("RESUMEN E. CRITICOS")
''RUT
parte1 = "IFERROR(INDEX(rut_cliente,SMALL(IF(plataforma=R1C2,ROW(rut_cliente)-ROW(BD_EV!R3C1)+1),ROWS(BD_EV!R2C1:R[-1]C[-2]))),"""")"
With .Range("C3")
.FormulaArray = "=IF(R1C2=""Todas"",IFERROR(INDEX(rut_cliente,SMALL(IF(plataforma<>""*"",ROW(rut_cliente)-ROW(BD_EV!R3C1)+1),ROWS(BD_EV!R2C1:R[-1]C[-2]))),""""),reemplazar)"
.Replace "reemplazar", parte1, xlPart
End With
End With
End Sub
该数组公式从另一个工作表中获取值列表,并使用命名范围和静态引用。问题是,如果我要删除引用工作表上的行,则静态引用将停止工作。我尝试对静态引用使用具有命名范围的解决方法,但这无济于事(它们会不断重新排列引用范围...无法告诉原因)。这是静态引用:ROW(BD_EV!R3C1)+1)
和ROWS(BD_EV!R2C1:R[-1]C[-2])
。请帮忙!谢谢!
这将替换reeplazar
为您的字符串,然后要做的就是确保在将其分配给单元格时将其分配为数组公式。我相信您的公式可以正常运行,因为我无法对其进行测试。
但是这段代码将为您完成替换
Sub code()
Dim parte1, parte2 As String
With ThisWorkbook.Sheets("RESUMEN E. CRITICOS")
''RUT
parte1 = "IFERROR(INDEX(rut_cliente,SMALL(IF(plataforma=R1C2,ROW(rut_cliente)-ROW(BD_EV!R3C1)+1),ROWS(BD_EV!R2C1:R[-1]C[-2]))),""""))"
rep = "=IF(R1C2=""Todas"",IFERROR(INDEX(rut_cliente,SMALL(IF(plataforma<>""*"",ROW(rut_cliente)-ROW(BD_EV!R3C1)+1),ROWS(BD_EV!R2C1:R[-1]C[-2]))),""""),reemplazar)"
arrayFormula = Replace(rep, "reemplazar", parte1)
With .Range("C3")
.FormulaArray = arrayFormula
End With
End With
End Sub
或者,如果您想从单元格本身获取价值,
Sub code()
Dim parte1, parte2 As String
With ThisWorkbook.Sheets("RESUMEN E. CRITICOS")
''RUT
parte1 = "IFERROR(INDEX(rut_cliente,SMALL(IF(plataforma<>""*"",ROW(rut_cliente)-ROW(BD_EV!$A$3)+1),ROWS(BD_EV!$A$2:A2))),""""),IFERROR(INDEX(rut_cliente,SMALL(IF(plataforma=$B$1,ROW(rut_cliente)-ROW(BD_EV!$A$3)+1),ROWS(BD_EV!$A$2:A2))),""""))"
cel = .Range("C3").FormulaArray
arrayFormula = Replace(cel, "reemplazar", parte1)
.Range("C3").FormulaArray = arrayFormula
End With
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句