You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Excel中统计不符合规则的pserial值数量的方法

统计不符合规则的pserial值数量(Excel公式&VBA方案)

公式方案(无需修改数据,直接计算)

直接在任意空白单元格输入以下公式,即可得到不符合规则的pserial数量:

=SUMPRODUCT(--(NOT((LEN(B11:B9291)=8)*(ISNUMBER(1*B11:B9291)*(MOD(B11:B9291,100)>=1)*(MOD(B11:B9291,100)<=99)))))

公式说明:

  • LEN(B11:B9291)=8:检查pserial是否为8位字符
  • ISNUMBER(1*B11:B9291):验证pserial是否全为数字(非数字内容转换为数值时会报错,ISNUMBER返回FALSE)
  • MOD(B11:B9291,100)>=1 且 MOD(B11:B9291,100)<=99:确保最后两位persnum在1-99的有效范围内(如果业务允许00作为成员编号,可将>=1改为>=0)
  • 三个条件同时满足才是合规值,NOT取反后统计不符合的数量,--将逻辑值转为1/0,SUMPRODUCT完成求和

VBA宏方案(批量统计,弹窗显示结果)

如果需要更直观的结果展示,可使用VBA宏,全程不修改原数据:

  1. 按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿,选择「插入」→「模块」
  3. 粘贴以下代码:
Sub CountInvalidPSerial()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim invalidCount As Long
    
    ' 指定目标工作表,可根据实际修改表名
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set rng = ws.Range("B11:B9291")
    invalidCount = 0
    
    For Each cell In rng
        ' 跳过空单元格
        If cell.Value <> "" Then
            ' 检查三项不合规条件:长度非8位、非数字、persnum超出1-99范围
            If Len(cell.Value) <> 8 Or Not IsNumeric(cell.Value) Or _
               (CLng(Right(cell.Value, 2)) < 1 Or CLng(Right(cell.Value, 2)) > 99) Then
                invalidCount = invalidCount + 1
            End If
        End If
    Next cell
    
    ' 弹窗显示统计结果
    MsgBox "不符合规则的pserial数量:" & invalidCount, vbInformation, "统计完成"
End Sub
  1. 按F5运行宏,即可看到统计结果弹窗

宏说明:

  • 代码会遍历B11到B9291的所有单元格,跳过空值后逐一验证规则
  • 若需调整persnum的有效范围,修改CLng(Right(cell.Value, 2)) < 1或>99的数值即可

内容的提问来源于stack exchange,提问作者andrea65

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:50:21