如何在没有任何数据行的Excel表/ ListObject中读取计算列的公式

时间:2016-11-22 04:55:05

标签: excel vba excel-vba calculated-columns listobject

我有一个带有外部查询的ListObject作为数据源,它返回18列。 ListObject之前已经添加了4个计算列。

现在,ListObject有0个数据行,但是有0个数据行,我似乎无法读取计算列的预定义公式。

如果我刷新数据源,并且数据源返回至少1行,则计算列的公式将变为可读。同样,如果我在其中一个非计算列中手动输入数据,以便至少有一行,则计算出的列公式是可读的。

有没有办法确定计算出的列公式是什么没有将任何数据添加到列表对象?

1 个答案:

答案 0 :(得分:3)

这是一种解决方法,无论表是否有行都可以使用。

getListColumnFormulae    - 向表中添加一行    - 使用所有ListColumns的公式填充1维基数1数组    - 删除行    - 返回数组

enter image description here

enter image description here

Function getListColumnFormulae(tbl As ListObject)
    Dim Formulae
    On Error Resume Next
    With tbl.ListRows.Add
        Formulae = Application.Transpose(.Range.Formula)
        Formulae = Application.Transpose(Formulae)
        getListColumnFormulae = Formulae
        .Delete
    End With
    On Error GoTo 0
End Function

Sub FormulaeMessage()
    Dim Data
    Dim tbl As ListObject
    Set tbl = Worksheets("Sheet2").ListObjects(1)
    Data = getListColumnFormulae(tbl)

End Sub