以下是我要分析的数据:
如图所示,我试图将列H与第一列匹配。 第一列中匹配的列H 中的任何关键字匹配都会返回“1”,如果没有匹配关键字,则会返回 “0”即可。
我尝试使用模糊查找,但我感到沮丧的是它不断给我百分比而不是单个1和0.(真或假)。
无论如何,无论是使用宏还是等式,还是有人可以帮我使用模糊查找,如果这也是一个很好的解决方案。
任何可以指导我正确方向的帮助都会有很大帮助。 谢谢!
编辑:(10/27/17)
更新:
我在这里使用过这个用户答案:https://superuser.com/a/984389/464791
这非常有用。但它仍然缺乏我认为每个excel用户/ dev需要的东西,这是我在上面描述的方式的字符串比较。我仍然在寻找一个解决方案,主要是因为我可以学习,未来的其他人可以有一个。截至目前,我不再需要此解决方案了。但我仍然希望继续努力。
答案 0 :(得分:1)
Fuzzy Lookup
旨在返回百分位数来引用它的匹配程度。请refer here
您可以做的一个选项是我们=IF()
并让它显示1或0,具体取决于匹配的接近程度。
即。 =IF( D1 >= .50 , 1 , 0)
或=IF( D1 <= .50 , 0 , 1)
答案 1 :(得分:1)
尝试在模块中使用此代码...使用变量更改工作表名称,扫描位置,起始行等。
我试着根据你的需要设置大部分内容。
它只是将每个字符串拆分到它们的空间,也许可以帮助你。
Option Explicit
Dim ws As Worksheet
Dim col1 As Integer
Dim col2 As Integer
Dim colFlag As Integer
Dim rowStart As Integer
Dim urWs1 As Long
Dim scanArr As Variant
Dim actScan As Variant
Dim i As Long
Sub test()
'Worksheet
Set ws = ThisWorkbook.Worksheets("Tabelle1")
'Column D = 4
colFlag = 4
'Column H=8
col1 = 8
'Column I=9
col2 = 9
'Start scanning
rowStart = 2
'Count Rows
urWs1 = ws.UsedRange.Rows.Count
For i = rowStart To urWs1
ws.Cells(i, colFlag).Value = 0
'Split at spaces
scanArr = Split(ws.Cells(i, col1).Value, " ")
For Each actScan In scanArr
If InStr(1, UCase(ws.Cells(i, col2).Value), UCase(actScan)) <> 0 Then
ws.Cells(i, colFlag).Value = 1
End If
Next actScan
'Opposite direction
scanArr = Split(ws.Cells(i, col2).Value, " ")
For Each actScan In scanArr
If InStr(1, UCase(ws.Cells(i, col1).Value), UCase(actScan)) <> 0 Then
ws.Cells(i, colFlag).Value = 1
End If
Next actScan
scanArr = ""
Next i
End Sub
/ edit:大写比较