【发布时间】:2018-05-28 08:35:29
【问题描述】:
我有两个公式需要合并为一个。但我收到一个计算错误:“IF 的参数数量错误。预计有 2 到 3 个参数,但收到了 4 个参数。”
这是第一个公式
=REGEXREPLACE(A4, "(/[^/]+)(?:/\?[^/]*)?$", "$1/")
这是第二个公式
=ARRAYFORMULA(IF(ISBLANK(B2:B),"",(CONCAT(B2:B,"?tag=ukos-20"))))
这是我的尝试
=ARRAYFORMULA(IF(ISBLANK(B2:B),"",(REGEXREPLACE(B2:B, "(/[^/]+)(?:/\?[^/]*)?$", "$1/")),(CONCAT(B2:B,"?tag=ukos-20"))))
下面是an example in a Google Sheet,如果需要可以用File-> Make a Copy复制。
所以我们在行上执行正则表达式,然后将结果传递给 concat,concat 将标签附加到 URL。
【问题讨论】:
-
如果单元格为空白,您是否只是想将单元格中的值保留为空白?试试
=IF(ISBLANK(B4),"",CONCAT(REGEXREPLACE(B4, "(/[^/]+)(?:/\?[^/]*)?$", "$1/"),"?tag=ukos-20")) -
"如果该行为空白,则不返回任何内容。否则,删除最后 / 之后的任何内容并始终确保最终 / 存在。然后将以下字符串追加(concat)到 REGEXREPLACE 的输出中?标签=ukos-20'"
-
函数本身有效,但模式与字符串不匹配。你确定
ref=之前没有?吗?看起来=ARRAYFORMULA(IF(ISBLANK(B2:B),"",CONCAT(REGEXREPLACE(B2:B, "(/[^/]+)(?:/\?[^/]*)?$", "$1/"),"?tag=ukos-20")))作品授予您的 URL 包含有效的查询字符串。可能,如果您希望同时支持?key=value和ref=value类型的结尾,则需要使用"(/[^/]+)(?:/(?:\?|ref=)[^/]*)?$"正则表达式。 -
所以,合并2个函数不是问题。要么是输入问题,要么是正则表达式问题。
-
我看到您正在使用我建议的正则表达式修复。我要发布答案吗?
标签: javascript regex excel google-sheets concatenation