我有一大堆數組公式的大工作表。我想用VBA更新這些公式以包含if語句。基本上我想新的公式爲If(year> max_year,If_True_Formula,If_False_Formula)。ArrayFormula超過255個字符。替換不工作
這是一個相當簡單的任務,通過連接三個字符串並設置ActiveCell.ArrayFormula =三個字符串的結果來完成。但是,如果結果字符串超過255個字符,事情就會變得複雜。在一些情況下,我需要的公式做了超過255個字符,所以我加了If_False_Formula爲If_True_Formula佔位符「X_X」和「Y_Y」並用此方法來創建完整的公式:
With ActiveCell
.FormulaArray = If_Statement
.Replace "X_X", If_True
.Replace "Y_Y", If_False
End With
這個工作完美,但我的數組公式中的幾個數組公式很長,If_True部分和If_False部分每個都超過255個字符。爲了克服這個問題,我想我可能只是將每個這些字符串成三塊(我不會一個字符串超過750個字符),然後用改良的方法來創建末滿弦:
True_1 = ""
If len(If_True) > 255 Then
True_1 = Left(If_True, len(If_True)/3) & "X2_X2"
True_2 = Mid(If_True, len(If_True)/3, len(If_True)/3) & "X3_X3"
True_3 = Mid(If_True, len(True_1) + len(True_2) - 10, len(If_True))
End If
該方法將我的大字符串分成三個子字符串,然後我可以使用三個替換語句將三個字符串添加到現有字符串中。
With ActiveCell
.FormulaArray = If_Statement
If True_1 = "" Then
.Replace "X_X", If_True
Else
.Replace "X_X", True_1
.Replace "X2_X2", True_2
.Replace "X3_X3", True_3
End If
End With
一些奇怪的原因,代碼運行沒有錯誤,但不會使True_1,True_2,True_3任何替換。如果初始字符串沒有分解,代碼將進行適當的替換。很奇怪...
也嘗試'。替換內容:=「X_X」,替換:= True_1,LookAt:= xlPart'等等 –