【问题标题】:Multiple REGEXEXTRACT in Google Sheets formulaGoogle表格公式中的多个REGEXEXTRACT
【发布时间】:2020-10-29 10:07:15
【问题描述】:

我在 Google 表格中有一行文字,其中包含多种品牌。

单元格 B2 中的文本: [品牌]韦伯[品牌] [类别]弹簧[类别] [品牌]博世[品牌]

D2 列中的结果必须是: 韦伯博世

我正在尝试使用这个公式: =REGEXEXTRACT(B2; "[品牌](.*?)[品牌]")

但它只找到第一个 [brand]....[brand] 有没有人可以帮助我如何在文本中找到所有 [brand]....[brand] 并在 [brand]....[brand] 之间写下文本

任何帮助表示赞赏!谢谢:)

【问题讨论】:

  • 嗨,品牌的数量是固定的(总是 2 个?)还是这个数字是可变的?
  • 另外,我注意到不同标签之间的空格。对吗?

标签: google-sheets google-sheets-formula


【解决方案1】:

假设不同标签之间有空格(如您的示例),您可以在 B2 中尝试

=textjoin(", ", 1, ArrayFormula(iferror(regexextract(split(regexreplace(A2, "\](\s)\[","]_["), "_"), "\[brand\](.*?)\[brand\]"))))

如果没有,而且品牌数量是固定的(比如2个品牌)你可以试试

=regexextract(A2, rept(".*\[brand\](.*?)\[brand\]", 2))

如果字符串中出现的品牌数量是可变的,您可以计算出现的品牌数量并将其用作 rept() 函数中的第二个参数。

=regexextract(A2, rept(".*\[brand\](.*?)\[brand\]", (len(A2)-len(substitute(A2, "[brand]",)))/(2*LEN("[brand]"))))

如果您需要将输出放在单个单元格中(如在第一个公式中),您可以将 join(", ", ...) 包裹在最后两个公式周围。

希望有帮助吗?

【讨论】:

  • 看起来很有前途! :) 我需要将输出放在一个单元格中,是的,但是你会尝试把 join(", ", ...) 循环,因为我这样做时会出错。
  • 请注意,您的语言环境可能需要使用分号而不是逗号。
  • 这个工作正常,但是.. =textjoin(", ", 1, ArrayFormula(iferror(regexextract(split(A2, " "), ".*[brand](.*?) [brand]")))) 如果单元格 B2 中的文本有 2 个单词,例如:[brand]hugo boss[brand] 那么它不起作用?
  • @Smedegaard:我将第一个公式更新为 =textjoin(", ", 1, ArrayFormula(iferror(regexextract(split(regexreplace(A2, "](\s)[","]_) [")、"_")、"[品牌](.*?)[品牌]"))))。看看这是否适用于有空间的品牌?
  • 我在公式中遇到错误。我创建了一个测试表,你会看看你是否可以在那里修复它? docs.google.com/spreadsheets/d/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 2017-09-11
  • 2012-08-28
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多