Liebe/-r wer-weiss-was Experte/-in,
ich exportiere aus dem Programm Cobra Adress Plus die beiden Spalten ID + Telefonnummer aus der Rechnungsdatenbank.
Diese Kunden sollen in der zeitlichen Reihenfolge Ihrer ERSTEN Aufträge noch mal per Telefon kontaktiert werden. In der darauffolgenden Woche werden alle neuen Kunden der Vorwoche kontaktiert + dann regelmäßig auch noch mal alle früheren Kunden - wobei die ID die zeitliche Reihenfolge bestimmt.
Ich benötige also ein Makro, dass nach dem Export (Excel, Access…) alle Dubletten bis auf die erste Telefonnummer entfernt unter Beibehaltung der ID.
Ein solches Makro habe ich für Excel schon, allerdings muss irgendwo in meinem Export ein fehlerhafter Wert sein, denn er bringt mir die Fehlermeldung Laufzeitfehler 13: Typen unverträglich.
Es sind 40.000 Datensätze, so das Excel auch bald an seine Grenzen stoßen wird. Die Fehlermeldung wird mir nicht mehr gebracht, wenn ich die Datensätze etwas über 5.000 lösche. Kopiere ich aber die ersten Datensätze noch mal + füge sie ein, dann läuft das Makro auch problemlos über mehr Datensätze.
Wie kann ich denn die Zeile finden, in der sich der fehlerhafte Wert aus dem Export befindet, damit ich ihn entfernen kann + damit das Makro reibungslos durchläuft?
Ich habe gute Office-Kenntnisse, kenne mich aber mit VBA, SQL usw. nicht aus - kann nur Anweisungen befolgen.
Das momentane Makro habe ich auch über ein Forum bekommen, aber dort kann mir keiner mehr weiterhelfen.
Ich brauche dringend Hilfe - das Problem wird immer brenzliger…
Hier schicke ich mal das Makro (in eckigen Klammern ist die Stelle, die mir beim Debuggen angezeigt wird):
Option Explicit
Sub DoppelteAde()
Dim arr As Variant
Dim Dic As Object
Dim i As Long
Set Dic = CreateObject(„Scripting.Dictionary“)
With Worksheets(„Quelle“) 'ANPASSEN
arr = .Range(„A1:B“ & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
For i = 1 To UBound(arr)
If arr(i, 2) „“ Then
If Not Dic.Exists(arr(i, 2)) Then
Dic(arr(i, 2)) = arr(i, 1)
End If
End If
Next
With Worksheets(„Ziel“) 'ANPASSEN
If Dic.Count > 0 Then
.Range(„A:B“).ClearContents
[.Range(„A1“).Resize(Dic.Count) = _
WorksheetFunction.Transpose(Dic.Items)]
.Range(„B1“).Resize(Dic.Count) = _
WorksheetFunction.Transpose(Dic.Keys)
End If
End With
End Sub
Über baldige Hilfe würde ich mich sehr freuen.
LG von Daniela