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

如何结合数组公式与LARGE函数按周提取第3低价格?

嘿,这个需求用Excel的函数组合就能轻松搞定!我分两种常见场景给你讲清楚,不管你用的是新版还是旧版Excel都能用上:

方法一:适用于Excel 365/2021(支持动态数组)

假设你的「Week」列在A列,「Price」列在B列,直接用下面的公式就能自动生成所有周的第3低价格:

=BYROW(UNIQUE(A:A), LAMBDA(week, IFERROR(SMALL(FILTER(B:B, A:A=week), 3), "不足3个价格")))

拆解一下逻辑:

  • UNIQUE(A:A):先提取出所有不重复的周数,不用手动去列每一周;
  • BYROW(...):遍历每个唯一的周,对每一周单独处理;
  • FILTER(B:B, A:A=week):筛选出当前周对应的所有价格;
  • SMALL(..., 3):从筛选出的价格里取第3低的那个;
  • IFERROR(...):如果某一周的价格不足3个,会返回提示文本,避免出现错误值。

要是数据量很大,建议把整列引用(A:A、B:B)改成实际的数据范围,比如A2:A1000,这样公式运行会更流畅。

方法二:适用于旧版Excel(无动态数组,需数组公式)

如果你的Excel版本不支持动态数组,就用这个方法:

  1. 先把所有不重复的周数列出来(比如放在D列,D2输入「01」,D3输入「02」,以此类推);
  2. 在E2单元格输入下面的公式,然后按Ctrl+Shift+Enter(必须按这三个键触发数组公式):
=IFERROR(SMALL(IF(A:A=D2, B:B), 3), "不足3个价格")
  1. 把E2的公式往下拉,就能批量算出每一周的第3低价格。

逻辑解释:

  • IF(A:A=D2, B:B):生成一个数组,只有当A列的周数等于D2的周数时,返回对应的B列价格,否则返回FALSE;
  • SMALL(..., 3):自动忽略FALSE值,从有效价格里取第3低的;
  • IFERROR同样是用来处理价格不足3个的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:03:29