excel使用宏自动排序/过滤/计数数据

excel使用宏自动排序/过滤/计数数据,excel,vba,pivot,Excel,Vba,Pivot,因此,我有一个excel数据表sheet1,其中有几列 公司|产品代码|日期|名称| 还有几行填写了上述所有细节 e、 g 等等 正如你所见,公司名称各不相同。 产品名称不同。 日期各不相同 以及我们不关心的姓名/头衔 我想做的是应用某种过滤器,可以执行以下操作: 每月,计算每个公司的相同产品名称,并使用以下格式在新图纸sheet2上创建行/列: company | quantity | product code | date in specific format below | company

因此,我有一个excel数据表sheet1,其中有几列

公司|产品代码|日期|名称|

还有几行填写了上述所有细节

e、 g

等等

正如你所见,公司名称各不相同。 产品名称不同。 日期各不相同 以及我们不关心的姓名/头衔

我想做的是应用某种过滤器,可以执行以下操作:

每月,计算每个公司的相同产品名称,并使用以下格式在新图纸sheet2上创建行/列:

company | quantity | product code | date in specific format below |
company 1    n           adar1       201409
company 1    n           adar2       201409
company 2    n           adar1       201409
company 1    n           adar2       201409
company 1    n           adar1       201410
company 1    n           adar2       201411
等等

意味着公司1于2014年9月使用了n个adar1产品,n个adar2产品409 公司2在2014年9月和2014年10月使用了n个adar1和n个adar3等

我相信你明白了

我可以使用数据透视表完成上述所有操作,但我想知道是否有宏或某些函数/代码可以在sheet1上输入新值后在sheet2上自动完成上述所有操作


谢谢。

我会用类似于以下内容的SQL来实现这一点:

SELECT * FROM (SELECT s.company, COUNT(s.company) as quantity, s.product_code, "20"&right(s.date,2)&iif(right(left(s.date,6),3)="jan","01",iif(right(left(s.date,6),3)="feb","02","03"))&left(s.date,2) as new_date FROM [Sheet1$] as s GROUP BY s.company,s.product_code,s.date) ORDER BY new_date DESC
要使用它,请参见数据->外部数据->来自其他来源->Microsoft Query或使用我的SQL加载项:

上面的SQL在3-12月份仍然缺少映射。我相信您可以自己添加它们


注1:若要在更新值时刷新此值,您可以添加一个宏按钮来刷新表或覆盖VBA中的工作表更改事件。

如果您可以对透视表执行此操作,为什么不在表1上输入值时添加一个宏来刷新透视表?请参阅,因为在使用数据透视表对所有数据进行排序后,我仍然必须使用上述格式手动将数据透视表的结果复制到第2页。表2不能是透视表。如果没有数据透视表,我通常会花8个小时手动排序和过滤数据。使用pivot表,我将花费的时间减少到了2小时。我想知道这里的excel/VBA专家是否可以帮我点击一下!!
SELECT * FROM (SELECT s.company, COUNT(s.company) as quantity, s.product_code, "20"&right(s.date,2)&iif(right(left(s.date,6),3)="jan","01",iif(right(left(s.date,6),3)="feb","02","03"))&left(s.date,2) as new_date FROM [Sheet1$] as s GROUP BY s.company,s.product_code,s.date) ORDER BY new_date DESC