0

我有一个非常大的(比如说,100,000 行)excel 表,其中有一些(还有其他)列:

Person ID |   Date   | Number |
0043       03/20/2006  6
0043       03/20/2006  3.21
1478       04/01/2006  9.87
0021       04/12/2006  0.23
0101       04/12/2006  3.14
1042       04/12/2006  11.13

我想做的是浏览表格并按日期将给定人员 ID 的数字相加。含义:现在一些条目在同一日期列出了两次,但我真的想要那个人在那个日期的这些数值的“总和”(不是两个单独的行)。

稍后,我将对这些“汇总结果”进行一些分析,例如“有多少人的数字大于 3 但小于 6”等。

是否有一个我可以运行的简单函数,将按日期和人员 ID 汇总值,并给我一个新列来显示结果总和?或者,是否有一个 VB 程序可以轻松做到这一点?

最终,我希望有一个新列来显示结果,这个新表如下所示:

Person ID |   Date   | Number | Total Per ID Per Date |
0043       03/20/2006  6        9.21
0043       03/20/2006  3.21     N/A
1478       04/01/2006  9.87     9.87
0021       04/12/2006  0.23     0.23
0101       04/12/2006  3.14     3.14
1042       04/12/2006  11.13    11.13

有什么想法/建议吗?Visual Basic 还是链接一个 excel 函数?为简单起见,假设列(个人 ID、日期等)是 AC(或 AD,在结果表的情况下),当然还有第 1-7 行。

谢谢!

4

1 回答 1

1

正如 Doug Glancy 所建议的,您正在寻找的东西相对容易使用数据透视表生成。这是一种方法。

首先,为了保留数据的原始顺序,在数据表中添加一个标记为 Sort 的列,比如在列 E 中,并输入一个升序索引号,每个新的 PersonID 递增 1。因此,单元格 E2 和 E3 中的排序号将为 1,E4 将为 2,依此类推。这很容易通过公式完成,例如,“如果此行中的 PersonID = 前一行中的 Person ID,则排序号为此行 = 上一行中的排序号,否则排序号 n 此行 = 上一行中的排序号 + 1。

为您的数据创建数据透视表。这可以通过选择数据表中的一个单元格,然后从功能区中选择插入、数据透视表来完成。将数据透视表放入新工作表中。

在新工作表的“数据透视表字段列表”中,将“排序”、“PersonID”、“日期”和“数字”设置为行标签,并将“数字”设置为“值”字段(这应在数据透视表中显示为“数字总和”列)。

从数据透视表工具栏的设计选项卡:

  • 将数据透视表设置为“表格形式”(报表布局)
  • 关闭小计(小计)

通过右键单击数据透视表中的这些列并在“字段设置”/“布局和打印”中选择适当的选项,使 PersonID 和日期字段重复。

您可以通过一些技巧获得最终的 Total 列:

  • 设置“数字总和”列以将值显示为行总数的百分比(右键单击该列并选择该选项)。
  • 通过在单元格 F3 中输入标签“每个日期每个 ID 的总计”,向数据透视表添加一个新列。(默认情况下,数据透视表位于 B3:E9 中)。
  • 在单元格 F4 中,输入以下公式,然后将其复制到单元格 F9。

    =IF(AND(B4=B3,C4=C3),"NA",D4/E4)

    此公式计算每个 PersonID 的总数,如果 PersonID 和 Date 重复,则返回“NA”。

  • 最后,隐藏 Sort 列和 Sum of Number 列。

于 2013-02-07T06:01:12.240 回答