2016-11-22 2 views
3

18 개 열을 반환하는 데이터 원본으로 외부 쿼리를 사용하는 ListObject가 있습니다. ListObject에는 이전에 추가로 4 개의 계산 된 열이 추가되었습니다.데이터 행이없는 Excel 테이블/ListObject에서 계산 된 열의 수식을 읽는 방법

현재 ListObject에는 데이터 행이 0 개 있지만 데이터 행이 0 개이지만 계산 된 열의 미리 정의 된 수식을 읽을 수없는 것 같습니다.

데이터 소스를 새로 고치고 데이터 소스가 1 행 이상을 반환하면 계산 된 열에 대한 수식이 읽을 수있게됩니다. 마찬가지로 계산되지 않은 열 중 하나에 데이터를 수동으로 입력하여 적어도 하나의 행이 있으면 계산 된 열 수식을 읽을 수 있습니다.

계산 된 열 수식이 인 것을 확인하는 방법이 있습니까? 데이터를 목록 개체에 추가하지 않습니까?

답변

3

다음은 테이블에 행이 있는지 여부를 결정하는 해결 방법입니다.

getListColumnFormulae - 테이블 에 행을 추가 - 모든 ListColumns 위한 화학식을 갖는 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 
+0

"계산되지 않은 열 중 하나에 수동으로 데이터를 입력하는 경우"내 원래 해결 방법과 유사합니다. 분명히 수식은 어딘가에 존재하지만, 분명히 객체 모델은 그것을 노출시키지 않습니다. – ThunderFrame

+1

@ThunderFrame 원래 답변과 비교할 때이 답변의 접근 방식에는 한 가지 중요한 차이점이 있음을 유의하십시오.이 방법은 'ListObject' 필드 ('LisColumns.Items')에 대한 사전 지식이 필요하지 않습니다.)는 _non-calculated_이고 어떤 Fields _'HasFormula'_, 그것은 맹목적으로 "Data"자체가 아니라 DataBodyRange'에 "LisColumns.Items _ _ hidden _ _ 수식을 만들기 위해 한 행을 추가하기 때문에 '볼 수 있습니다. – EEM

관련 문제