求助:Excel中提取各名称对应最小时间及对应编号的方法
嘿,我来给你几个靠谱的解决方案,帮你搞定这个Excel里的分组匹配问题——既要按Name找出对应的最小Time,还要把对应的Number也一起捞出来,毕竟数据透视表确实搞不定这个关联的事儿。
方案1:数组公式(适配Excel 2019及更早版本)
假设你的数据表头在第1行,数据范围是A1:C8,你可以在D2单元格输入下面的数组公式,输入完成后按 Ctrl+Shift+Enter 确认(这是数组公式的专属确认键),然后下拉填充到所有行:
=INDEX(B:B,MATCH(MIN(IF(A:A=A2,C:C)),C:C,0))
简单说下逻辑:
IF(A:A=A2,C:C)先筛选出当前行Name对应的所有Time值MIN(...)从这些Time里挑出最小值MATCH(...,C:C,0)找到这个最小值在Time列的位置INDEX(B:B,...)最后根据位置提取对应的Number
⚠️ 注意:如果同一个Name下有多个完全相同的最小Time,这个公式会返回第一个出现的Number。
方案2:XLOOKUP+MINIFS(适配Excel 365/2021)
如果你的Excel版本支持动态数组函数,这个方法更省心,不用按组合键。直接在D2输入:
=XLOOKUP(MINIFS(C:C,A:A,A2),C:C,B:C,,0)
要是想一步到位自动填充所有行,用这个动态数组写法就行:
=XLOOKUP(MINIFS(C:C,A:A,A:A),C:C,B:C,,0)
逻辑更直白:
MINIFS(C:C,A:A,A:A)给每个Name计算对应的最小TimeXLOOKUP把每个最小Time匹配回对应的Number
方案3:Power Query(适合批量/复杂数据场景)
这个方法可视化程度高,还能随时刷新数据,步骤也不难:
- 选中你的数据区域,点击「数据」选项卡 → 「从表格/区域」(弹出对话框时记得勾选“我的表格有标题”)
- 进入Power Query编辑器后,点击「转换」选项卡 → 「分组依据」:
- 分组列选
Name - 新列名设为
MinTime,操作选「最小值」,列选Time
- 分组列选
- 现在我们有了Name和MinTime,接下来关联回原始数据的Number:
- 点击「主页」选项卡 → 「合并查询」→ 「合并查询作为新查询」
- 第一个表选当前的分组表,第二个表选你的原始数据
- 匹配条件选
Name对应Name、MinTime对应Time - 合并类型选「仅匹配」
- 点击合并后列的展开按钮,只勾选
Number列,确定即可 - 最后点击「主页」→ 「关闭并上载」,就能得到包含Name、MinTime和对应Number的完整表格了
验证你的示例数据
按照你的输入,最终输出应该是这样的:
| Name | Number | MinTime |
|---|---|---|
| A | 2 | 0.123 |
| B | 2 | 0.564 |
| C | 2 | 0.256 |
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

