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
Vba 比较多列中的差异_Vba_Excel - Fatal编程技术网

Vba 比较多列中的差异

Vba 比较多列中的差异,vba,excel,Vba,Excel,列A和G是OrderID,每个列都有自己的金额,列C和H 如果OrderID列匹配,我需要比较C列和H列** 如果它们不同,则高亮显示单元格。我想使用VBA来实现这一点,因为它是我想添加到的更大宏的一部分 您可以尝试使用下面的代码,它将在所有行中循环并比较A列和G列:G如果相等,则比较C&H;如果不相等,则更改颜色索引 代码: 到目前为止你试过什么?如果columna和columng相等,那么你的问题中有一些线索,那么c和hDo之间有什么区别?你想用VBA来解决这个问题,因为它是一个更大项目的一

列A和G是OrderID,每个列都有自己的金额,列C和H

如果OrderID列匹配,我需要比较C列和H列**

如果它们不同,则高亮显示单元格。我想使用VBA来实现这一点,因为它是我想添加到的更大宏的一部分


您可以尝试使用下面的代码,它将在所有行中循环并比较A列和G列:G如果相等,则比较C&H;如果不相等,则更改颜色索引

代码:


到目前为止你试过什么?如果columna和columng相等,那么你的问题中有一些线索,那么c和hDo之间有什么区别?你想用VBA来解决这个问题,因为它是一个更大项目的一部分,或者因为作业中说你必须这么做。。。因为如果这是一个大项目的一部分,您就不应该使用VBA来实现。您应该使用条件格式。您只需要制定一个格式规则。请稍候,您是要在整列中查找匹配项,还是仅在同一行中查找顺序?另外,您说高亮显示单元格,但在您的示例中有两个单元格高亮显示。请提供一个以上的示例数据,以及示例结果的示例,以及一些关于这是什么的背景信息,也许还有一些关于这个更大的项目的背景信息。我有一些代码可以比较两列并突出显示差异,但我不知道如何与ID中的a列和G列进行比较。我在比较C列和H列,它们的ID是相同的。我所附的例子说明了我正在努力实现的目标。单元格将高亮显示,因为它们不同,但具有相同的orderID/ORDERNUM。所以,如果A列和G列匹配,C列和H列也应该匹配。如果没有,我想突出显示它们。也可以写成ws.RangeA&j.Value=ws.RangeG&j.Value和ws.RangeC&j.Value ws.RangeH&j.Value,谢谢你的帮助。我将它添加到我的电子表格中,并且运行时没有错误,但是当存在差异时,单元格不会改变颜色。我已经测试过,它对我来说运行良好,只需在If循环中阻塞语句并逐步调试,这将使您了解它的工作原理。我想我看到了问题,但我不确定如何更正它。如果ID在同一行上,代码将突出显示G列和H列中的差异,这很好。问题是A列和G列中的ID并不总是在同一行中。在我所附的图片中,ORDERNUM 121698可能会出现在G列的不同行号中。如果我的理解正确,您应该重新定义您的问题,请尝试上面更新的代码。
Dim Wb As Workbook, ws As Worksheet, lrow As Long, j As Long, m As Long, lrow2 As Long, Search As Variant, Search2 As Variant
Set Wb = ThisWorkbook
Set ws = Wb.Sheets("Sheet1")
lrow = ws.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row
lrow2 = ws.Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).Row
    For j = 3 To lrow
        Search = (ws.Cells(j, 1).Value)
        Search2 = (ws.Cells(j, 3).Value)
        For m = 3 To lrow2
        If ws.Cells(m, 7) = Search And ws.Cells(m, 8) <> Search2  Then


            ws.Range("C" & j).Interior.ColorIndex = 3
            ws.Range("H" & m).Interior.ColorIndex = 3

        End If
    Next
    Next