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

Excel公式需求:获取行内全局最大值后局部最小值的单元格地址

解决Excel中获取全局最大值所在单元格地址的问题

你刚才的公式踩了个典型的小坑——MAX(D2:D3600)返回的是区域里的数值最大值900,而不是这个最大值所在的行号,所以公式会把900当成行号,返回$D$900,这显然和你要的$D$830不符。

正确获取最大值所在单元格地址的公式

分两种Excel版本给你适配方案:

  • Excel 365/2021(支持动态数组)
    直接用这个公式就能得到正确地址:

    =ADDRESS(MATCH(MAX(D2:D3600), D2:D3600, 0)+1, 4, 1, 1)
    

    逻辑拆解:

    • MATCH(MAX(D2:D3600), D2:D3600, 0) 找到最大值在D2:D3600区域内的相对位置(比如这里是第829位,因为从D2开始计数)
    • 加1后得到绝对行号830,列号4对应D列,最后两个1表示使用绝对引用样式(就是$D$830这种格式)
  • 旧版Excel(需按Ctrl+Shift+Enter作为数组公式输入)
    用这个数组公式:

    =ADDRESS(MAX(IF(D2:D3600=MAX(D2:D3600), ROW(D2:D3600))), 4, 1, 1)
    

    逻辑拆解:

    • IF(D2:D3600=MAX(D2:D3600), ROW(D2:D3600)) 筛选出所有等于最大值的单元格的行号
    • MAX 取出这些行号里的最大值(如果有多个相同最大值,会返回最后一个的行号;要第一个的话把MAX换成MIN就行)
    • 再用ADDRESS组合成标准单元格地址

额外:查找最大值之后的局部最小值

假设最大值在$D$830,要找它之后(D831到D3600)的局部最小值(即比左右相邻单元格都小的数值),可以用这个公式(旧版需按Ctrl+Shift+Enter):

=INDEX(D:D, MIN(IF((D831:D3599<D830:D3598)*(D831:D3599<D832:D3600), ROW(D831:D3599), 99999)))

如果只是要最大值之后的全局最小值(不是局部),那就更简单:
先找最小值:=MIN(D831:D3600),再获取它的地址:

=ADDRESS(MATCH(MIN(D831:D3600), D831:D3600, 0)+830, 4, 1, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:08:39