【问题标题】:Pull cell data while other cells within row match a string提取单元格数据,而行内的其他单元格匹配字符串
【发布时间】:2020-10-23 20:26:53
【问题描述】:

我正在为一个工作项目使用 google 表格,并且我正在尝试从一个单元格中提取数据,该单元格中的 2 个单元格与我要查找的内容相匹配。

例如:我在工作表 2 中有 8 列和 5600 行。我想从“D”列中提取数据,但前提是“A”和“C”列中的数据与我要查找的内容匹配。假设“A”列是星期几,“C”列是名字,“D”列是一个ID号。我想要“D”列的 ID 号,但只需要“A”列 =“Thursday”和“C”列 =“Jeff”的行。也会有一些行共享列“A”和“C”,但在“D”列中有不同的数字,我也想拉这些。

这是我能够抓住星期几的尝试:

=INDEX('sheet2'!A:A,MATCH((INDIRECT("RC[-5]",0)),'sheet2'!C:C,0),)

(存在间接函数,因为我要匹配的名字总是在该函数左侧的 5 个单元格处)

这是我能够获取 ID 号的尝试:

=INDEX('sheet2'!D:D,MATCH((INDIRECT("RC[-5]",0)),'sheet2'!C:C,0),)

所以,我希望能够调用上面的第二个函数,但前提是第一个函数的计算结果为“星期四”。

【问题讨论】:

  • 请公开分享测试表,以便您更容易获得帮助。另外,请在发布问题时编辑并使用文本格式选项

标签: excel function google-sheets excel-formula


【解决方案1】:

对我来说,这归结为两个不同的问题

Q1) 多条件查找 (INDEX+MATCH)

Q2) 当多行符合您的条件时返回多个值


假设工作日在函数左侧 6 个单元格处,名字在左侧 5 个单元格处。我还限制了搜索整个列的范围。根据需要进行调整,但完整的列对于 Excel 来说有点过多。

A1) 这个简单的查找将处理多个标准问题,但不会获取名称和工作日组合的重复项。

 =INDEX(sheet2!D2:D12,MATCH((INDIRECT("RC[-6]",0)&INDIRECT("RC[-5]",0)),sheet2!A2:A12&sheet2!C2:C12,0))    

A2) 此公式将在相同的单元格中列出所有结果,用逗号分隔,看起来像“121208,445555,445553”,而不是单独的行。

=TEXTJOIN(",",TRUE,(IF((INDIRECT("RC[-6]",0)=sheet2!$A$2:$A$12)*(INDIRECT("RC[-5]",0)=sheet2!$C$2:$C$12)*(1-ISBLANK(sheet2!$D$2:$D$12)),sheet2!$D$2:$D$12,"")))    

在评论反馈后编辑:某些版本的 excel 要求您使用 Ctrl+Shift+Enter 而不是仅使用 Enter 来应用此公式才能正常工作。

如果您需要将一对条件的所有匹配项堆叠在不同的行上,我建议您查看 Power Query 工具(最新版本的 Excel 中的原生工具)。对于 PQ 来说,通过合并具有“Left Outer”连接类型的表,这将是一项相对容易的任务。

【讨论】:

  • 这太接近了!您发布的第一个答案效果很好,它显示了我正在寻找的 ID,谢谢!更正公式中的信息后的第二个,只显示一个空白单元格。但是,它没有显示错误。这让我相信单元格太小,无法容纳所有信息,但在扩大列宽后,它仍然什么也没显示:(。有什么想法为什么公式会显示一个空单元格?
  • Nvm,我能够通过将它包含在一个数组公式中来修复它并且它有效!非常感谢!
  • 我不必这样做。可能是因为我们有不同版本的excel。很高兴听到它成功了! :)
猜你喜欢
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多