Excel 2007 - 计算多个工作表中的唯一值

时间:2014-12-05 16:24:11

标签: excel excel-2007

我整理了一份包含具有唯一名称的列的月度报告。我使用公式来计算每个月列出的唯一名称的数量(例如,如果有三个条目用于Smith,Sarah和两个用于Jones,Martha,则公式会给我2作为结果。我使用的公式是=SUMPRODUCT((B5:B46<>"")/COUNTIF(B5:B46,B5:B46&"")),它的工作效果非常好。该列表是,并且必须保持按日期排序,而不是名称。

随着年底临近,我想整理一份年度总结,包括全年出现多少独特名字的数量。我将此设置为工作簿,每个月都有单独的工作表。我正在寻找的是一种计算出这12张纸上唯一名字的方法(这样,如果史密斯,莎拉和琼斯,玛莎一月份有一个条目,两个代表史密斯,萨拉和琼斯一个, Martha在二月份,我仍然得到2作为我的结果。

我已经研究过,但我发现的所有方法都是计算特定名称出现次数的方法,而不是有多少个唯一名称。我做了一个小小的实验,看看我是否能搞清楚,但我显然不在我的联盟中。愿意使用和尝试任何东西,但我无法安装任何程序或附加组件而没有荒谬的过程来获得批准,这通常需要数月,所以我想避免这种情况。

2 个答案:

答案 0 :(得分:0)

假设所有名称都在一列中并进行了排序。

您可以从第一个单元格开始,并比较该单元格是否等于前一个单元格(由于之前没有单元格,因此不存在)。

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

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

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

答案 1 :(得分: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”