【问题标题】:entering a VBA array formula that is too long输入过长的 VBA 数组公式
【发布时间】:2018-10-09 15:50:11
【问题描述】:

您好,我正在尝试以这种方式插入公式数组

Dim F1 As String
Dim f2 As String

F1 = "=SUM(--(FREQUENCY(IF(rptEURegThresholds!C[7]=""Yes"",IF(rptEURegThresholds!C[16]=""No"",IF(rptEURegThresholds!C[15]=""Total Disclosure"",1,1"
f2 = "MATCH(rptEURegThresholds!C[-1],rptEURegThresholds!C[-1],0)))),ROW(rptEURegThresholds!C[-1])-ROW(rptEURegThresholds!R[-6]C[-1])+1)>0))"

With sh8.Range("F7")
    .FormulaArray = F1
    .Replace "1,1", f2, xlPart
End With

但是出了点问题,找不到问题。请帮忙!!!

【问题讨论】:

  • 它会给你一个错误信息吗?如果是这样,说明有错误的消息和行是什么?

标签: arrays vba formula


【解决方案1】:

我能想到公式中的两个问题

  1. 公式中的字符总数(包括 F1 和 F2)约为 272,超过 Excel 中公式数组的 255 个字符限制请参考 SO 帖子 Overcoming the 255 char. limit for formulaArray in Excel VBA。。 p>

  2. 代码一定会停在这一行

    .FormulaArray = F1

    出现错误“无法设置范围类的 FormualArray 属性” 由于此阶段公式不完整(括号中的不匹配等)。

所以我尝试将工作表名称从“rptEURegThresholds”缩短为“rptEURT”,并将 F1 和 F2 字符串组合为 F1。它工作没有任何错误。但是,公式的正确工作只能由您自己检查。

Dim F1 As String

 F1 = "=SUM(--(FREQUENCY(IF(rptEURT!C[7]=""Yes"",IF(rptEURT!C[16]=""No"",IF(rptEURT!C[15]=""Total Disclosure""," & _
    "MATCH(rptEURT!C[-1],rptEURT!C[-1],0)))),ROW(rptEURT!C[-1])-ROW(rptEURT!R[-6]C[-1])+1)>0))"


    With Sheets(3).Range("F7")
        .FormulaArray = F1
    '    .Replace "1,1", f2, xlPart
    End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 2015-01-09
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多