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

Text 验证多个单元格中的多个文本子字符串,text,compare,substring,cells,Text,Compare,Substring,Cells,第一次发布海报,对VB不熟悉,但对Excel相当流利。 我有一个问题类似于本文()中的问题,但是我需要阅读两列中的文本字符串并比较它们。如果我找到2个或更多匹配字符串,我希望第二列中的值用于第三列中的输出 因此,在A栏中,我有: 7-zip测试版 AdobeAcrobat ActivePerl ApacheTomcat 7.9.0 Excel图表实用程序 微软办公终极版2007 在B栏中,我有: 7拉链 AdobeAcrobatReader 阿帕奇雄猫 Excel图表 在C列中,如果有两个或更多

第一次发布海报,对VB不熟悉,但对Excel相当流利。 我有一个问题类似于本文()中的问题,但是我需要阅读两列中的文本字符串并比较它们。如果我找到2个或更多匹配字符串,我希望第二列中的值用于第三列中的输出

因此,在A栏中,我有: 7-zip测试版 AdobeAcrobat ActivePerl ApacheTomcat 7.9.0 Excel图表实用程序 微软办公终极版2007

在B栏中,我有: 7拉链 AdobeAcrobatReader 阿帕奇雄猫 Excel图表

在C列中,如果有两个或更多的文本子字符串匹配,我需要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