2014-12-05 62 views
1

我整理了一份包含具有唯一名称的列的月度报表。我使用一个公式来计算每月列出的唯一姓名的数量(例如,如果Smith和Sarah有三个条目,Jones和Martha两个条目,那么公式会给我2)。我使用的公式是=SUMPRODUCT((B5:B46<>"")/COUNTIF(B5:B46,B5:B46&"")),它的作品非常漂亮。该列表是,并且必须保留,按日期排序,而不是名称。Excel 2007 - 计算多个工作表中的唯一值

与去年接近年底,我想放在一起的年度总结,其中包括许多独特的名字怎么出现全年计数。我已将此设置为工作簿,每月都有单独的工作表。我正在寻找的是一种计算这十二张表格中出现的独特名字的方法(这样一来,如果史密斯,莎拉和琼斯,马莎一月,史密斯,莎拉和琼斯两人分别有一个入口,玛莎在二月份,我仍然会得到2)。

我研究过,但所有我发现的方法来计算一个特定的名称出现了多少次,许多独特的名字有没有怎么样。我做了一些试验,看看能否搞清楚,但我显然不在我的联盟之列。愿意使用和尝试任何东西,但我不能安装任何程序或附加组件,而没有一个荒谬的过程来获得批准,这通常需要几个月的时间,所以我想避免这种情况。

回答

0

将一张纸上的所有名字粘贴一个选项?如果是这样,请将12张工作表中的所有名称粘贴到单独的工作表中的同一列中,一旦完成,只需从中创建一个数据透视表,将名称添加为列标签,这将为您提供12个月内所有唯一名称的列表,在这个列表上做一个counta公式减去标题和总行,并有你的答案。

编辑 这里是如许快速编译列表的代码:

Sub compile() 

ws = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") 

Sheets("Summary").Range("A1", Range("A1000000").End(xlUp)).ClearContents 

For Each sh In ws 
    Sheets(sh).Select 
    Sheets(sh).Range("A2", Range("A1000000").End(xlUp)).Copy 
    Sheets("Summary").Range("A1000000").End(xlUp).Offset(1, 0).PasteSpecial 
Next 

Sheets("Summary").Select 

' 结束小组

只要它会工作作为联军片被称为‘摘要’和所有根据数组字符串的月标签,您可以修改您的实际标签名称。它将复制从单元格“A2”开始的列“A”中的12张纸中的每一张的所有数据,并在“摘要”选项卡上相互粘贴。请注意,这不会在Excel 2003中工作,如果您有Excel 2003,只是改变一切“A1000000”引用“A65500”

+0

当然,数据透视表并不是强制性的,只需使用您用于一张纸的相同公式 – Raugmor 2014-12-05 16:44:13

+0

是的,我也有同样的建议。它应该工作。用于计算的临时表。这不是最合乎逻辑/实用的方法,但其他方法需要更多的工作和视觉基础知识。 – 2014-12-05 16:49:07

+0

这看起来像是最好的选择。我希望能自动更新一些东西,但是如果我创建一个庞大的表并将每个月的数据链接到它的一部分,那么它会在我在12月添加条目时进行更新,这应该照顾它。这最后一页不必像月刊那样美观。 – 2014-12-05 16:53:15

0

假设所有的名字都在一列中并排序。

您可以从第一个单元格开始,并比较该单元格是否等于之前的单元格(因为没有先前的单元格而没有)。

如果在下一个单元格中出现的名称与前一个名称相同,请继续前进,不要将总和加1。如果不同,请将总和加1并继续。

最后总和将包含唯一名称的数量。

在每个电子表格上执行。如果您希望在多个电子表格中实现自动化,则必须先进入Visual Basic或记录宏,然后在所有电子表格中执行此操作。

+0

这将无法正常工作所有工作表 – Raugmor 2014-12-05 16:38:49

+1

不检查不重复我认为需求是在一张纸上检查唯一性?如果它横跨纸张,我想不出一个方法来轻松完成。 唯一简单的方法是将所有记录复制到一张纸上,对它们进行排序并应用相同的逻辑。 – 2014-12-05 16:41:35

+0

不幸的是,该列表是(并且必须)按日期排序,而不是名称。而且,正如拉戈莫尔所说的那样,每张纸上只有一张,我已经有了一个公式。 – 2014-12-05 16:43:19