В настоящее время я получаю ежемесячный дамп из одной из наших баз данных, которая содержит все наши активные подписки на общественный транспорт. Моя задача - загрузить их в SAP, но только те значения, которые отличаются по сравнению с прошлым месяцем. Таким образом, все новые подписки должны быть получены, и все подписки, для которых одно из значений в одном из разных столбцов отличается по сравнению с прошлым месяцем. Если ряд точно такой же, мне он не нужен.
Полученный мной файл содержит 7 столбцов, столбец A
содержит уникальный ключ для каждого сотрудника.
Я хотел бы использовать VBA для сравнения двух файлов Excel, вставив файл из прошлого месяца в Sheet1
и файл этого месяца в Sheet2
. Я хочу найти те строки, которые равны, и удалить их из Sheet2
.
Я уже нашел несколько примеров кодов VBA, делающих это, но, похоже, ничего не работает должным образом. Тот, который я использовал ниже, является последним, который я использовал, что дало мне синтаксическую ошибку в следующей строке кода Do While Not IsEmpty(wsA.Range(keyColA & intRowCounterA).Value)
.
Sub CleanDupes()
Dim wsA As Worksheet
Dim wsB As Worksheet
Dim keyColA As String
Dim keyColB As String
Dim rngA As Range
Dim rngB As Range
Dim intRowCounterA As Integer
Dim intRowCounterB As Integer
Dim strValueA As String
keyColA = "A"
keyColB = "B"
intRowCounterA = 1
intRowCounterB = 1
Set wsA = Worksheets("Sheet1")
Set wsB = Worksheets("Sheet2")
Do While Not IsEmpty(wsA.Range(keyColA & intRowCounterA).Value)
intRowCounterB = 1
Set rngA = wsA.Range(keyColA & intRowCounterA)
strValueA = rngA.Value
Do While Not IsEmpty(wsB.Range(keyColB & intRowCounterB).Value
Set rngB = wsB.Range(keyColB & intRowCounterB)
If strValueA = rngB.Value Then
'Code to delete row goes here, but I'm not sure exactly'
'what it is.'
wsB.Range(Rows(intRowCounterB)).EntireRow.Delete
intRowCounterB = intRowCounterB - 1
End If
intRowCounterB = intRowCounterB + 1
Loop
intRowCounterA = intRowCounterA + 1
Loop
Конец подписки
Любые идеи?
Ник