第一次海报和VB的新手,但在Excel中相当流利。 我有一个类似于这篇文章中提到的问题(excel: how can I identify rows containing text keywords taken from a list of keywords)但是我需要读取两列中的文本字符串并进行比较。如果我找到2个或更多匹配的字符串,我希望第二列中的值用于第3列中的输出。
所以在A栏中我有: 7-zip测试版 Adobe Acrobat 的activeperl Apache Tomcat 7.9.0 Excel图表实用程序 Microsoft Office Ultimate 2007
在B栏中,我有: 7zip的 Adobe Acrobat Reader Apache Tomcat Excel图表
在C栏中,如果2个或更多文本子字符串匹配,我想要B列的官方软件条目。
问题:我的专栏A仍然包含我想要比较的软件的版本号,并且不需要像我的官方软件列表那样输入我的电子表格(B栏)。我的列B只包含600行,而我的列A包含接近8000行。此外,已删除相应列中的所有重复项。
非常感谢任何帮助。
答案 0 :(得分:0)
尝试遵循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