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

Excel技术问询:INDEX获取Jun表最后非空行及MAX公式原理

问题解答

ROW()函数的作用

ROW(Jun!C:C)的作用是生成一个包含Jun工作表C列所有行号的数组——第1行对应1,第2行对应2,一直到Excel允许的最大行号(通常是1048576)。简单说就是给C列每个单元格“贴上”它所在的行号标签。

MAX部分的工作原理

咱们拆解来看:

  1. Jun!C:C<>"":对C列每个单元格做非空判断,非空单元格返回TRUE,空单元格返回FALSE。在Excel数组运算逻辑里,TRUE会自动转为数字1,FALSE转为0。
  2. 两者相乘:(Jun!C:C<>"")*ROW(Jun!C:C),非空单元格对应的行号会被保留(1×行号=行号),空单元格对应的行号则变成0(0×行号=0)。这一步后会得到一个数组,里面只有非空行的位置是对应行号,其余全是0。
  3. MAX()的作用:从上述数组里取最大值,这个最大值就是C列最后一个非空单元格的行号——毕竟行号是递增的,最后一个非空行的行号肯定是数组里最大的那个。

为什么单独测试MAX得到1?

直接在单元格输入MAX((Jun!C:C<>"")*ROW(Jun!C:C))时,Excel默认按普通公式计算,只会处理第一行的内容:如果C1是空,结果就是0×1=0;如果C1非空,结果就是1×1=1,MAX只能取这一个值,所以得到1。

但把这部分放进INDEX函数里时,Excel会自动触发数组运算(旧版Excel需要手动按Ctrl+Shift+Enter确认),此时会遍历C列所有行,计算出完整数组后再取最大值,自然就能得到最后非空行的行号,配合INDEX就能取出对应单元格的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:01:34