如何统计不重复姓名的个数?

本文介绍了一种使用Excel计算不重复值数量的经典方法,通过数组公式=SUM(1/COUNTIF(区域,区域))来实现,并提供了另一种使用SUMPRODUCT函数的方法。此外还介绍了适用于含有空白值情况的数组公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

=SUM(1/COUNTIF($A$1:$A$6,$A$1:$A$6))

数组公式

= SUM(1/COUNTIF(区域,区域))


个公式是计算区域中不重值的个数的经典公式。

准备

区域A1:A10的数据分别是:公式、计算、可以、公式、公式、复制、这个、重复、可以、不可以

B1写入公式:

=SUM(1/COUNTIF(A1:A10,A1:A10))

它是一个数组公式,同时按 hift+Ctrl+Enter 三键结束。

观察

1、在编辑栏,像下面一样选取函数Countif()部分,然后按F9:

=SUM(1/COUNTIF(A1:A10,A1:A10))

你看到的结果会是:

=SUM(1/{3;1;2;3;3;1;1;1;2;1})

如果这时你按下Esc键,公式会还原为原来的状态。

2、在结果的基础上继续选取,=SUM({1/{3;1;2;3;3;1;1;1;2;1})或者在原公式上选取=SUM(1/COUNTIF(A1:A10,A1:A10)),按F9,结果为:

=SUM({0.333333333333333;1;0.5;0.333333333333333;0.333333333333333;1;1;1;0.5;1})

3、选取全部公式按下F9或者直接按三键,你看到的都是同一结果:7。

分析

1、Countif(A1:A10,A1:A10)是数组计算,运算过程相当于:

Countif(A1:A10,A1)

Countif(A1:A10,A2)

……

Countif(A1:A10,A10)

结果如上面所示,是一个数组,表示区域中等于本单元格数据的个数。

2、用1除以个数,是个非常妙的想法,要结合前后计算才能领会好它的作用。把上一步的结果整理一下,用分数代替小数:

=SUM({1/3;1/3;1/3;1/2;1/2;1;1;1;1;1})

区域中有三个重复的数“公式”,那么这一步就有三个1/3,有两个“可以”,那么这一步的结果就有两个1/2,如果有5个重复的数,那么这一步的结果就有5个1/5,如此类推。

3、这一步几乎不用说了。Sum()进行的是加法运算,3个1/3相加,结果为1,2个1/2相加,结果也是1。如果区域中有8个重复的数,那么一定会有8个1/8相加,结果也是1。

重复的数经过三步运算,到最后结果都是1。

把所有结果加起来,就是区域中不重复的个数。


或者

=SUMPRODUCT(1/COUNTIF(A1:A6,A1:A6))


另外一种方法

假设你的数据在a1:g1,输入数组公式
=SUM(--(MATCH(A1:G1&" ",A1:G1&" ",0)=COLUMN(A:G)))
假设你的数据在a1:a7,输入数组公式
=SUM(--(MATCH(A1:A7&" ",A1:A7&" ",0)=ROW(1:7)))
公式输入后以ctrl+shift+enter结束,用以添加花括号
公式的计算原理,利用数据在区域内的位置与行号(或列号)做比较,从而统计不重复数据的个数
优点是当区域内存在空值时,公式计算依然正确,
而数组公式{=sum((1/countif(a1:a7,a1:a7)))}则会计算错误。

### 回答1: 若要在SQL语句中去除重复的列并仅保留一个,可以使用"SELECT DISTINCT"关键字。例如: ``` SELECT DISTINCT 列名 FROM 表名; ``` 这将返回一个仅包含同值的列的结果集。 ### 回答2: 在SQL语句中,当有重复的列出现时,我们可以使用DISTINCT关键字来去除这些重复的列,只保留其中一个。DISTINCT关键字可以应用在SELECT语句中,在查询的结果中去掉重复的行。 例如,假设我们有一个名为"Customers"的表,其中包含多行数据,每行数据代表一个顾客记录。如果我们想要获取所有重复的顾客名字,可以使用以下SQL语句: SELECT DISTINCT name FROM Customers; 上述语句将会返回一个包含所有重复顾客名字的结果集,去掉了姓名列中的重复项。 需要注意的是,DISTINCT关键字只会应用在SELECT子句中指定的列上,而是整个行。也就是说,如果除了姓名列外,其他列的值相同,这些行仍然会被返回。 另外需要指出的是,使用DISTINCT关键字可能会影响查询的性能,特别是在处理大数据集时。因此,如果需要去除重复项,最好要使用DISTINCT关键字,以提高查询效率。 总之,通过在SELECT语句中使用DISTINCT关键字,我们可以去除SQL查询结果中重复的列,只保留其中一个,使得结果更加简洁和准确。 ### 回答3: 当我们查询数据库时,有时候可能会遇到一些情况,例如使用JOIN操作连接多个表进行查询时,结果集中可能会出现重复的列。在这种情况下,我们可以使用DISTINCT关键字来去除重复的列,只保留其中一个。 DISTINCT是SQL语句中用来消除重复行的关键字。它可以应用于SELECT语句来限制结果集中重复的列的个数,只保留其中一个。 例如,假设我们有一个包含员工姓名和工资的表,名为"employees"。我们想要查询出所有员工的姓名,但是结果集中希望出现重复姓名。我们可以使用以下SQL语句来实现: SELECT DISTINCT name FROM employees; 上述的SQL语句将返回一个结果集,其中包含所有员工的姓名,但会有任何重复姓名。 需要注意的是,使用DISTINCT关键字会对查询的性能产生一定的影响。因为它需要进行额外的操作来去除重复的行。因此,在使用DISTINCT关键字时,需要权衡查询的需求和性能之间的平衡。 综上所述,当我们在SQL语句中遇到重复的列时,可以通过使用DISTINCT关键字来去除重复的列,只保留其中一个,以满足我们的查询需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值