Я пытаюсь создать модуль VBA в Excel, который сравнивает два столбца номеров свойств (мастер: столбец A, лист1, место назначения: столбец A, лист2) и возвращает все несоответствующие значения из мастера (т.е. присутствует вмастер, но не в месте назначения) в конец таблицы назначения (т. е. первая пустая строка в конце таблицы назначения).Пока что у меня есть кое-что, что работает довольно хорошо, но я обнаружил несколько ошибок при тестировании.
Код:
Sub MergeData()
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim recRow As Long
Dim lastRow As Long
Dim fCell As Range
Dim i As Long
'Define our worksheets
Set wsSource = Worksheets("Sheet1")
Set wsDest = Worksheets("Sheet2")
Application.ScreenUpdating = False
recRow = 1
With wsSource
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow
'See if item is in Master sheet
Set fCell = wsDest.Range("A:A").Find(what:=.Cells(i, "A").Value, lookat:=xlWhole, MatchCase:=False)
If Not fCell Is Nothing Then
'Record is already in master sheet
recRow = fCell.Row
Else
'Need to move this to master sheet after last found record
.Cells(i, "A").Cells.Copy
wsDest.Cells(lastRow, "A").Cells.Insert
recRow = recRow
End If
Next i
Одна проблема, которую я заметил, была, когда в таблицах назначения есть пробелыполучить немного шаткий (пример):
Перед запуском модуля:
M|D
1|1
2|
3|3
После:
M|D
1|1
2|
3|2
|3
Обратите внимание, что пустая ячейка остается и порядок возвращенныхрезультаты изменены.Мой желаемый результат:
M|D
1|1
2|
3|3
|2
Желаемый результат сохраняет порядок, а также пробел (которого не должно быть в основных данных, но я готовлюсь к наихудшим сценариям, поскольку я неDBA для мастер-таблицы).Неполучение желаемого результата в этом случае проблематично, поскольку целевой лист должен быть «статичным» (т.е. сохранять порядок строк).Рядом со столбцом A на листе назначения будут столбцы, в которые несколько пользователей будут вводить комментарии, и если таблица назначения смещается (за исключением добавления строк в конце) или комментарии переупорядочения будут отделяться от своего исходного номера соответствующего свойства.Появляется хаос и т. Д.
Я очень зелен с VBA, поэтому я не могу понять ошибки моих путей (может быть больше ошибок, но мне еще предстоит обнаружить что-то еще при тестированиипоэтому, указывая на них, будет принята с благодарностью).Кроме того, если эта информация уместна, главный список является таблицей, связанной с SQL, которая будет периодически обновляться (поэтому процесс будет обновлять мастер (динамический, т. Е. Порядок строк может изменяться и изменяется), запускать модуль для возврата новых номеров свойств ввнизу листа назначения, пользователи добавляют комментарии и фильтруют лист назначения в Excel (статический, то есть порядок строк не изменяется, за исключением случаев, когда все столбцы одновременно фильтруются или сортируются). Спасибо всем заранее. Это сообщество помогло мне прорваться через очень многоконтрольно-пропускные пункты, надеюсь, это будет еще одна история успеха.