如何总结日期计数

时间:2009-04-14 02:51:30

标签: excel vba excel-vba pivot-table

我有3个工作表。以下是对我要做的事情的解释。 EM11 EM12 EM01

以下步骤适用于Sheet EM11,但我想重复它们对于Sheet EM12和Sheet EM01

  • 选择Sheet EM11
  • 复制J2:J65636并复制G2:G65636
  • 创建一个名为EM11-Count
  • 的新工作表
  • 将列J粘贴到名为EM11-Count
  • 的新工作表的单元格A2中
  • 将列G粘贴到新工作表的单元格B2中。

  • 名为EM11-Count的工作表现在的日期范围为B2:B65636。

  • 将您收到的第一个日期复制并粘贴到单元格C1
  • 将您获得的第二个日期复制并粘贴到单元格D1
  • 将您获得的第三个日期复制并粘贴到单元格E1
  • 将第四个日期复制并粘贴到单元格F1
  • 将第五个日期复制并粘贴到单元格G1
  • 将第六个日期复制并粘贴到单元格H1中 (只有六到七个不同的日期)

现在工作表看起来像这样

Col A  Col B       Col C      Col D      Col E       
                   04/1/2009  04/2/2009  04/3/2009
DPR1   04/1/2009            
DRS6   04/2/2009            
ERJ9   04/3/2009            

看A2:B2。现在查看C1:H1,找到与B2中的日期相匹配的日期。假设C1具有匹配日期。转到C2并输入数字1.

Col A  Col B       Col C      Col D      Col E       
                   04/1/2009  04/2/2009  04/3/2009
DPR1   04/1/2009   1        
DRS6   04/2/2009            
ERJ9   04/3/2009            

下一步看A3:B3。现在查看C1:H1,找到与B3中的日期相匹配的日期。假设D1具有匹配日期。转到D3并输入数字1.

Col A  Col B       Col C      Col D      Col E       
                   04/1/2009  04/2/2009  04/3/2009
DPR1   04/1/2009   1        
DRS6   04/2/2009              1         
ERJ9   04/3/2009                                    

下一步看A4:B4。现在查看C1:H1,找到与B4中的日期相匹配的日期。假设E1具有匹配日期。转到E3并输入数字1.

Col A  Col B       Col C      Col D      Col E       
                   04/1/2009  04/2/2009  04/3/2009
DPR1   04/1/2009   1        
DRS6   04/2/2009              1         
ERJ9   04/3/2009                         1

现在重复此模式,直到A:B中的每一行都被覆盖。沿A列中的每一行走下去:B将发生随机重复。例如,A1:B1中的内容将通过A2:B7相同,或者A14:B14中的内容将通过A15:B20相同。当发生这些重复时,我想删除重复的行,但是将原始行的计数/计数增加数字“1”。例如,在宏完成扫描A:B之后,工作表可能看起来像这样

Col A  Col B       Col C      Col D      Col E       
                   04/1/2009  04/2/2009  04/3/2009
DPR1   04/1/2009   12       
DRS6   04/2/2009              23            
ERJ9   04/3/2009                         57

这是我目前的代码。我相信你可以看到它需要做很多工作。你能救我吗?

Sub NWorksheetArrange()
    Application.Goto Reference:="R2C10:R65000C10"
    Selection.Copy
    Sheets.Add
    ActiveSheet.Paste
    Sheets("Sheet3").Select
    Sheets("Sheet3").Name = "EM11-COUNT"
    Sheets("EM11").Select
    Application.Goto Reference:="R2C7:R65000C7"
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("EM11-COUNT").Select
    Range("B1").Select
    ActiveSheet.Paste
    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlDown
    Range("B2").Select
End Sub

1 个答案:

答案 0 :(得分:2)

这听起来很像“数据透视表”...... Excel会自动执行这些操作。

像这样:http://screencast.com/t/gpLsU50q38

要制作构建数据透视表的宏,请执行“宏记录”...然后构建数据透视表...然后将代码包装在记录的数据透视表语句周围。