基于时间戳与ID匹配行并提取文本单元格的Google Sheets问题
Google Sheets 多条件匹配提取非数字文本内容
需求说明
- 数据源:
Form1表单,每行对应一条表单响应,多数单元格为数字(如1),少量为文本内容 - 目标:在
Sheet1中,通过时间戳和UAS ID两个条件匹配Form1的对应行,提取该行所有非数字的文本内容(例如示例中的No logs或Not needed)
解决方案公式
直接在Sheet1的Remarks列(比如C2单元格)输入以下公式,下拉填充即可:
=TEXTJOIN(", ", TRUE, FILTER(INDEX(Form1!A:Z, MATCH(1, (Form1!A:A=Sheet1!A2)*(Form1!B:B=Sheet1!B2), 0), 1):INDEX(Form1!A:Z, MATCH(1, (Form1!A:A=Sheet1!A2)*(Form1!B:B=Sheet1!B2), 0), COLUMNS(Form1!A:Z)), ISTEXT(INDEX(Form1!A:Z, MATCH(1, (Form1!A:A=Sheet1!A2)*(Form1!B:B=Sheet1!B2), 0), 1):INDEX(Form1!A:Z, MATCH(1, (Form1!A:A=Sheet1!A2)*(Form1!B:B=Sheet1!B2), 0), COLUMNS(Form1!A:Z)))))
参数调整说明
- 列对应关系:假设
Form1中时间戳在A列,UAS ID在B列;Sheet1中时间戳在A2,UAS ID在B2,如果你的列位置不同,直接修改公式中对应的列引用即可 - 数据源范围:公式中
Form1!A:Z是Form1的数据源列范围,如果表单响应列更多,可改为Form1!A:ZZ之类的更大范围
公式拆解
MATCH(1, (Form1!A:A=Sheet1!A2)*(Form1!B:B=Sheet1!B2), 0):通过时间戳+UAS ID的组合条件,找到Form1中匹配的行号INDEX(...):定位到匹配行的所有单元格区域FILTER(..., ISTEXT(...)):从匹配行中筛选出所有文本类型的单元格(排除数字)TEXTJOIN(", ", TRUE, ...):将筛选出的文本用逗号+空格拼接,TRUE表示自动忽略空值
示例效果
如果匹配到的Form1行中只有一个文本单元格No logs,公式直接返回No logs;如果有两个文本单元格No logs和Not needed,则返回No logs, Not needed
内容的提问来源于stack exchange,提问作者mani3kx
相关产品推荐
相关产品推荐

