Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA将一个单元格中的逐字与另一个单元格中的逐字进行匹配_Excel_Vba - Fatal编程技术网

Excel VBA将一个单元格中的逐字与另一个单元格中的逐字进行匹配

Excel VBA将一个单元格中的逐字与另一个单元格中的逐字进行匹配,excel,vba,Excel,Vba,我试图将A列中的每个单词与B列中的每个单词进行匹配。换句话说,我想检查B列中是否存在A列中的单词。如果是,则在B列中突出显示相同的单词 我已经尝试了下面的代码,但这看起来是完全匹配的 Dim xStr作为字符串 Dim i,Y作为变量 暗M,j等于长 计数=范围(“A4”,范围(“A4”).End(xlDown)).Rows.count 对于i=4到计数+3 xStr=范围(“B”和i).值 带范围(“G”和“i”) .Font.ColorIndex=1 对于j=1到Len(.Text) 如果

我试图将A列中的每个单词与B列中的每个单词进行匹配。换句话说,我想检查B列中是否存在A列中的单词。如果是,则在B列中突出显示相同的单词

我已经尝试了下面的代码,但这看起来是完全匹配的


Dim xStr作为字符串
Dim i,Y作为变量
暗M,j等于长

计数=范围(“A4”,范围(“A4”).End(xlDown)).Rows.count 对于i=4到计数+3 xStr=范围(“B”和i).值 带范围(“G”和“i”) .Font.ColorIndex=1 对于j=1到Len(.Text) 如果Mid(.Text,j,Len(xStr))=xStr,则.Characters(j,Len(M)).Font.ColorIndex=3 下一个j 以 接下来我
例如:

A列#创可贴防洗
B柱约翰逊和约翰逊耐洗防腐剂胶带(JAR)


A列中的3个单词应在B列中突出显示。

我假设您希望比较B4和G4中的单词,然后是B5和G5中的单词,依此类推-每对单词分别进行比较

如果
拆分
以空格作为分隔符的单元格内容,则其单词位于数组中,可以比较每个数组元素

Private Sub CompareWords()
    Dim xStr() As String
    Dim i As Long
    Dim x As Long, y As Long

    With ActiveSheet
        For i = 4 To .Cells(.Rows.Count, "B").End(xlUp).Row
            xStr = Split(.Cells(i, "B").Value, " ")
            With .Cells(i, "G")
                .Font.ColorIndex = 1
                For x = LBound(xStr()) To UBound(xStr())
                    For y = 1 To Len(.Text)
                        If Mid(.Text, y, Len(xStr(x))) = xStr(x) Then
                            .Characters(y, Len(xStr(x))).Font.ColorIndex = 3
                        End If
                    Next y
                Next x
            End With
        Next i
    End With
End Sub

我假设你想比较B4和G4中的单词,然后B5和G5中的单词,以此类推——每一对都是独立的

如果
拆分
以空格作为分隔符的单元格内容,则其单词位于数组中,可以比较每个数组元素

Private Sub CompareWords()
    Dim xStr() As String
    Dim i As Long
    Dim x As Long, y As Long

    With ActiveSheet
        For i = 4 To .Cells(.Rows.Count, "B").End(xlUp).Row
            xStr = Split(.Cells(i, "B").Value, " ")
            With .Cells(i, "G")
                .Font.ColorIndex = 1
                For x = LBound(xStr()) To UBound(xStr())
                    For y = 1 To Len(.Text)
                        If Mid(.Text, y, Len(xStr(x))) = xStr(x) Then
                            .Characters(y, Len(xStr(x))).Font.ColorIndex = 3
                        End If
                    Next y
                Next x
            End With
        Next i
    End With
End Sub

您可以在拆分A列中的文本并逐字查找它们之后使用。因此,基本上拆分单元格值并将其保存在数组中。现在循环遍历数组的每个元素,并使用Find函数在B列中定位该单词。您的示例中的3个单词“BAND AID WASHPROOF”是在一个单元格内(例如B4)还是在B列的3个单元格内(例如B4、B5、B6)?换言之:您想比较整列还是按单元格对比较单元格对?您可以在拆分A列中的文本并逐字查找后使用。因此基本上拆分单元格值并将其保存在数组中。现在循环遍历数组的每个元素,并使用Find函数在B列中定位该单词。您的示例中的3个单词“BAND AID WASHPROOF”是在一个单元格内(例如B4)还是在B列的3个单元格内(例如B4、B5、B6)?换句话说:您想比较整列还是按单元格对比较单元格对?您好,谢谢您的回复。。这种方法可以起作用。但它是区分大小写的。大写字母和小写字母应视为相同。我可以做些什么来包括这些吗?这也可以通过在顶部添加“选项比较文本”来解决。再次非常感谢您的帮助。。。。。。或者通过
如果StrComp(a,b,vbTextCompare)=0
,请参见您好,谢谢您的回复。。这种方法可以起作用。但它是区分大小写的。大写字母和小写字母应视为相同。我可以做些什么来包括这些吗?这也可以通过在顶部添加“选项比较文本”来解决。再次非常感谢您的帮助。。。。。。或者,如果StrComp(a、b、vbTextCompare)=0,请参见