第一次海报,刚接触VB,但在Excel中相当流利。我有一个类似于这篇文章中提出的问题(excel:如何识别包含从关键字列表中获取的文本关键字的行),但是我需要阅读两列中的文本字符串并进行比较。如果我找到 2 个或更多匹配的字符串,我希望第二列中的值用于第三列中的输出。
所以在 A 列中,我有:7 拉链测试版Adobe AcrobatActivePerl阿帕奇雄猫 7.9.0Excel图表实用程序Microsoft 办公室终极版2007
在 B 列中,我有:7邮编Adobe Acrobat Reader阿帕奇雄猫图表
在 C 列中,如果 2 个或更多文本子字符串匹配,我希望 B 列中的官方软件条目。
问题:我的 A 列仍然包含我要比较的软件的版本号,并且不需要像我的官方软件列表那样输入到我的电子表格中(B 列)。我的列 B 只包含 600 行,而我的列 A 包含近 8000 行。此外,已删除相应列中的所有重复项。
任何帮助将不胜感激。
尝试遵循VBA - 非常通用的解决方案 - 它可能会有所帮助,最终适应您的确切需求:
Private Sub Test()
Dim a As Range, b As Range, cel As Range, match As Boolean
Set a = ActiveSheet.Range("A:A") ' can be set eventually upgraded to reflect only non-blank cells
Set b = ActiveSheet.Range("B:B") ' same as above and you can eliminage the Exit Sub statement
For Each cel In b.Cells
If cel.Value = "" Then Exit Sub ' this can be eliminated
match = False
match = InStr(1, UCase(cel.Offset(0, -1).Value), UCase(cel.Value), vbTextCompare) > 0
If match = True Then
cel.Offset(0, 1).Value = cel.Value
Else
cel.Offset(0, 1).Value = cel.Offset(0, -1).Value
End If
Next
End Sub