Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 比较列,如果不匹配,则给单元格上色_Excel_Vba - Fatal编程技术网

Excel 比较列,如果不匹配,则给单元格上色

Excel 比较列,如果不匹配,则给单元格上色,excel,vba,Excel,Vba,我有两个专栏,我正在与另外两个专栏进行比较。第一列“B”正在检查列“XFD”,如果值不匹配,单元格底色将更改为红色。同时,我检查列“C”是否与列“XFC”匹配 如果值不匹配,我想给列“C”上色,但如果值匹配,我的编码会改变颜色。请告知编码 Column B Column C Column 'XFC Column 'XFD' Q1 Jan-15 Jan-15 Q1 Q2 Oct-15 Feb-15

我有两个专栏,我正在与另外两个专栏进行比较。第一列“B”正在检查列“XFD”,如果值不匹配,单元格底色将更改为红色。同时,我检查列“C”是否与列“XFC”匹配

如果值不匹配,我想给列“C”上色,但如果值匹配,我的编码会改变颜色。请告知编码

Column B  Column C     Column 'XFC    Column 'XFD' 
Q1          Jan-15      Jan-15           Q1
Q2          Oct-15      Feb-15           Q1
Q3          Jul-15      Mar-15           Q1
Q4          Dec-15      Apr-15           Q2
                        May-15           Q2
                        Jun-15           Q2
                        Jul-15           Q3
                        Aug-15           Q3
                        Sep-15           Q3
                        Oct-15           Q4
                        Nov-15           Q4
                        Dec-15           Q4
编码

Application.ScreenUpdating = False
  Dim stNow As Date
  Dim lastA As Long
  lastA = Range("B" & Rows.Count).End(xlUp).Row

  Dim lastB As Long
  lastB = Range("XFD" & Rows.Count).End(xlUp).Row
  Dim match As Boolean
  Dim i As Long, j As Long
  Dim r1 As Range, r2 As Range
  For i = 2 To lastA
   Set r1 = Range("B" & i)
   match = False
   For j = 2 To lastB
      Set r2 = Range("XFD" & j)
      If r1 = r2 Then
         match = True
         If Range("B" & i).Offset(0, 1) = Range("XFD" & j).Offset(0, -1) Then

            Range("B" & i).Offset(0, 1).Interior.Color = RGB(255, 0, 0)

         End If
      End If
   Next j
Next i

Application.ScreenUpdating = True
试试这个

Application.ScreenUpdating = False
Dim stNow As Date
Dim lastA As Long
Dim lastB As Long
Dim i As Long
Dim j As Long
Dim r1 As Range
Dim r2 As Range
Dim i_store As Integer

lastA = Range("B" & Rows.Count).End(xlUp).Row
lastB = Range("XFD" & Rows.Count).End(xlUp).Row

For i = 2 To lastA
   Set r1 = Range("B" & i)
   i_store = 0
   For j = 2 To lastB
      Set r2 = Range("XFD" & j)
      If r1.Value = r2.Value Then
         If Range("B" & i).Offset(0, 1) = Range("XFD" & j).Offset(0, -1)   Then
            i_store = 0
            Exit For
         Else
            If i_store = 0 Then
               i_store = i
            End If
         End If
       End If
   Next j
   If i_store > 0 Then
      Range("B" & i_store).Offset(0, 1).Interior.Color = RGB(255, 0, 0)
   End If
 Next i
 Application.ScreenUpdating = True

你的代码有问题吗?您是否有一个错误弹出,或者代码只是没有做您期望它做的事情?如果是这样,它在做什么,而不是你想要它做什么?同时,我想指出,您应该更明确地编写代码:告诉VBA要比较什么,不要让VBA假设您要比较什么。因此,如果r1=r2,我会将
更改为
如果r1.Value2=r2.Value2,我会将
更改为
如果r1.Value2=r2.Value2,我会将
更改为
(与行
相同,如果范围为(“B”&I”)。只需再帮一个忙。我是否可以将列“B”与列“XDF”进行比较,并用红色突出显示不匹配的单元格