验证多个单元格中的多个文本子字符串

时间:2013-11-01 18:29:14

标签: text compare substring cells

第一次海报和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行。此外,已删除相应列中的所有重复项。

非常感谢任何帮助。

1 个答案:

答案 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