Google Sheets:返回匹配值第N个实例并添加列标题前缀
Google Sheets 匹配第N个实例并添加列首行前缀的公式方案
核心需求拆解
- 从
Task List表的A2:A100区域中,找到与A$1匹配的第N个实例 - 返回该实例对应
B2:H100区域的内容,每个列内容前添加对应列首行(B1:H1的文本)作为前缀 - 所有内容用换行符分隔
通用公式(支持第N个实例)
将公式中的n替换为你需要的实例序号(1、2、3...)即可:
=TEXTJOIN(CHAR(10), TRUE, ARRAYFORMULA('Task List'!$B$1:$H$1&": "&INDEX('Task List'!$B$2:$H$100, SMALL(IF('Task List'!$A$2:$A$100=A$1, ROW('Task List'!$A$2:$A$100)-ROW('Task List'!$A$2)+1), n), )))
公式各部分说明
IF('Task List'!$A$2:$A$100=A$1, ROW('Task List'!$A$2:$A$100)-ROW('Task List'!$A$2)+1):筛选出所有匹配A$1的行,返回其在B2:H100区域内的相对行号(从1开始计数)SMALL(..., n):从筛选出的相对行号中,提取第n个匹配项的行号ARRAYFORMULA('Task List'!$B$1:$H$1&": "&INDEX(...)):自动将对应列的首行文本与该行单元格内容拼接为「列标题: 内容」的格式TEXTJOIN(CHAR(10), TRUE, ...):用换行符连接所有拼接后的内容,自动忽略空值
实例化公式示例
返回第1个匹配实例
=TEXTJOIN(CHAR(10), TRUE, ARRAYFORMULA('Task List'!$B$1:$H$1&": "&INDEX('Task List'!$B$2:$H$100, SMALL(IF('Task List'!$A$2:$A$100=A$1, ROW('Task List'!$A$2:$A$100)-ROW('Task List'!$A$2)+1), 1), )))
返回第2个匹配实例
=TEXTJOIN(CHAR(10), TRUE, ARRAYFORMULA('Task List'!$B$1:$H$1&": "&INDEX('Task List'!$B$2:$H$100, SMALL(IF('Task List'!$A$2:$A$100=A$1, ROW('Task List'!$A$2:$A$100)-ROW('Task List'!$A$2)+1), 2), )))
返回第3个匹配实例
=TEXTJOIN(CHAR(10), TRUE, ARRAYFORMULA('Task List'!$B$1:$H$1&": "&INDEX('Task List'!$B$2:$H$100, SMALL(IF('Task List'!$A$2:$A$100=A$1, ROW('Task List'!$A$2:$A$100)-ROW('Task List'!$A$2)+1), 3), )))
错误处理优化
如果目标序号的匹配实例不存在,公式会返回#NUM!错误,可以用IFERROR包裹公式,返回空值或自定义提示:
=IFERROR(TEXTJOIN(CHAR(10), TRUE, ARRAYFORMULA('Task List'!$B$1:$H$1&": "&INDEX('Task List'!$B$2:$H$100, SMALL(IF('Task List'!$A$2:$A$100=A$1, ROW('Task List'!$A$2:$A$100)-ROW('Task List'!$A$2)+1), n), ))), "无匹配项")
内容的提问来源于stack exchange,提问作者David J. Myers
相关产品推荐
相关产品推荐

