2016-12-13 32 views
0

我已經尋找一個解決方案來輸入一個長陣列公式,但替換方法不起作用。 這是我的代碼:無法使用數組公式(VBA)工作替換方法

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])。 請幫忙! 謝謝!

回答

0

這將取代您的字符串中的reeplazar,然後您所要做的就是確保在將其分配給單元格時將其分配爲數組公式。我相信你的配方是可行的,因爲我無法測試它。

但這個代碼將執行代替您

Sub code() 
Dim parte1, parte2 As String 
With ThisWorkbook.Sheets("RESUMEN E. CRITICOS") 
    ''RUT 

     parte1 = "IFERROR(INDEX(r‌​ut_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(plata‌​forma<>""*"",ROW(rut‌​_cliente)-ROW(BD_EV!‌​$A$3)+1),ROWS(BD_EV!‌​$A$2:A2))),""""),IFE‌​RROR(INDEX(rut_clien‌​te,SMALL(IF(platafor‌​ma=$B$1,ROW(rut_clie‌​nte)-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 
+2

感謝Kylo ......在力愛你的角色喚醒。我應該暗淡「arrayFormula」?如果是的話,它應該是字符串?謝謝 –

+0

謝謝,忘記了我的屁股被一個女孩鞭打的事實,是的,我做得很好。是的,使它成爲'字符串' – KyloRen

+0

Kylo,嘗試你的第一個解決方案,因爲我想把公式放在單元格上,而不是價值。它崩潰在'.FormulaArray = arrayFormula'與1004錯誤:不能分配範圍類的formulaarray屬性。 –

相關問題