VBA如何select旁边的单元格为空时的值,并将这些值与另一个表单中的另一列进行比较并突出显示

我只是在Excel中学习vba。 我在这里遇到了一个问题。

我在这里尝试完成的是

  1. 当Sheet1 ColumnC为空时,在Sheet1 ColumnB中select值。
  2. 采取这些值,并与sheet2 ColumnO进行比较。
  3. 与sheet2的ColumnO值一样,Sheet1中的ColumnB值在sheet1中为绿色。
  4. Sheet1当Sheet1与Column2的ColumnO值不通用时,Column1的值在sheet1中为黄色。
  5. sheet2当sheet1的值不在sheet1中时,ColumnO值在sheet2中为红色。

这里是示例文件

https://a.uguu.se/tkGV68TzIGwR_testtt111.xlsx

这是我到目前为止。 当columnC为空时,我可以selectColumnB中的值,并将它们复制到另一个列中。

Sub compareWR() Dim emptyI As Long Dim emptyJ As Long lastrow = ws1.Cells(Rows.Count, "B").End(xlUp).Row emptyJ = 2 For emptyI = 2 To lastrow If Cells(emptyI, "C").Value = "" Then Cells(emptyJ, "AA").Value = Cells(emptyI, "B").Value emptyJ = emptyJ + 1 End If Next emptyI End Sub 

看起来像一些条件格式规则应该照顾你所需要的一切。 这里他们在VBA中。

 Option Explicit Sub CFRs() Dim addr1 As String, addr2 As String With Worksheets("sheet1") With .Range(.Cells(1, "B"), .Cells(.Rows.Count, "B").End(xlUp)) addr1 = .Cells(1).Address(False, True) addr2 = .Cells(1).Offset(0, 1).Address(False, True) .FormatConditions.Delete With .FormatConditions.Add(Type:=xlExpression, _ Formula1:="=AND(" & addr2 & "=TEXT(,), ISNUMBER(MATCH(" & addr1 & ", Sheet2!$O:$O, 0)))") .Interior.ColorIndex = 10 End With With .FormatConditions.Add(Type:=xlExpression, _ Formula1:="=NOT(LEN(" & addr2 & "))") .Interior.ColorIndex = 6 End With End With End With With Worksheets("sheet2") With .Range(.Cells(1, "O"), .Cells(.Rows.Count, "O").End(xlUp)) addr1 = .Cells(1).Address(False, True) .FormatConditions.Delete With .FormatConditions.Add(Type:=xlExpression, _ Formula1:="=ISNA(MATCH(" & addr1 & ", Sheet1!$B:$B, 0))") .Interior.ColorIndex = 3 End With End With End With End Sub