将公式的一维数组复制到Excel中的listobject列中,而无需从第一个单元格自动填充

时间:2018-11-22 03:56:36

标签: arrays excel vba listobject

让我有些疯狂。我想将一维数组中的公式列表复制到listobject列标题所引用的列中。但是,当我尝试复制公式数组时,Excel会采用数组中的第一个公式并自动将其向下填充。如果我使用的范围相差一个(例如,填充除第一个单元格之外的所有单元格,或除最后一个单元格之外的所有单元格),它不会自动填充并按预期使用数组公式。所以,我当前有效的代码是这样:

    subtotalRange = tblSubtotalColLtr & tblSubtotalFirstRowRef & ":" & tblSubtotalColLtr & (tblSubtotalFirstRowRef + UBound(arrFormulas) - 2)
    finalRowRange = tblSubtotalColLtr & (tblSubtotalFirstRowRef + UBound(arrFormulas) - 1) & ":" & tblSubtotalColLtr & (tblSubtotalFirstRowRef + UBound(arrFormulas) - 1)
    Application.AutoCorrect.AutoFillFormulasInLists = False
    Range(subtotalRange).Formula = Application.Transpose(arrFormulas)
    Range(finalRowRange).Formula = arrFormulas(UBound(arrFormulas))

我最初只是尝试这样做:

    Application.AutoCorrect.AutoFillFormulasInLists = False
    tbl.ListColumns(tbl.HeaderRowRange(AmountCol).Value).DataBodyRange.formula = application.transpose(arrFormulas)

当前代码是超级烂-是有什么办法可以使第二个代码工作?我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您需要调整DataBodyRange的大小以适合您的数组。

Application.AutoCorrect.AutoFillFormulasInLists = False
tbl.ListColumns(AmountCol).DataBodyRange.Resize(UBound(arrFormulas) + 1).Formula = 
Application.Transpose(arrFormulas)