У меня есть этот макрос, который позволяет перекрестно ссылаться на «Sheet2» в «Sheet1», где «Sheet1» - это лист, который будет содержать мои основные данные. Идея здесь состоит в том, чтобы сравнить лист 2 с основными данными и посмотреть, совпадает ли он. Проблема с этим макросом заключается в том, что она сравнивается только в пределах ограниченного диапазона. Мне было интересно, как сделать это более динамичным или гибким, если я добавлю еще один столбец, который также будет использоваться для перекрестной ссылки.Крест Ссылка на лист в основной лист данных
Вот пример моих листов.
Example:
Sheet1
Name ID Class Name Taken?
John Riley 0001 Painting Yes
Bob Johnson 0101 Painting No
Matthew Ward 1111 Math Yes
Sheet 2:
Name ID Class Name Taken?
Matthew Ward 1111 Math Yes
Bob Johnson 0101 Painting No
Warren Renner 2222 Drama No
John Riley 0001 Painting Yes
Что нужно изменить в макросе, чтобы сравнить его, следует ли добавлять дополнительные столбцы в мои листы?
Example:
Sheet1
Name ID Class Name Taken? Date Taken
John Riley 0001 Painting Yes 8/25/13
Bob Johnson 0101 Painting No
Matthew Ward 1111 Math Yes 9/20/10
Sheet 2:
Name ID Class Name Taken? Date Taken
Matthew Ward 1111 Math Yes 9/20/10
Bob Johnson 0101 Painting No -
Warren Renner 2222 Drama No -
John Riley 0001 Painting Yes 8/25/13
Код:
Sub Compare_Data()
Dim rngData2 As Range
Dim rngData1 As Range
Dim cell2 As Range
Dim cell1 As Range
Dim rLastCell As Range
Set rngData2 = Worksheets("Sheet2").Range("B3", Worksheets("Sheet2").Range("B65536").End(xlUp))
Set rngData1 = Worksheets("Sheet1").Range("B3", Worksheets("Sheet1").Range("B65536").End(xlUp))
' Check customers in "Sheet2" to "Sheet1"
For Each cell2 In rngData2
For Each cell1 In rngData1
With cell1
If .Offset(0, 0) = cell2.Offset(0, 0) And _
.Offset(0, 1) = cell2.Offset(0, 1) And _
.Offset(0, 2) = cell2.Offset(0, 2) And _
.Offset(0, 3) = cell2.Offset(0, 3) Then
.Offset(0, -1).Range("A1:F1").Interior.ColorIndex = 3
cell2.Offset(0, 4) = .Offset(0, 4)
End If
End With
Next cell1
Next cell2
End Sub
Ваш вопрос еще не совсем ясен. Кроме того, ваш макрос, по меньшей мере, сумасшедший. Для прохождения через ячейки 65533 * 65533 требуется несколько часов. – ApplePie
см. Http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba для лучшего поиска последней строки/столбца – Jzz
Я все еще работаю над тем, как получить последнюю строку и последний столбец со значениями для этих макросов. Я больше беспокоюсь о том, как сделать сравнение листов более динамичным. Этот макрос просматривает первые 4 столбца только «Листы», но как мне его сравнить со всеми столбцами, если я хочу добавить еще? «Лист1» и «Лист2» имеет одинаковое количество столбцов и также в том же формате. Предположим, я добавляю новый столбец «Year Level», как мне включить этот макрос в этот столбец как часть его ссылки, @ AlexandreP.Levasseur? – user3675433