让我解释。

我要为一家公司做一些模糊匹配,所以ATM我使用了一个levenshtein距离计算器,然后计算了两个术语之间的相似度百分比。如果术语的相似度超过 80%,Fuzzymatch 将返回“TRUE”。

我的问题是我正在实习,很快就要离开了。将继续这样做的人不知道如何将 excel 与宏一起使用,并希望我尽我所能实现我所做的。

所以我的问题是:不管这个函数效率有多低,有没有办法在 Excel 中创建一个标准函数来计算我以前所做的事情,而无需求助于宏?

谢谢。

最佳答案

如果你是关于这个谷歌搜索的levenshtein distance google sheets
我把它放在一起,以及 milot-midia 对这个要点的代码注释(https://gist.github.com/andrei-m/982927 - MIT 许可下的代码)

  • 从标题菜单中的表格中,Tools -> Script Editor
  • 为项目命名
  • 函数名(不是项目)会让你使用 func
  • 粘贴以下代码


  • function Levenshtein(a, b) {
      if(a.length == 0) return b.length;
      if(b.length == 0) return a.length;
    
      // swap to save some memory O(min(a,b)) instead of O(a)
      if(a.length > b.length) {
        var tmp = a;
        a = b;
        b = tmp;
      }
    
      var row = [];
      // init the row
      for(var i = 0; i <= a.length; i++){
        row[i] = i;
      }
    
      // fill in the rest
      for(var i = 1; i <= b.length; i++){
        var prev = i;
        for(var j = 1; j <= a.length; j++){
          var val;
          if(b.charAt(i-1) == a.charAt(j-1)){
            val = row[j-1]; // match
          } else {
            val = Math.min(row[j-1] + 1, // substitution
                           prev + 1,     // insertion
                           row[j] + 1);  // deletion
          }
          row[j - 1] = prev;
          prev = val;
        }
        row[a.length] = prev;
      }
    
      return row[a.length];
    }


    您应该能够从电子表格中运行它
    =Levenshtein(cell_1,cell_2)

    10-08 03:13