如果相邻单元格包含特定字符串,则从列表中写入数据

Write data from a list if the adjacent cell contains certain string

我需要更新数百个单元格,这将是微不足道的自动化,但我无法让它工作。

我有如下列表:

并且,在另一个选项卡中,我必须根据其他列中 Twitter 句柄的外观,用上面的值(在 B 中)填充一个列表。

名称在一个长文本字符串中(所有名称都以@开头),并且无法根据这些名称对列表重新排序。此外,名称多于值,因此某些单元格将保持空白。

如果该行 A 列中的名称包含在相邻字符串中,我是否可以编写一个公式,将第一个列表的值写入第二个列表?

谢谢!

您可以参考这个示例公式(使用了相同的sheet):

=arrayformula(if(C2:C<>"",iferror(vlookup(REGEXEXTRACT(C2:C,"\B\@\w+"),A2:B,2,false),""),""))

它有什么作用?

  • 使用数组公式循环C列值
  • 使用Regexextract()
  • 提取推特名称(以@开头的字符串)
  • 使用提取的@twittername 作为搜索关键字,使用 vlookup()
  • 获取连接值

输出:

由于我们无法访问传播sheet,我无法确定 line-break 字符在您的第二个 [=] 的 Col-A 单元格中是什么29=]。使用这个 line-break 字符很重要,因为 Twitter 句柄可能会使用一些 non-alphanumeric 字符,例如下划线和其他未包含在 \w 等 REGEX 符号中的字符。我在这里假设 line-break 字符是 ASCII 图表中的 CHAR(10)。

我也不知道你的第一个名字sheet;所以在这里,我只是把它写成 Sheet1。您需要将其替换为您的实际 sheet 名称,如果它包含除字母数字字符以外的任何内容(例如 'Data Sheet'),请记住将其放在单引号中(例如 'Data Sheet')。

就是说,删除第二个 sheet 中 Col-B 中的所有内容(包括 header“连接”),然后将以下公式放入第二个 [=29] 的单元格 B1 中=]):

=ArrayFormula({"Connections"; IF(A2:A="",, IFERROR(VLOOKUP(REGEXEXTRACT(SUBSTITUTE(A2:A,CHAR(10),"~"),"@[^~]+"),Sheet1!A:B,2,FALSE)))})