我尝试创建一个电子表格,让我知道两个网址的最后一个跟踪步骤是否匹配。 (如果您想知道:它用于重定向映射,因为当我有旧URL并将它们与新结构匹配时,最后一条路径往往保持不变。)
上述电子表格或多或少有效,可在此处找到:https://docs.google.com/spreadsheets/d/1m3E5NQYSUGe4Kxn4BrpcgWj4WhotKG88JCx93ER3U1c/edit?usp=sharing
我做了以下事情:
不幸的是我的解决方案有点笨拙。对于大约600个初始行,我需要另外1200行,因为我使用2张不同的纸张,并且还使用拆分公式来获取最后一条路。
此外,我刚刚对具有多个IF条件的尾随位置的特定范围(分割行表中的行I到H)进行了比较。如果URL是超短或超长,则“最后一个跟踪匹配?”中不会显示任何内容。行。
同时在某些时候我会收到警告,因为我会在Google表格中达到最大可用单元格数量(大约200000左右?)。
那么还有更精细/优雅的方式来做我在超级笨拙和沉重负载方法中所做的事情吗?
答案 0 :(得分:1)
以下公式可以做到:
=regexreplace(A2, ".*/", "")=regexreplace(C2, ".*/", "")
在这里,regexreplace会删除最后一行(包括)最后一个斜杠,因为.*
表示任意数量的任何字符。因此,在最后一次斜杠之后的尾部之间测试了相等性。
也可用作数组公式:
=arrayformula(regexreplace(A2:A11, ".*/", "")=regexreplace(C2:C11, ".*/", ""))
或允许输入范围中出现空行的数组公式:
=arrayformula(if(isblank(A2:A), "", regexreplace(A2:A, ".*/", "")=regexreplace(C2:C, ".*/", "")))
答案 1 :(得分:0)
我会使用lastIndexOf()和slice()
的比较方法类似的东西:
/**
* 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中的最后一个标记创建一个新字符串进行比较
编辑注意到您可能没有使用应用脚本。仍然会使用Custom Function和上述方法。然后使用=compareurl()