是否有可能在Excel中进行Levenshtein距离而无需求助于宏?

6 excel excel-formula fuzzy-logic levenshtein-distance

让我解释.

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

我的问题是我正在实习,很快就离开了.那些将继续这样做的人不知道如何在宏中使用excel,并希望我尽我所能地实现我所做的.

所以我的问题是:无论函数效率如何,是否有任何方法可以在Excel中制作一个标准函数来计算我以前做过的,而不需要使用宏?

谢谢.

dua*_*ity 12

如果你来这个谷歌搜索类似的东西 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];
}
Run Code Online (Sandbox Code Playgroud)

您应该可以从电子表格中运行它

=Levenshtein(cell_1,cell_2)


Sea*_*anC 0

看看之前计算编辑距离的答案,我认为不可能将其创建为公式。

看一下这里的代码