VBA搜索&在1个工作簿中比较多个Excel工作表的代码(动态行数)

时间:2016-10-29 16:20:55

标签: excel vba excel-vba macros

我有12个工作表中包含的未知数量的条目(行)(每月1个)。这些行跟踪传递数据。我想解析每张表格的每一行并执行以下操作:

计算从A到B的交货数量。 计算从A到B的件数。 计算从A到B的交货成本。 计算从A到B的总货物重量。

需要将这些标记输出到摘要工作表,并且需要同时为月度和年初。

示例列和单个数据行如下:

Date&Time PU     | Date&Time Del    |PU Loc. Name |PU Street        |PUCityStateZip       |DEL Loc.  Name|DEL Street        |DELCityStateZip        |Number of Pieces|Weight     |TotalAmt

01/01/2016 05:30 | 01/01/2016 07:30 | Warehouse A | 123 Nowhere St. | Toronto, ON P3L 3M0 | Hospital A   | 321 Made-up Ave. | Stratford, ON T45 6H8 | 6              | 240 Lbs   | $245.00
02/01/2016 06:30 | 02/01/2016 07:30 | Warehouse B | 123 Lost Road   | Hamilton, ON P3X 3Z0| Hospital A   | 321 Made-up Ave. | Stratford, ON T4P 6H8 | 3              | 240 Lbs   | $245.00
01/01/2016 09:30 | 02/01/2016 11:30 | Warehouse A | 123 Nowhere St. | Toronto, ON P3L 3M0 | Hospital B   | 123 Boul Fake.   | Montreal, QC T4Y 6J8  | 1              | 24 Lbs    | $45.00
04/01/2016 05:30 | 04/01/2016 07:30 | Warehouse A | 123 Nowhere St. | Toronto, ON P3L 3M0 | Hospital A   | 321 Made-up Ave. | Stratford, ON T4P 6H8 | 4              | 160 Lbs   | $145.00

Using the sample data above we would have(for total number of deliveries):
2 Deliveries from Warehouse A to Hospital A
1 Delivery from Warehouse B to Hospital A
1 Delivery from Warehouse A to Hospital B

我知道如何循环浏览不同的工作表。我也知道如何以未知的行数循环到最后一行的末尾。

我不知道对数据进行分类并比较提货和送货地点的最佳方式。即。我需要能够查看数据,以确定仓库A在1月份送达医院B 7次,2月送15次...... 12月送10次等等。我没有完成此操作的代码,在这一点上,因为我有问题可视化如何最好地解决这个问题。

这必须是VBA解决方案 - 我可以在很久以前用手完成这项工作,但我想要一个"自动化" VBA解决方案。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用以下SQL语句打开记录集:

SELECT Year([Date&Time Del]), Month([Date&Time Del]), [PU Loc. Name], [DEL Loc.  Name]
    COUNT(*) AS CountOfDeliveries
FROM [SheetName$]
GROUP BY Year([Date&Time Del]), Month([Date&Time Del]), [PU Loc. Name], [DEL Loc.  Name]

并使用CopyRecordset将结果粘贴到输出工作表中。

如果您想按年份而不是按月分组(问题不是很清楚),请使用以下SQL语句:

SELECT Year([Date&Time Del]), [PU Loc. Name], [DEL Loc.  Name]
    COUNT(*) AS CountOfDeliveries
FROM [SheetName$]
GROUP BY Year([Date&Time Del]), [PU Loc. Name], [DEL Loc.  Name]

有关类似内容,请参阅here