树状数组 区间加 区间求和_Excel 版本低也不怕,用 countif 也能按区间计算、统计唯一值...

我前不久曾教过大家如何统计区域内符合多个条件的单元格个数,详情请参阅 Excel – 统计同时满足多个条件的单元格数,你要用几个函数?

但是有些同学反馈自己的 Excel 版本比较低,无法使用 countifs 函数,咨询有没有低版本函数能替代的公式?

那我今天就教大家几个 countif 的使用案例。

案例 1:按区间统计

下图 1 的 A 至 C 列是各销售人员每个月的单笔提成记录,可能每月有多笔提成,也可能没有。

需要在右侧按不同的金额区间统计总提成笔数。

效果如下图 2 所示。

b6c30ac7af8d603abab0f344afa170c5.png
3a9498f9eef11caf0b64648d54ce6c66.png

解决方案 1:

1. 在 F2 单元格中输入以下公式:

=SUM(COUNTIF($C$2:$C$24,{">=1000",">=1500"})*{1,-1})

公式释义:

  • COUNTIF($C$2:$C$24,{">=1000",">=1500"}):分别统计出提成大于等于1000 和大于等于 1500 的个数,返回一组数组
  • ...*{1,-1}:用上述数组乘以另一个数组 {1,-1},再次等到一个数组,其中大于等于 1000 的个数为正数,而大于等于 1500 的个数为负数
  • 最后用 SUM 函数将数组中的每个数相加,相当于用大于等于1000 的个数减去大于等于 1500 的个数,从而实现区间统计
bbdaeee9462970dac4ad44cea82be438.png
1a3ac9030c0718f8daaab54e80e2b477.png

2. F3 单元格中的公式只要将区间数据稍加变通即可:

=SUM(COUNTIF($C$2:$C$24,{">=1500",">=2000"})*{1,-1})

aeb87fef9fdc985bab04f62175b41e7d.png
a25c01a241517001c591ecf484b7bb8a.png

案例 2:统计不重复人数

在 E7 单元格中计算整个数据表中的非重复姓名数。

37ecabdc604b6bc0178109a25cc40b53.png

解决方案 2:

1. 在 E7 单元格中输入以下公式 --> 按 Ctrl+Shift+Enter 结束:

=SUM(1/COUNTIF(B2:B24,B2:B24))

公式释义:

  • COUNTIF(B2:B24,B2:B24):统计 B2:B24 区域中,每个名字出现的次数;本例的结果为 {3;4;2;4;4;2;1;3;3;4;2;4;4;4;4;3;4;3;4;4;2;4;3}
  • 1/COUNTIF(B2:B24,B2:B24):用 1 除以上述数组,得到一组分数
  • SUM(1/COUNTIF(B2:B24,B2:B24)):将以上分数相加,就是每个名字出现的唯一次数。比如,“赵铁锤”出现过 3 次,数组中就会有 3 个 1/3,sum 求和的结果正好为 1
  • 数组公式,需要按三键结束。
6281160a610dd9ac4b8b9c3f0eac19be.png
aa042597d9039cd3df46746ced61136a.png

案例 3:统计非空提成数

统计数据表区域内提成数不为空的单元格数。

88c9a8603568e5d37198e25b88c858b0.png

解决方案 3:

统计非空单元格数可以使用函数 counta。

1. 在 E11 单元格中输入以下公式:

=COUNTA(C2:C24)

* counta 函数用于计算范围中不为空的单元格的个数。由于 C2:C24 的非空单元格都是数值,所以本例也可以将 counta 替换为 count 函数。

d6a73ea796a3baada4db4e98ec9a132b.png
db3d5da7beb63951228684cf40b6fa2c.png

如果用 countif 函数也能实现同样的效果。

2. 在 E12 单元格中输入以下公式:

=COUNTIF(C2:C24,"<>")

公式释义:

  • "<>":表示非空
  • COUNTIF(C2:C24,"<>"):统计参数区域内非空单元格的个数
b4d077b20f365e2a6a57d290604089a2.png
0228875fd6e1a9d5a2d7a54e6b32ed2f.png

案例 4:统计空提成数

统计数据表区域内提成为空的单元格数。

解决方案 4:

统计空单元格数同样有专门的函数 countblank。

1. 在 F11 单元格中输入以下公式:

=COUNTBLANK(C2:C24)

ad1b2090e3e25d664e2c3bcf7a49b5a3.png
6bd58cc37130b4e5ceadad56e8839b98.png

这个案例一样也可以用 countif 函数来实现。

2. 在 F12 单元格中输入以下公式:

=COUNTIF(C2:C24,"")

公式释义:

  • "":表示空
  • COUNTIF(C2:C24,""):统计参数区域内空单元格的个数
3859170b25ae82f7889e86f07d665662.png
58d8eeb7c9a6f7821e3bdc88bfab20fc.png

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Excel宏来统计几个区间的占比,具体步骤如下: 1. 打开Excel文档,按下Alt + F11键,打开Visual Basic for Applications(VBA)窗口。 2. 在VBA窗口中,点击插入 -> 模块,添加一个新模块。 3. 在新模块中输入以下代码: ``` Sub CalculatePercentage() Dim range1 As Range, range2 As Range, range3 As Range Dim total As Double, range1Total As Double, range2Total As Double, range3Total As Double Dim range1Percentage As Double, range2Percentage As Double, range3Percentage As Double Set range1 = Range("A1:A10") '第一个区间范围 Set range2 = Range("B1:B10") '第二个区间范围 Set range3 = Range("C1:C10") '第三个区间范围 '计算每个区间的总 range1Total = Application.WorksheetFunction.CountIf(range1, ">0") range2Total = Application.WorksheetFunction.CountIf(range2, ">0") range3Total = Application.WorksheetFunction.CountIf(range3, ">0") '计算 total = range1Total + range2Total + range3Total '计算每个区间的占比 range1Percentage = range1Total / total range2Percentage = range2Total / total range3Percentage = range3Total / total '输出结果 Debug.Print "Range1 Percentage: " & range1Percentage Debug.Print "Range2 Percentage: " & range2Percentage Debug.Print "Range3 Percentage: " & range3Percentage End Sub ``` 4. 在代码中,将第一个区间范围、第二个区间范围和第三个区间范围分别设置为Range("A1:A10")、Range("B1:B10")和Range("C1:C10"),可以根据实际情况进行修改。 5. 按下F5键运行宏,结果将输出在VBA窗口的立即窗口中。 此宏将计算每个区间的总和占比,并输出结果。您可以根据需要将其修改为适合您的据集的格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值