2011-04-05 192 views
0

我記錄了爲任意數據創建數據透視表,並且在給定一組數據時它似乎工作正常。但是,當程序獲得多列數據時,輸出不正確。下面是一般透視表的代碼。它與記錄的數據透視表類似,不同之處在於名稱和列的硬編碼較少VBA Excel數據透視表

Dim tempString As String 

    tempString = ActiveWorkbook.Sheets(sheetName).Range(column & "1").Value 

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     sheetName & "!R1C" & ColTextToInt(column) & ":R" & g_totalRow & "C" &  ColTextToInt(column) & "", Version:=xlPivotTableVersion12 _ 
     ).CreatePivotTable TableDestination:=ActiveSheet.Range(colNamePos & "1"), _ 
     TableName:=column & "Table", DefaultVersion:=xlPivotTableVersion12 
    ActiveCell(1, ColTextToInt(colNamePos)).Select 
    With ActiveSheet.PivotTables(column & "Table").PivotFields(tempString) 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    ActiveSheet.Range(colNamePos & "1").Select 
    ActiveWorkbook.ShowPivotTableFieldList = True 
    ActiveSheet.PivotTables(column & "Table").AddDataField ActiveSheet.PivotTables(_ 
     column & "Table").PivotFields(tempString), "Count of " & tempString, xlCount 
    ActiveWorkbook.ShowPivotTableFieldList = False 

該程序向上結束。下面是具體的線路:

ActiveSheet.PivotTables(column & "Table").AddDataField ActiveSheet.PivotTables(_ 
     column & "Table").PivotFields(tempString), "Count of " & tempString, xlCount 

在這行代碼被擊中的數據透視表的列(具有特定的單元名稱)被覆蓋了一共有多少行有盛大總數。下面是變量所代表的關鍵點

sheetName =包含所有原始數據的工作表(例如「Sheet1」) column = User指定他們希望程序查看的列(例如「F」 ) tempString =給定前兩個變量,這將等於列的標題(例如「State」) g_totalRow =原始數據表中有多少行 colNamePos =程序將輸入數據透視表的列到

謝謝

傑西Smothermon

回答

1

明白了。導致錯誤的代碼位需要位於「with」部分的前面。我不完全確定這是爲什麼,但我嘗試了它,它的工作。如果有人認爲他們有理由說明爲什麼它需要在我想知道的與之前。

代碼:

tempString = ActiveWorkbook.Sheets(sheetName).Range(column & "1").Value 

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     sheetName & "!R1C" & ColTextToInt(column) & ":R" & g_totalRow & "C" & ColTextToInt(column) & "", Version:=xlPivotTableVersion12 _ 
     ).CreatePivotTable TableDestination:=ActiveSheet.Range(colNamePos & "1"), _ 
     TableName:=column & "Table", DefaultVersion:=xlPivotTableVersion12 
    ActiveCell(1, ColTextToInt(colNamePos)).Select 
    ActiveSheet.PivotTables(column & "Table").AddDataField ActiveSheet.PivotTables(_ 
     column & "Table").PivotFields(tempString), "Count of " & tempString, xlCount 
    With ActiveSheet.PivotTables(column & "Table").PivotFields(tempString) 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    ActiveWorkbook.ShowPivotTableFieldList = False 

謝謝

傑西Smothermon

相關問題