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

如何从过滤后的动态数组中提取特定列最小值所在行?

两种解决方法:公式法 & Power Query法

公式法(适配你现有FILTER的思路)

假设数据结构为:A列=产品名称,B列=供应商,C列=价格,可针对单个产品或批量生成所有产品的结果:

  • 单个产品最低价:=MIN(FILTER(C:C, A:A=指定产品单元格)),直接对FILTER筛选出的价格列取最小值
  • 单个产品对应供应商:=INDEX(B:B, MATCH(指定产品单元格&MIN(FILTER(C:C,A:A=指定产品单元格)), A:A&C:C, 0)),通过「产品+最低价」的组合匹配对应行,提取供应商
  • 批量生成所有产品结果(动态数组,无需下拉填充):
    在空白单元格输入以下公式,会自动生成包含所有产品名称、最低价供应商、最低价的完整表格:
=LET(
    产品列表, UNIQUE(A:A),
    最低价, MAP(产品列表, LAMBDA(x, MIN(FILTER(C:C,A:A=x)))),
    对应供应商, MAP(产品列表, LAMBDA(x, INDEX(B:B,MATCH(x&MIN(FILTER(C:C,A:A=x)),A:A&C:C,0)))),
    HSTACK(产品列表, 对应供应商, 最低价)
)

Power Query法(更简便的批量处理)

如果数据量较大,Power Query是更高效的方案,步骤如下:

  1. 选中数据区域,点击Excel顶部「数据」选项卡→「从表格/区域」,将数据导入Power Query编辑器
  2. 选中「产品名称」列,点击「转换」选项卡→「分组依据」
  3. 在分组设置窗口中:
    • 分组依据:选择「产品名称」
    • 添加第一个分组规则:新列名填「最低价」,操作选「最小值」,列选择「价格」
    • 添加第二个分组规则:新列名填「对应供应商」,操作选「自定义」,然后输入公式 =Table.SelectRows(_, each [价格] = [最低价])[供应商]{0}
  4. 点击「确定」,即可得到每个产品对应最低价和供应商的表格,最后点击「关闭并上载」将结果放回Excel

注:如果存在多个供应商给出同一最低价,把公式里的{0}改成Text.Combine(_, ", "),就能把所有符合条件的供应商合并成逗号分隔的文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:46