2017-05-03 85 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