【发布时间】:2017-07-22 08:16:51
【问题描述】:
我正在尝试比较两个字符串,但是,函数返回错误的匹配项。我厌倦了使用三种不同的方法并将每种方法的结果发布在不同的列中进行测试。我厌倦了使用“string1”=“string2”、instr() 和 strcomp() 进行比较。
当使用相同的两个字符串时,它们甚至不会为每个方法返回相同的结果;有时一种类型的比较是正确的,而另一些则可能不是。
对于误报,Instr() 返回一个位置,但子字符串不在目标字符串中,Strcomp() 返回 0 但单词不一样,"string1" = string2" 为真但字符串不同。
Worksheets("hemo").Cells(f, 1) = Trim(Worksheets(Stabv).Cells(Count, 1))
Worksheets("hemo").Cells(f, 2) = Len(Trim(Worksheets(Stabv).Cells(Count, 1)))
Worksheets("hemo").Cells(f, 3) = Trim(LitBaseArray(y))
Worksheets("hemo").Cells(f, 4) = Len(Trim(LitBaseArray(y)))
scrapeString1 = Trim(Worksheets(Stabv).Cells(Count, 1))
scrapeString2 = Trim(LitBaseArray(y))
If scrapeString1 = scrapeString2 Then
Worksheets("hemo").Cells(f, 5) = "true"
End If
If StrComp(Trim(scrapeString1), Trim(scrapeString2), vbTextCompare) = 0 Then
Worksheets("hemo").Cells(f, 6) = "true " & StrComp(Trim(scrapeString1), Trim(scrapeString2), vbTextCompare)
End If
If InStr(1, Trim(scrapeString1), Trim(scrapeString2), vbTextCompare) > 0 Then
Worksheets("hemo").Cells(f, 7) = "true " & InStr(1, Trim(scrapeString1), Trim(scrapeString2), vbTextCompare)
End If
f = f + 1
【问题讨论】:
-
你试过调试你的代码吗?调试时检查
scrapeString1和scrapeString2的值。 -
不是答案,但您不必在
StrComp和InStr中再次使用TRIM,因为您已经使用Trim将值分配给scrapeString1和scrapeString1。 -
是的,我只是在尝试不同的东西。我什至厌倦了将单元格的内容放在一个字符串中。
-
您是否调试并检查过
scrapeString1和scrapeString2的值? -
我做到了。我需要整理一下价值观。有超过 10k 的字符串比较。这就是我使用 Excel 工作表而不是调试窗口的原因。排序更容易。
标签: excel vba string-comparison