2013-06-28 2 views
0

Я новичок в VBA и хотел бы помочь создать макрос в Excel.Excel VBA - сравнить три столбца

У меня есть файл с двумя листами, который я хочу сравнить. Мне нужно сравнить лист 1 столбец G (серийный номер) с листом 2 столбец C (серийный номер), а если столбец листа 2 K = D (статус размещения), выделите цвет 1 в столбце 1.

Я нашел этот код в другом потоке, однако не могу получить «и» часть для работы.

**Sub Compare2() 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Set ws1 = Worksheets("Sheet1") 
Set ws2 = Worksheets("Sheet 2") 
For Each i In ws2.Range("G2:G30") 
    For Each C In ws1.Range("C2:C50") 
    For Each L In ws2.Range("K2:K50") 
     If i.Cells.Value = C.Cells.Value And L.Cells.Value = "D" Then 
           i.Cells.Interior.ColorIndex = 3 
     End If 

    Next 
    Next 
Next 
End Sub** 

ответ

0

В другом стиле .. попробовать это ..

Sub Compare2() 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim x,y as Integer 

Set ws1 = Worksheets("Sheet1") 
Set ws2 = Worksheets("Sheet2") 

For x = 2 to 30 
    For y = 2 to 50 
     If ws1.cells(x,7) = ws2.cells(y,3) and ws2.cells(y,11) = "D" Then  
      ws1.Cells(x,7).Interior.ColorIndex = 3 
     End if 
    Next 
Next 
End Sub 
+0

спасибо за вашу помощь, не совсем работает. ничего не подсвечивается – user2531831

+0

@ user2531831 .. Я уже тестировал его в Excel 2007 .. – matzone

+0

не работает в 2010 году. – user2531831

0

пытаются гнездиться другое заявление, если в него

**Sub Compare2() 
Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Set ws1 = Worksheets("Sheet1") 
Set ws2 = Worksheets("Sheet 2") 
For Each i In ws2.Range("G2:G30") 
    For Each C In ws1.Range("C2:C50") 
     For Each L In ws2.Range("K2:K50") 
      If i.Cells.Value = C.Cells.Value Then 
       If L.Cells.Value = "D" Then 
           i.Cells.Interior.ColorIndex = 3 
       End If 
      End if 
     Next 
    Next 
Next 
End Sub**` 
+0

спасибо за вашу помощь, но его совсем нет. он вообще ничего не выделяет, даже если в столбце K есть D – user2531831