我的问题很棘手,所以我会尽量说清楚。
在我的程序中,我将单元格值与数据库进行比较以找到匹配项。我正在比较的单元格采用列格式,每个单元格中有一个单词。另一方面,我数据库中的单元格在一个单元格中包含一个完整的句子。
例如:
我的程序的目标是找到匹配项来识别一个地方。到目前为止,这就是它正在做的事情:它激活数据库中的单元格并与“elementsListRange”的每个单元格进行比较,“elementsListRange”是列中元素的选择(所以在我的图片“B2:B7”中)。当有比赛时,它会在线上增加12分。
'loop in the DATABASE
For i = a To b
Range("B" & i).Activate
'try to find a match btwn active cell and one of the elements from parsed address
For Each cell In elementsListRange.Cells
If Match(ActiveCell.Value, cell.Value) Then
Range("K" & i).Value = Range("K" & i).Value + 12
Else
Range("K" & i).Value = Range("K" & i).Value + 0
End If
Next
所以在这种情况下,有 3 次匹配,单元格 1(公司)、单元格 2(中心)和单元格 3(建筑物),总共有 36 分。
这是我想做的:现在,我想通过考虑单词的位置来使其更准确。因此,如果数据库中的单元格是“Corporate Center Building”,并且 Corporate/Center 和 Building 这两个词以相同的顺序出现,则会增加更多的分数。想法是:如果活动单元格和单元格 1(公司)之间存在匹配,则添加 12 个点并再次检查:如果活动单元格和单元格 1 + 单元格 2(公司中心)之间匹配,则添加 10 个附加点并再做一个 If:如果活动单元格与单元格 1 + 单元格 2 + 单元格 3(企业中心大楼)匹配,则增加 15 点,依此类推。
所以它不仅会找到匹配项,还会重视单词的位置。因此,如果输入的是“公司中心大楼”,并且您在数据库中同时拥有“公司中心大楼”和“公司中心大楼”,那么正确匹配的分数将更高。
像这样的东西:
'loop in the DATABASE
For i = a To b
Range("B" & i).Activate
'try to find a match btwn active cell and one of the elements from parsed address
For Each cell In elementsListRange.Cells
If Match(ActiveCell.Value, cell.Value) Then
Range("K" & i).Value = Range("K" & i).Value + 12
If Match(ActiveCell.Value, cell.Value + cell.offest(1,0).Value) Then
Range("K"&i).Value = Range("K"&i).Value + 10
If Match(ActiveCell.Value, cell.Value + cell.offest(1,0).Value + cell.offset(2,0).Value) Then
.... ..... ..... + 15
and so on
Else
End If
Else
End If
Else
Range("K" & i).Value = Range("K" & i).Value + 0
End If
Next
最后,这是我的问题:
不幸的是,我们不能这样写:
If Match(ActiveCell.Value, cell.Value + cell.offest(1,0).Value)
你知道如何表达这个想法吗?提前致谢。