Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 如何比较两个URL的最后一条线索是否匹配?_Google Sheets_Comparison - Fatal编程技术网

Google sheets 如何比较两个URL的最后一条线索是否匹配?

Google sheets 如何比较两个URL的最后一条线索是否匹配?,google-sheets,comparison,Google Sheets,Comparison,我试图创建一个电子表格,让我知道两个URL的最后一步是否匹配。(如果您想知道:这是用于重定向映射的,因为当我有旧URL并将它们与新结构匹配时,最后一条线索通常保持不变。) 上述电子表格或多或少起作用,可在此处找到: 我做了以下工作: 将旧URL和新URL拉入两个单独的页面(oldcrump/newcrrump) 将这些工作表中的URL拆分为单独的单元格,在每个“/”处拆分 比较两张图纸之间一行中最后填充的单元格 不幸的是,我的解决方案有些笨拙。对于大约600个初始行,我需要另外1200行,因为我

我试图创建一个电子表格,让我知道两个URL的最后一步是否匹配。(如果您想知道:这是用于重定向映射的,因为当我有旧URL并将它们与新结构匹配时,最后一条线索通常保持不变。)

上述电子表格或多或少起作用,可在此处找到:

我做了以下工作:

  • 将旧URL和新URL拉入两个单独的页面(oldcrump/newcrrump)
  • 将这些工作表中的URL拆分为单独的单元格,在每个“/”处拆分
  • 比较两张图纸之间一行中最后填充的单元格
  • 不幸的是,我的解决方案有些笨拙。对于大约600个初始行,我需要另外1200行,因为我使用2个不同的表,并且使用拆分公式来获得最后一条线索

    此外,我刚刚实现了对尾随位置的特定范围(拆分行表中的行I到H)与几个IF条件的比较。如果URL是超短或超长的,则“最后一次跟踪匹配?”行中不会显示任何内容

    在某个时候,我会收到一个警告,因为我会达到谷歌表单中可用单元格的最大数量(大约200000个?)


    那么,有没有更精细/优雅的方法来完成我在一个非常笨拙和沉重的方法中所做的事情呢?

    我会使用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更简单、更灵活。