簡體   English   中英

Excel VBA.替換不替換文本

[英]Excel VBA .Replace not replacing text

我正在使用長數組公式,因此我將條件替換為“X_X”以避免 255 個字符的限制。 我還有一個預定義的變量 qbb,其中檢查了數組的實際長度,盡管對於這個例子,我只是將它設置為 150。當我手動添加完整的公式時,它本身就可以正常工作。 問題是當我嘗試通過 VBA 進行替換時,“.Replace”沒有替換任何東西。 最終結果仍然有“X_X”和“114”

    Dim frmla As String
    Dim qbb As Variant
    qbb = 150
    frmla = "('Final Summary'!R2C2:R114C2<=R13C4)*('Final Summary'!R2C2:R114C2>=R14C4)*(('Final Summary'!R2C3:R114C3=R10C4)+(R10C4=""""))"
    With ActiveSheet.Range("C16")
        .FormulaArray = "=IFERROR(INDEX('Final Summary'!R2C1:R114C1,SMALL(IF(X_X,ROW('Final Summary'!R2C1:R114C1)-MIN(ROW('Final Summary'!R2C1:R114C1))+1),ROWS(R16C3:RC))),"""")"
        .Replace What:="X_X", Replacement:=frmla
        .Replace What:="114", Replacement:=qbb
    End With

我還嘗試了備用“.Replace”格式:

        .Replace "X_X", frmla
        .Replace "114", qbb

沒運氣。

有任何想法嗎?

Range.Replace至少需要設置LookAt ,因為每次使用此方法時都會保存 LookAt、SearchOrder、MatchCase 和 MatchByte 的設置。 如果下次調用該方法時沒有為這些 arguments 指定值,則使用保存的值。 所以LookAt可能是保存值中的xlWhole

並且Range.Replace范圍已經包含公式之后運行。 但是,當使用默認Excel設置時,此公式將采用A1格式而不是R1C1格式。 所以frmla也需要是A1格式而不是R1C1格式。

Dim frmla As String
Dim qbb As Variant
qbb = 150
'frmla = "('Final Summary'!R2C2:R114C2<=R13C4)*('Final Summary'!R2C2:R114C2>=R14C4)*(('Final Summary'!R2C3:R114C3=R10C4)+(R10C4=""""))"
frmla = "('Final Summary'!$B$2:$B$114<=$D$13)*('Final Summary'!$B$2:$B$114>=$D$14)*(('Final Summary'!$B$2:$B$114=$D$10)+($D$10=""""))"
With ActiveSheet.Range("C16")
    .FormulaArray = "=IFERROR(INDEX('Final Summary'!R2C1:R114C1,SMALL(IF(X_X,ROW('Final Summary'!R2C1:R114C1)-MIN(ROW('Final Summary'!R2C1:R114C1))+1),ROWS(R16C3:RC))),"""")"
    .Replace What:="X_X", Replacement:=frmla, LookAt:=xlPart, MatchCase:=True
    .Replace What:="114", Replacement:=qbb, LookAt:=xlPart, MatchCase:=True
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM