0

第一次发帖,刚接触 VB,但对 Excel 相当流利。我有一个类似于这篇文章中提出的问题(excel:如何识别包含从关键字列表中提取的文本关键字的行)但是我需要读取两列中的文本字符串并进行比较。如果我找到 2 个或更多匹配的字符串,我希望我的第二列中的值用于我的第三列中的输出。

所以在 AI 栏目中有: 7-zip beta Adob​​e Acrobat ActivePerl Apache Tomcat 7.9.0 Excel Chart Utilities Microsoft Office Ultimate 2007

在BI栏有:7zip Adob​​e Acrobat Reader Apache Tomcat Excel Chart

如果 2 个或更多文本子字符串匹配,则在 CI 列中需要 B 列的官方软件条目。

问题:我的 A 列仍然包含我要比较的软件的版本号,并且没有必要像我的官方软件列表一样(B 列)以相同的方式输入我的电子表格。我的 B 列仅包含 600 行,而我的 A 列包含接近 8000 行。此外,已删除相应列中的所有重复项。

任何帮助将不胜感激。

4

1 回答 1

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
于 2013-11-01T19:00:23.733 回答