我如何模糊匹配相邻的单元格?

时间:2015-11-20 11:18:45

标签: excel excel-formula fuzzy-search fuzzy-comparison

我在两个相应的列中有一行10,000个名称,每行10,000个。 A列中的每个单元格对应于B列中的相邻单元格。我想进行模糊匹配,并在相邻单元格上获得所有这些单元格的兼容性分数。我不希望它搜索整个列与整个列,只是相邻的单元格,我似乎无法使用模糊匹配Excel添加,想法?

示例:

var $form = $(this).closest('.bookroom1, .bookroom2, .bookroom3, .bookroom4, .bookroom5');
var formData = $form.serializeArray();
formData.push({
    name: this.name,
    value: this.value
});

$.ajax({
    type: 'POST',
    url: AJAX_URL,
    data: formData,
    dataType: 'json',
    success: function (response) {
        if ($form.hasClass('bookroom5')) {
            alert('you have used form bookroom5')
        }
    }
});

1 个答案:

答案 0 :(得分:1)

好吧,我不了解Fuzzy Match Addin,但您可以使用UDF完成类似于您的要求。

根据您的示例数据

这样的事情
Function FuzzyComparision(String1 As String, String2 As String) As Double
Dim intStringLength As Integer
Dim dblScore As Double
Dim dblUnitScore As Double
Dim intCounter As Integer

intStringLength = WorksheetFunction.Max(Len(String1), Len(String2))
dblUnitScore = 1 / intStringLength
dblScore = 0#

For intCounter = 1 To intStringLength
    If Mid(UCase(String1), intCounter, 1) = Mid(UCase(String2), intCounter, 1) Then
        dblScore = dblScore + dblUnitScore
    Else
        If Len(String1) <> Len(String2) And intCounter < intStringLength Then
            If Mid(UCase(String1), intCounter + 1, 1) = Mid(UCase(String2), intCounter, 1) Then
                dblScore = dblScore + dblUnitScore
            End If
        End If
    End If
Next

FuzzyComparision = dblScore
End Function

当然,可以根据需要进一步即时比较。 如果有帮助,请告诉我

编辑:正如培根指出的那样(感谢您的观察),这对于丢失的字母不起作用。我稍微调整了函数以进行不区分大小写的比较并补偿丢失的字母,例如。

即使它起作用,效用依赖于可接受的分数偏差+/-。 OP可能会有所启发。