【问题标题】:Is it possible to do string substitution based on pair list in another column? (Substituting multiple before-after value pairs for a range)是否可以根据另一列中的对列表进行字符串替换? (用多个前后值对替换一个范围)
【发布时间】:2019-09-01 07:33:45
【问题描述】:

我在 colA 中有一个巨大的项目列表,并希望用 colC 替换如果 colB 找到的所有子字符串实例,为什么这不起作用?

=arrayformula(substitute(A1:A, B1:B, C1:C))

colB 和 colC 大小相同,而且很大。这实际上只是为了避免必须执行所有手动 ctrl+h,或者有一个冗长的嵌套 substitute(substitute(substitute(... 公式

【问题讨论】:

  • 您能否将演示工作簿与示例输入链接并显示您看到的输出与您想要的输出?
  • 您好,Kate,感谢您对这个问题感兴趣。 Player0 提供的样例非常理想,但您可以查看我的 cmets 那里的不足之处。

标签: google-sheets google-sheets-formula substitution array-formulas gs-vlookup


【解决方案1】:

尝试类似:

=ARRAYFORMULA(IFERROR(REGEXREPLACE(A2:A, "^"&TEXTJOIN("$|^", 1, B2:B)&"$",
 VLOOKUP(REGEXEXTRACT(A2:A, TEXTJOIN("|", 1, B2:B)), B2:C, 2*
 SIGN(ROW(A2:A)), 0)&""), A2:A))

【讨论】:

  • 您好 Player0,感谢您的回答。这几乎可以按预期工作,只是它仅在 colA 完全匹配 colB 时才替换 colA,这样 xxx 就不会变成 rrx,这正是我所希望的。另外,如果 colA 的大小过大或单元格中的内容非常长,我相信此方法将受到 50000 字符数限制的限制。
  • xxx 变成rrx 试试:=ARRAYFORMULA(IFERROR(REGEXREPLACE(A2:A, TEXTJOIN("|", 1, B2:B), VLOOKUP(REGEXEXTRACT(A2:A, TEXTJOIN("|", 1, B2:B)), B2:C, 2* SIGN(ROW(A2:A)), 0)&""), A2:A))
【解决方案2】:

抱歉,我不能以菜鸟的身份添加评论,所以我会在这里发布。

Player0 的有趣解决方案。我在这里尝试,但不知何故失败了。有人能解释一下这个公式是如何工作的吗?

https://docs.google.com/spreadsheets/d/1lI8yFTfWKs8l826cVUYrWcGcPT-btiiPPWaTH6AipB0/edit?usp=sharing

【讨论】:

    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多