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

如何将MAX()与自动多范围值搭配使用,实现跨列动态统计需求

可以实现,不同Excel版本对应写法如下:

1. Excel 365/2021(支持动态数组,最简写法)

直接粘贴到任意列的目标单元格即可自动适配当前列的前置列范围:

=MAX(BYCOL(INDIRECT("A:"&SUBSTITUTE(ADDRESS(1,COLUMN()-1,4),"1","")),LAMBDA(col,COUNTIF(col,"*[Text String]*"))))

如果需要指定行范围(比如你示例中从第3行到动态行数,假设动态行数存在单元格$X$1中),调整为:

=MAX(BYCOL(INDIRECT("A3:"&SUBSTITUTE(ADDRESS(1,COLUMN()-1,4),"1","")&$X$1),LAMBDA(col,COUNTIF(col,"*[Text String]*"))))

逻辑说明:

  • COLUMN()获取当前所在列的序号,SUBSTITUTE(ADDRESS(1,COLUMN()-1,4),"1","")可以兼容所有列号,把当前列的前一列序号转为对应的列名(比如D列的前一列是C,E列的前一列是D,超过Z列的AA、AB列也能正常转换)
  • BYCOL会遍历指定范围内的每一列,对每一列执行LAMBDA中定义的COUNTIF计算,最后用MAX取所有计算结果的最大值

2. 旧版Excel(不支持动态数组和LAMBDA)

需要用数组公式实现,输入完成后按Ctrl+Shift+Enter组合键生效:

=MAX(COUNTIF(INDIRECT(SUBSTITUTE(ADDRESS(1,ROW(A1),4),"1","")&":"&SUBSTITUTE(ADDRESS(1,ROW(A1),4),"1","")),"*[Text String]*"))

如果需要指定行范围,调整为:

=MAX(COUNTIF(INDIRECT(SUBSTITUTE(ADDRESS(1,ROW(A1),4),"1","")&"3:"&SUBSTITUTE(ADDRESS(1,ROW(A1),4),"1","")&[Dynamic Number]),"*[Text String]*"))

基础版适配(仅取前置列最大值,不需要COUNTIF)

如果只是需要实现你示例中D列取A:C最大值、E列取A:D最大值的基础需求,Excel 365直接用:

=MAX(A:INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN()-1,4),"1","")&":"&SUBSTITUTE(ADDRESS(1,COLUMN()-1,4),"1","")))

注意:如果不需要兼容超过Z列的场景,可以把SUBSTITUTE(ADDRESS(1,COLUMN()-1,4),"1","")简化为CHAR(COLUMN()+63),公式更短。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:30:00