繁体   English   中英

ArrayFormula超过255个字符。替换无效

[英]ArrayFormula More than 255 Characters .Replace Not Working

我有一个很大的工作表,上面有一堆数组公式。 我想使用VBA更新这些公式以包含if语句。 基本上,我希望新公式为If(year> max_year,If_True_Formula,If_False_Formula)。

通过联接三个字符串并设置ActiveCell.ArrayFormula =三个字符串的结果,这是一个相当简单的任务。 但是,如果结果字符串超过255个字符,事情就会变得复杂起来。 在某些情况下,我需要的公式确实超过了255个字符,因此我为If_True_Formula添加了占位符“ X_X”,为If_False_Formula添加了占位符“ 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

这种方法将我的大字符串分成三个子字符串,然后我可以使用三个replace语句以三段形式添加到现有字符串中。

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。 如果初始字符串未分解,则代码将进行适当的替换。 很奇怪...

我在这里发布了答案: 超过255个字符的数组公式

原因是必须随时替换公式。 因此,您不能用字符串代替。 我制作了一个适用于A1表示法英语功能的函数。 如果您多次在公式中使用if-command,但从未使用过1337行,则可以复制它,并在没有任何efford的情况下使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM