Excel VBA计数包含特定值的行

Excel VBA计数包含特定值的行,excel,vba,Excel,Vba,我正在学习VBA,我发现有一个练习很难解决。 以下是主表的一个示例: A B C D person team date task -------------------------------- toms A 10/08 t1 toms A 10/08 t2 toms A 10/08 t3 harry B 10/08 t4

我正在学习VBA,我发现有一个练习很难解决。 以下是主表的一个示例:

   A        B      C       D
 person   team   date     task
--------------------------------
  toms      A    10/08     t1
  toms      A    10/08     t2
  toms      A    10/08     t3
  harry     B    10/08     t4
  harry     B    10/08     t5
  harry     B    11/08     t6
  toms      A    11/08     t7
  toms      A    11/08     t8
  jhon      B    11/08     t9
目标是统计每人每天的任务数。 结果应该如下所示:

  A        B      C        D
 person   team   date     total    
--------------------------------
  toms      A    10/08      3
  toms      A    11/08      2
  harry     B    10/08      2
  harry     B    11/08      1
  jhon      B    11/08      1

我曾想过使用
字典
,但似乎你只能使用字典中的一个键。有没有一个特定的VBA函数可以帮助我解决这个问题?

正如@Scott Craner所说,您可以像这样设置数据透视表:

  A        B      C        D
 person   team   date     total    
--------------------------------
  toms      A    10/08      3
  toms      A    11/08      2
  harry     B    10/08      2
  harry     B    11/08      1
  jhon      B    11/08      1

对于这个问题,我会使用透视表(或Power Query)解决方案,但对于使用字典的方法(因为您正在学习技术),我建议如下

  • 创建一个以键为主要分隔符的字典。在您的情况下,它似乎将
    name | team
  • 此字典将存储另一个字典,其键=日期,项=计数
  • 使用VBA阵列进行更快的处理(对大型数据集很有用)
  • 限定各种工作表和范围参考


将日期和名称连接在一起,以创建唯一的字典键。数据透视表可以做到这一点。