В момента получавам месечен дъмп от една от нашите бази данни, която съдържа всичките ни активни абонаменти за обществен транспорт. Моя задача е да ги кача в 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
End Sub
Някакви идеи?
Ник