我有一个非常大的(比方说,100,000行)excel表,其中包含 some (还有其他)列:
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,日期等)是A-C(或者在结果表的情况下为A-D),当然还有行1-7。
谢谢!
答案 0 :(得分:1)
根据Doug Glancy的建议,您正在寻找的是使用数据透视表生成相对容易的东西。这是一种方法。
首先,要保留数据的原始顺序,请在E列中添加标记为Sort的列,例如在E列中,并添加一个升序索引号,每个新PersonID递增1。因此,单元格E2&中的排序数量。 E3将为1,E4将为2,等等。这很容易用公式完成,例如,“如果此行中的PersonID =前一行中的人员ID,则此行中的排序编号=上一行中的排序编号,否则排序第n行=前一行的排序数+ 1。
为您的数据创建数据透视表。这可以通过选择数据表中的一个单元格,然后从功能区中选择“插入”,“透视表”来完成。将数据透视表放在新工作表中。
在新工作表的“数据透视表字段列表”中,将Sort,PersonID,Date和Number设置为Row Labels,并将Number设置为Values字段(这应该在数据透视表中显示为'Number of Number'列)。
从数据透视表工具栏的“设计”选项卡中:
通过右键单击数据透视表中的这些列并在“字段设置”/“布局和打印”中选择相应的选项,使PersonID和Date字段重复。
您可以通过一些技巧获得所需的最终总计列:
在单元格F4中,输入以下公式,然后将其复制到单元格F9。
= IF(AND(B4 = B3,C4 = C3), “NA”,D4 / E4)
此公式计算每个PersonID的总计,如果PersonID和Date重复,则返回“NA”。
最后,隐藏Sort列和Number of Number列。