如何统计.xlsx文件中每周第七天数值里低于50的出现次数?
嘿,这个需求我熟!刚好之前帮朋友处理过类似的Excel统计问题,给你几个实用的方案,不管你用的是Excel 365还是旧版本,或者需要批量处理,都能搞定:
解决方案
假设你的数值存储在A列,且数值出现在第1、8、15...行(每7行一个数值,中间间隔6个空行),我们要在相邻列(比如B列)统计这些数值中低于50的出现次数。
方法一:动态数组公式(适合Excel 365/2021及WPS最新版)
如果你的Excel支持动态数组功能,直接在目标单元格(比如B1)输入以下公式即可自动计算结果:
=COUNTIF(INDEX(A:A,SEQUENCE(ROUNDUP(COUNTA(A:A)/7,0),,1,7)),"<50")
公式解释:
SEQUENCE(ROUNDUP(COUNTA(A:A)/7,0),,1,7):生成一个从1开始、步长为7的行号序列,刚好对应每周第七天的数值行。INDEX(A:A, ...):提取这些行号对应的A列数值。COUNTIF(..., "<50"):统计提取出的数值中小于50的数量。
方法二:辅助列+简单统计(新手友好)
如果觉得数组公式有点复杂,用辅助列的方式更直观:
- 插入一个辅助列(比如C列),在C1单元格输入:
=IF(MOD(ROW(),7)=1,A1,"") - 下拉填充C列到A列最后一个数值所在行,这样C列就只会保留每周第七天的数值,其他行显示为空。
- 在目标单元格(比如B1)输入统计公式:
就能得到你要的结果了。=COUNTIF(C:C,"<50")
方法三:VBA宏(批量处理多工作表)
如果你的Excel文件有多个工作表需要处理,写个小宏能节省大量时间:
- 按下
Alt+F11打开VBA编辑器。 - 右键点击左侧的工作表名称,选择「插入」→「模块」。
- 粘贴以下代码:
Sub CountBelow50() Dim ws As Worksheet Dim lastRow As Long Dim count As Integer Dim i As Long ' 可修改为指定工作表,比如Set ws = Sheets("你的工作表名") Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row count = 0 ' 从第1行开始,每7行检查一次 For i = 1 To lastRow Step 7 If IsNumeric(ws.Cells(i, "A").Value) And ws.Cells(i, "A").Value < 50 Then count = count + 1 End If Next i ' 结果放在B1单元格,可自行修改位置 ws.Cells(1, "B").Value = count MsgBox "统计完成!低于50的数值共" & count & "个" End Sub - 按下
F5运行宏,就能自动完成统计啦。
注意事项
- 如果你的数值起始行不是第1行(比如从A2开始),需要调整公式/代码中的起始行:
- 方法一中把
SEQUENCE的第三个参数改成起始行号(比如2); - 方法二中把公式改成
=IF(MOD(ROW()-1,7)=0,A2,"")(根据起始行调整偏移量); - 方法三中把
For i = 1 To ...改成起始行号(比如2)。
- 方法一中把
- 确保空行是真正的空单元格,没有空格或隐形字符,否则会影响统计结果。如果有隐形字符,可以先用
TRIM(A1)处理数值。
内容的提问来源于stack exchange,提问作者user4086145
相关产品推荐
相关产品推荐

