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

Excel VBA统计不同尺寸表格Yes/No占比遇行数适配值错误问题

解决VBA动态统计Yes占比(循环至空单元格停止)

原代码通过固定Resize(8,1)取8行数据,无法适配行数不固定的表格,导致部分行数据未被统计。以下是修改后的代码,实现从起始单元格向下循环,直到遇到空单元格时停止的动态统计逻辑:

Function CalcTotalPercentage() As Double
    Application.Volatile
    Dim rng As Range
    Dim currentCell As Range
    Dim yesCount As Integer
    Dim total As Integer

    yesCount = 0
    total = 0

    ' 遍历指定的复选框所在行区域
    For Each rng In Union(Range("B2:x2"), Range("B12:x12"), Range("B22:x22"), Range("B32:x32"), Range("B42:x42"), Range("B52:x52"))
        ' 仅统计勾选的复选框对应列的数据
        If rng.Value Then
            ' 从当前复选框下方第一行开始遍历
            Set currentCell = rng.Offset(1, 0)
            ' 循环直到遇到空单元格
            Do While Not IsEmpty(currentCell.Value)
                If UCase(currentCell.Value) = "YES" Then
                    yesCount = yesCount + 1
                End If
                total = total + 1
                ' 移动到下一行
                Set currentCell = currentCell.Offset(1, 0)
            Loop
        End If
    Next rng

    ' 计算占比(避免除以0)
    If total > 0 Then
        CalcTotalPercentage = yesCount / total
    Else
        CalcTotalPercentage = 0
    End If
End Function

关键改动说明

  • 动态行遍历:替换原固定行数的Resize(8,1),改用Do While循环结合IsEmpty判断,自动适配不同行数的表格,直到遇到空单元格停止
  • 空值判断优化:明确判断单元格是否为空,避免统计无效的空单元格
  • 边界处理修正:将原判断total > 1改为total > 0,避免当只有1条有效数据时无法计算占比的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:16:11