2017-05-03 54 views
0

我有大量數據(30,000多行)被拉入報表。VBA - 將SQL查詢結果分配給特定的

表看起來像這樣:

Report   Bucket   Category  SubCategory  Value 
______   ______   ________  ___________  _____ 

NumberEmployees Region1  FullTime  NULL   45 
NumberEmployees Region1  PartTime  NULL   20 
NumberEmployees Region2  FullTime  NULL   60 
NumberEmployees Region2  PartTime  NULL   85 
...... 
NumberEmployees Region25  FullTime  NULL   29 
NumberEmployees Region25  PartTime  NULL   38 

有在「報告」列若干不同的報告。每個都有相同的25個桶。然後,類別和子類別針對每個報告。值是我想要報告的最終號碼(不需要額外的操作來編號)。

我有一個VBA代碼,將數據導入Excel(但只是到一個數據表)。
不過,我需要移動到那些精美的格式化交叉表的報表,會看起來像:

Number of Employees> 
ByREGION FullTime PartTime 
Region1  45  20 
Region2  60  85 
....  ....  .... 
Region25 29  38 

我不想因爲我需要這個數據在一個特定的統一進行格式化使用數據透視表報道的方式。

我只是在做一個SUMIFS來計算表中每個單元格的值,但是文件變得太大了。

是否有VBA代碼我可以寫使交叉表???

'Set and Excecute SQL Command' 
    Set objMyCmd.ActiveConnection = objMyConn 
     objMyCmd.CommandText = "select * from ComparisonData_All" 
     objMyCmd.CommandType = adCmdText 

    'Open Recordset' 
     Set objMyRecordset.Source = objMyCmd 
     objMyRecordset.Open 

    'Copy Data to Excel' 
     ActiveSheet.Range("A8").CopyFromRecordset objMyRecordset 


Range("H:H").Select 
    With Selection 
     Selection.NumberFormat = "General" 
     .Value = .Value 
    End With 

End Sub 
+0

當然是有代碼,可以爲你做這個。當我有自定義需求時,我經常在VBA中編寫自己的「pivot」和「unpivot」功能。 – Kyle

+0

*我不想使用數據透視表,因爲我需要以特定的統一方式爲報告格式化這些數據。* - 1)您是否知道可以操作數據透視表格式? 2)即使這不起作用,你可以通過數據透視表構建結構,然後在另一個表格上放置格式並使用簡單公式或GETPIVOTDATA鏈接到數據透視表中的數據(所以數據透視表就像是格式化報表數據的分段)。 –

回答

0

我會重新審視關於數據透視表的決定 - 它們是您的任務最有效的解決方案。

格式化問題可以很容易地解決:使用GetPivotData函數將數據從數據透視表中提取到您想要的格式化報告中。這是Excel中常用且非常強大的技術。這個博客會給你更多的細節:

Presenting Pivot Table data in a fixed layout using GETPIVOTDATA

+0

超級有用!謝謝! – User1234098