Google sheets 如何比较两个URL的最后一条线索是否匹配?
我试图创建一个电子表格,让我知道两个URL的最后一步是否匹配。(如果您想知道:这是用于重定向映射的,因为当我有旧URL并将它们与新结构匹配时,最后一条线索通常保持不变。) 上述电子表格或多或少起作用,可在此处找到: 我做了以下工作:Google sheets 如何比较两个URL的最后一条线索是否匹配?,google-sheets,comparison,Google Sheets,Comparison,我试图创建一个电子表格,让我知道两个URL的最后一步是否匹配。(如果您想知道:这是用于重定向映射的,因为当我有旧URL并将它们与新结构匹配时,最后一条线索通常保持不变。) 上述电子表格或多或少起作用,可在此处找到: 我做了以下工作: 将旧URL和新URL拉入两个单独的页面(oldcrump/newcrrump) 将这些工作表中的URL拆分为单独的单元格,在每个“/”处拆分 比较两张图纸之间一行中最后填充的单元格 不幸的是,我的解决方案有些笨拙。对于大约600个初始行,我需要另外1200行,因为我
那么,有没有更精细/优雅的方法来完成我在一个非常笨拙和沉重的方法中所做的事情呢?我会使用and进行比较 比如:
/**
* Added for use as a custom function
* @customfunction
*/
function compareurl (oldurl, newurl) {
var a = oldurl.slice(oldurl.lastIndexOf("/") + 1);
var b = newurl.slice(newurl.lastIndexOf("/") + 1);
return (a == b) ? true : false;
}
它查找最后一个/
,并从url中的最后一个标记创建一个新字符串进行比较
编辑刚刚注意到您可能没有使用应用程序脚本。仍将使用a和上述方法。然后使用
=compareurl()
以下公式计算:
=regexreplace(A2, ".*/", "")=regexreplace(C2, ".*/", "")
在这里,regexreplace删除最后一个斜杠之前(包括最后一个斜杠)的所有内容,因为*
表示任意数量的字符。因此,在最后一个斜杠之后,测试尾部之间的相等性
也可用作数组公式:
=arrayformula(regexreplace(A2:A11, ".*/", "")=regexreplace(C2:C11, ".*/", ""))
或允许输入范围中出现空行的数组公式:
=arrayformula(if(isblank(A2:A), "", regexreplace(A2:A, ".*/", "")=regexreplace(C2:C, ".*/", "")))
在600行中重复一个自定义函数(正如OP提到的)在性能方面不是很好。Google Sheets为正则表达式提供了内置函数,可以更有效地处理文本处理。是的,我回答说,考虑的是脚本解决方案,而不是内置函数——假设脚本正在URL中读取,拆分它们,然后尝试获取最后的单元格值等。我不点击随机的电子表格链接,也不知道该步骤是如何执行的。很棒的解决方案。非常感谢。问题:当我想将其设置为具有空行的模板时,arrayformula会显示#REF!错误。只要我填写了所有声明的行,它就可以工作。如果行是空的,那么如何绕过它,使其不显示任何内容,但在行填充时应用公式?可能是这样的数组:
=if(ISBLANK(A2:A10000),“”,regexreplace(A3,“.*/”,“”)=regexreplace(C3,“.*/”,“”)
是的,我在中编辑了这样的公式。你不必把“10000”放在那里,A2:A更简单、更灵活。