求两种Microsoft Excel公式:特定行列交叉值、指定列与命名行交叉的最后值
Excel 公式问题解答
1. 返回特定名称行与特定列交叉处的单元格值
可以通过多种公式实现,其中INDEX + MATCH组合适配所有Excel版本,灵活性最高;XLOOKUP则更简洁(仅支持Excel 365/2021及以上版本)。
示例场景
假设表格结构:
- 行名称存储在A列(如A2:A100)
- 列名称存储在第1行(如B1:Z1)
- 需查找行名称为"产品A"、列名称为"2024年5月销量"的单元格值
公式1:INDEX + MATCH
=INDEX(B2:Z100, MATCH("产品A", A2:A100, 0), MATCH("2024年5月销量", B1:Z1, 0))
第一个MATCH定位目标行的相对行号,第二个MATCH定位目标列的相对列号,INDEX根据行列坐标返回对应单元格值。
公式2:XLOOKUP
=XLOOKUP("产品A", A2:A100, XLOOKUP("2024年5月销量", B1:Z1, B2:Z100))
内层XLOOKUP提取目标列的全量数据,外层XLOOKUP匹配目标行名称并返回对应值。
2. 返回特定列中与给定名称行交叉的最后一个单元格值
分两种常见场景说明:
场景A:同一名称对应多行记录,取特定列中该名称的最后一个值
假设:
- 行名称在A列(存在重复项,如A2:A100)
- 目标数据列是B列(如B2:B100)
- 需查找行名称为"产品A"的最后一条记录值
公式1:LOOKUP(全版本兼容)
=LOOKUP(2, 1/(A2:A100="产品A"), B2:B100)
1/(A2:A100="产品A")生成由1和#DIV/0!组成的数组,LOOKUP会忽略错误值,定位到最后一个1对应的B列值。
公式2:XLOOKUP(Excel 365/2021+)
=XLOOKUP("产品A", A2:A100, B2:B100, , , -1)
最后一个参数-1表示从后往前匹配,直接返回目标名称的最后一条记录值。
场景B:特定行内,取某列范围的最后一个非空值
假设:
- 目标行名称为"汇总行",行号通过
MATCH获取 - 需取该行B列到Z列的最后一个非空值
公式:INDEX + COUNTA
=INDEX(INDEX(B:Z, MATCH("汇总行", A:A, 0), 0), COUNTA(INDEX(B:Z, MATCH("汇总行", A:A, 0), 0)))
内层INDEX提取目标行的全列数据,COUNTA统计该行非空单元格数量,外层INDEX返回最后一个非空值。
内容的提问来源于stack exchange,提问作者Poliakoff
相关产品推荐
相关产品推荐

