Excel中查找指定匹配项并返回其上一行值,实现多结果拼接
问题:Excel单列匹配所有目标名称,返回对应上一行时间并合并
需求说明
- 在Excel某列中精确匹配目标名称(例如匹配
JonP而非JonF) - 返回每个匹配名称所在行的上一行时间值
- 已实现返回第一个匹配项的公式:
=IFERROR(INDEX(A$2:A$9,MATCH("*"&$D2&"*",A$2:A$9,0)-1,1),""),但需要提取所有匹配项对应的时间,并用TEXTJOIN合并输出
最终解决方案公式
如果使用Excel表结构(表名为Schedule,时间列也命名为Schedule,名称列位于时间列的下一行位置),可直接使用以下公式:
=TEXTJOIN(", ",TRUE,FILTER(Schedule[Schedule],ISNUMBER(SEARCH(D2,OFFSET(Schedule[Schedule],1,0)))))
公式逻辑拆解
OFFSET(Schedule[Schedule],1,0):将时间列整体向下偏移1行,偏移后的区域恰好对应原时间列每一行的下一行(即名称所在行)SEARCH(D2, ...):在偏移后的区域中查找是否包含目标名称D2,找到则返回位置值,找不到返回错误值ISNUMBER(...):将SEARCH的结果转换为布尔值——匹配到目标时返回TRUE,否则返回FALSEFILTER(Schedule[Schedule], ...):用布尔值数组筛选原时间列,仅保留对应偏移区域中匹配到目标名称的行(也就是匹配名称的上一行时间)TEXTJOIN(", ",TRUE, ...):将筛选出的所有时间值用「逗号+空格」分隔合并,TRUE参数用于忽略空值
场景适配说明
当名称列存在混排情况(目标名称分散在不同行)时,公式会自动定位所有匹配的JonP,并提取每个实例对应的上一行时间,最终输出类似9:00, 14:30, 16:15的合并结果。
内容的提问来源于stack exchange,提问作者QuadrilateralMom
相关产品推荐
相关产品推荐

