Excel技巧:统计指定日期范围内的可见非空单元格数量
带日期条件的可见非空单元格统计方案
要实现指定日期范围内、可见行中B列非空单元格的动态统计,可结合SUMPRODUCT与SUBTOTAL函数实现,以下是具体方案:
基础公式(固定日期范围)
假设日期数据存储在'REINSPECTION W/ OVR'工作表的A列,要统计的非空单元格在B列,日期范围为2023年1月1日至3月31日,公式如下:
=SUMPRODUCT( SUBTOTAL(3, OFFSET('REINSPECTION W/ OVR'!B3:B, ROW('REINSPECTION W/ OVR'!B3:B)-ROW('REINSPECTION W/ OVR'!B3), 0, 1)), --('REINSPECTION W/ OVR'!A3:A >= DATE(2023,1,1)), --('REINSPECTION W/ OVR'!A3:A <= DATE(2023,3,31)), --('REINSPECTION W/ OVR'!B3:B <> "") )
公式各部分说明
SUBTOTAL(3, OFFSET(...)):逐行判断B列单元格是否为可见且非空(SUBTOTAL(3)对应COUNTA,会忽略筛选/手动隐藏的行;若需仅忽略筛选隐藏行,改用SUBTOTAL(103))--('REINSPECTION W/ OVR'!A3:A >= DATE(2023,1,1)):将A列日期≥起始日期的条件转换为1/0数组(符合条件为1,否则为0)--('REINSPECTION W/ OVR'!A3:A <= DATE(2023,3,31)):同理,判断日期≤结束日期的条件--('REINSPECTION W/ OVR'!B3:B <> ""):判断B列单元格非空的条件SUMPRODUCT:将上述数组对应相乘后求和,最终得到符合所有条件的可见单元格数量
动态日期范围(引用单元格)
若要让日期范围可通过单元格动态修改(比如将起始日期放在Sheet1!C1,结束日期放在Sheet1!C2),修改公式如下:
=SUMPRODUCT( SUBTOTAL(3, OFFSET('REINSPECTION W/ OVR'!B3:B, ROW('REINSPECTION W/ OVR'!B3:B)-ROW('REINSPECTION W/ OVR'!B3), 0, 1)), --('REINSPECTION W/ OVR'!A3:A >= Sheet1!C1), --('REINSPECTION W/ OVR'!A3:A <= Sheet1!C2), --('REINSPECTION W/ OVR'!B3:B <> "") )
注意事项
- 若实际日期列不是A列,需将公式中所有
A3:A替换为对应日期列的引用 - 公式支持筛选、手动隐藏行的动态更新,修改筛选条件或隐藏行后结果会自动刷新
内容的提问来源于stack exchange,提问作者SYNYSTERG
相关产品推荐
相关产品推荐

