Я создал книгу со следующими критериями:
Лист1:
Column A | Column B | Column C | Column D | Column E
------------------------------------------------------
111024 961207 value1 data a fake 11
111027 961209 value2 data b fake 22
111030 961211 value3 data a fake 33
...
...
...
и лист 2 представляет собой копию листа 1, но с парой строк отсутствует.
Затем я открыл редактор Visual Basic (Alt + F11) и дополнительный модуль, а затем написал следующий макрос:
Sub compare()
Sheets(3).Activate 'Go to sheet 3
Cells.Clear 'and clear all previous results
Range("a1").Select 'set cursor at the top
Sheets(1).Activate 'go to sheet 1
Range("a1").Select 'begin at the top
Dim search_for As String 'temp variable to hold what we need to look for
Dim cnt As Integer 'optional counter to find out how many rows we found
Do While ActiveCell.Value <> "" 'repeat the follwoing loop until it reaches a blank row
search_for = ActiveCell.Offset(0, 1).Value 'get a hold of the value in column B
Sheets(2).Activate 'go to sheet(2)
On Error Resume Next 'incase what we search for is not found, no errors will stop the macro
Range("b:b").Find(search_for).Select 'find the value in column B of sheet 2
If Err <> 0 Then 'If the value was not found, Err will not be zero
On Error GoTo 0 'clearing the error code
Sheets(1).Activate 'go back to sheet 1
r = ActiveCell.Row 'get a hold of current row index
Range(r & ":" & r).Select 'select the whole row
cnt = cnt + 1 'increment the counter
Selection.Copy 'copy current selection
Sheets(3).Activate 'go to sheet 3
ActiveCell.PasteSpecial xlPasteAll 'Past the entire row to sheet 3
ActiveCell.Offset(1, 0).Select 'go down one row to prepare for next row.
End If
Sheets(1).Activate 'return to sheet 1
ActiveCell.Offset(1, 0).Select 'go to the next row
Loop 'repeat
Sheets(3).Activate 'go to sheet 3 to examine findings
MsgBox "I have found " & cnt & " rows that did not exist in sheet 2"
End Sub
Тогда я побежал макрос и нашел, что это работает ..
Надеюсь, этот ответ помог вам достичь того, чего вы хотите.
Если вы хотите, here is the Excel workbook I created Вам нужно будет включить макрос, прежде чем вы сможете увидеть прогон кода. Office автоматически предупредит вас о любом файле Excel, содержащем макросы.
Будет ли 'sheet1.row2 ..... n' =' sheet2.row4 ..... n + 2', если 'sheet1.row1' =' sheet2.row3'? – JRLambert
Вы можете использовать 'MATCH()' для этого. Или покажите свой существующий код. –
ну, самая большая проблема в том, что нет :(.... Например, sheet1.row3245 может быть sheet2.row2576 ... и поэтому – DRastislav