Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1572to1576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ablgeich Referenztabelle

Ablgeich Referenztabelle
10.08.2017 07:50:13
Excel-Kalle
Hallo Excel-Cracks,
ich habe ein Problem beim Abgleich einer Referenztabelle.
Ich habe eine Hauptarbeitsmappe mit einer Namensaufzählung. In einem zweiten Blatt habe ich eine Referenztabelle ebenfalls mit Namen. Wenn in der Hauptarbeitsmappe nun ein Name aus der Referenztabelle auftaucht, soll ein Buchstabenkürzel in einer Zeile vor den Namen in der Hauptarbeitsmappe ausgegeben werden.
Bei einem Treffer per Makro die Zeile markieren bekomme ich hin, mir fehlt jedoch der Schritt zur Ausgabe eines Buchstabenkürzels vor den Namen im Hauptarbeitsblatt.
P.S. ist es hierbei auch möglich nur einen bestimmten Bereich zu markieren?
Ich freu mich auf eure Ideen!
----------------------------------------------------------
Sub Schaltfläche7_Klicken()
Dim rFinde As Range, rSuche As Range
Dim strFirst As String
Dim lngReihe As Long, lngLetzte As Long
Dim I As Integer
With Sheets("Referenztabelle")
lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
End With
Set rFinde = Sheets("Hauptarbeitsblatt").Range("D8:D135")
With Sheets("Referenztabelle")
For I = 2 To lngLetzte
Set rSuche = rFinde.Find(what:=.Cells(I, 1), LookAt:=xlWhole)
If Not rSuche Is Nothing Then
strFirst = rSuche.Address
Do
lngReihe = rSuche.Row
Sheets("Hauptarbeitsblatt").Range("D" & lngReihe).EntireRow.Interior.ColorIndex = 45
Set rSuche = rFinde.FindNext(rSuche)
Loop While Not rSuche Is Nothing And rSuche.Address strFirst
End If
Next I
End With

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ablgeich Referenztabelle
10.08.2017 10:46:18
Robert
Hallo,
wenn ich das richtig sehe, stehen die Namen im Hauptarbeitsblatt in der Spalte D. Wenn Du nachstehenden Code einfügst (statt der Code-Zeile mit der Markierung der kompletten Zeile) wird dem Namen ein "X" vorangestellt und in der entsprechenden Zeile der Bereich von Spalte a bis Spalte D markiert.
Sheets("Hauptarbeitsblatt").Range("A" & lngReihe & "D" & lngReihe).Interior.ColorIndex = 45
Sheets("Hauptarbeitsblatt").Range("D" & lngReihe) = "X" & Sheets("Hauptarbeitsblatt").Range("D" & lngReihe)

Gruß
Robert
Anzeige
AW: Ablgeich Referenztabelle
10.08.2017 10:51:56
Robert
Entschuldigung, ich habe einen Doppelpunkt vergessen. Die erste von mir gepostete Zeile muss natürlich wie folgt lauten:
Sheets("Hauptarbeitsblatt").Range("A" & lngReihe & ":D" & lngReihe).Interior.ColorIndex = 45

Gruß
Robert
AW: Ablgeich Referenztabelle
11.08.2017 01:05:32
Excel-Kalle
Uwe, vielen Dank für deine schnelle Antwort!
Die erste Zeile funktioniert schon mal hervorragend. Bei der zweiten kommt in der Zeile:
Zeile:
Loop While Not rSuche Is Nothing And rSuche.Address strFirst
Fehlermeldung:
"Laufzeitfehler '91'" Objektvariable oder Wih-Blockvariable nicht festgelegt
Nachtschichten machen mich fertig....
Am liebsten würde ich von einer Referenztabelle mit jeweils zwei Datensätzen die Namen abfragen und je nach Zuweisung die Namen im Hauptarbeitsblatt farblich markieren oder wenn vorhanden das Buchstabenkürzel in dem Hautarbeitsblatt vorsetzen.
Vielleicht kann jemand meine Wissenlücken erhellen.
Grüße Kalle
Anzeige
AW: Ablgeich Referenztabelle
11.08.2017 10:21:26
Robert
Hallo,
der Fehler tritt anscheinend immer dann auf, wenn in dem zu durchsuchendem Bereich die gefundenen Werte geändert und dann weiter gesucht wird. Erklären kann ich mir das im Moment nicht. Als Workarround könnte man die Änderung des Wertes nach dem Suchen und farbigen markieren der Fundzeilen wie folgt nachholen:
Sub Schaltfläche7_Klicken()
Dim rFinde As Range, rSuche As Range
Dim strFirst As String
Dim lngReihe As Long, lngLetzte As Long
Dim I As Integer
With Sheets("Referenztabelle")
lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
End With
Set rFinde = Sheets("Hauptarbeitsblatt").Range("D8:D135")
With Sheets("Referenztabelle")
For I = 2 To lngLetzte
Set rSuche = rFinde.Find(What:=.Cells(I, 1), LookAt:=xlWhole)
If Not rSuche Is Nothing Then
strFirst = rSuche.Address
Do
lngReihe = rSuche.Row
Sheets("Hauptarbeitsblatt").Range("A" & lngReihe & ":D" & lngReihe).Interior.ColorIndex =  _
45
Set rSuche = rFinde.FindNext(rSuche)
Loop While Not rSuche Is Nothing And rSuche.Address  strFirst
Sheets("Hauptarbeitsblatt").Range("D8:D135").Replace What:=.Cells(I, 1), Replacement:="X" &  _
.Cells(I, 1), LookAt:=xlWhole ', SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End If
Next I
End With
End Sub

Gruß
Robert
Anzeige
AW: Ablgeich Referenztabelle
12.08.2017 00:55:25
Excel-Kalle
Vielen Dank Robert, deine Lösung ist super und funktioniert!
Es würde mir aber schon reichen, wenn er das "X" im Hauptarbeitsblatt eine Zelle vor dem gefundenen Wert ausgibt. Da stell ich mich irgendwie noch an...
Grüße Kalle
AW: Ablgeich Referenztabelle
12.08.2017 13:55:20
Robert
Hallo,
das wäre dann in der Spalte C. Dafür musst Du nur nach der Zeile mit der Markierung der gefundenen Namen nachstehende Zeile einfügen
Sheets("Hauptarbeitsblatt").Range("C" & lngReihe) = "X"

Alternativ kannst Du das aber auch über eine Formel in den Zellen der Spalte C des Hauptarbeitsblattes machen. Wenn Du in die Zelle C8 folgende Formel eingibst und dann runter kopierst, erhalten alle Zeilen, in denen der Name aus der Spalte D auch in der Spalte A der Referenztabelle vorkommen in der Spalte C ein "X".
=WENN(ZÄHLENWENN(Referenztabelle!A:A;Hauptarbeitsblatt!D8);"X";"")

Dann könnte man über die bedingte Formatierung die entsprechenden Zeilen auch noch mit einem farbigen Hintergrund belegen. Auf diese Weise braucht man überhaupt kein VBA.
Gruß
Robert
Anzeige
AW: Ablgeich Referenztabelle
13.08.2017 17:06:04
Excel-Kalle
Vielen Dank Robert!
Die Wenn/Dann Funktion ist auch ne Gute Idee, ich lass aber per Makro noch mehrere Abfragen laufen und arbeite deshalb lieber per Makro.
Die Zweite Variante von dir funktioniert bereits hervorragend.
Mit den Schleifen steh ich aber nach wie vor auf Kriegsfuß...
Ich versuch die Schleife so umzubauen, dass er in der Referenztabelle erst Spalte A abprüft. Wenn der Name dort auftaucht, dann soll er die Zeile mit dem Namen im Hauptarbeitsblatt bunt machen.
Wenn der Name in Spalte D des Referenzblattes findet, dann soll er eine Zelle vor dem Namen im Hauptarbeitsblatt ein X ausgeben.
Findet er den Namen in Spalte G des Referenzblattes, dann soll er eine Zelle vor dem Namen im Hauptarbeitsblatt ein Y ausgeben.
usw.
Kann man die Schleife so steuern?
Grüße Excel-Kalle
Anzeige
AW: Ablgeich Referenztabelle
14.08.2017 09:50:06
Robert
Hallo Kalle,
ich habe das Makro mal etwas umgebaut. Das Makro durchläuft die Namen im Bereich D8:D135 des Hauptarbeitsblattes und sucht diese Namen im Bereich der Spalten A bis G der Referenztabelle. Wenn der Name dort gefunden wurde, wird die Zeile im Hauptarbeitsblatt (Spalte A bis D) markiert. Falls der gefundene Name in Spalte D der Referenztabelle steht wird ein X in die Zelle vor dem Namen im Hauptarbeitsblatt eingetragen, sollte der Name in Spalte G der Referenztabelle gefunden werden wird ein Y eingetragen.
Sub Schaltfläche7_Klicken()
Dim rFinde As Range, rSuche As Range
Dim strFirst As String
Dim cl As Range
With Sheets("Hauptarbeitsblatt")
Set rFinde = Sheets("Referenztabelle").Range("A:G")
For Each cl In .Range("D8:D135").Cells
If cl  "" Then
Set rSuche = rFinde.Find(What:=cl, LookAt:=xlWhole)
If Not rSuche Is Nothing Then
strFirst = rSuche.Address
Do
Select Case rSuche.Column
Case 1  'Name in Spalte A der Referenztabelle gefunden
.Range("A" & cl.Row & ":D" & cl.Row).Interior.ColorIndex = 45
Case 4  'Name in Spalte D der Referenztabelle gefunden
cl.Offset(0, -1) = "X"
Case 7  'Name in Spalte G der Referenztabelle gefunden
cl.Offset(0, -1) = "Y"
End Select
Set rSuche = rFinde.FindNext(rSuche)
Loop While Not rSuche Is Nothing And rSuche.Address  strFirst
End If
End If
Next
End With
End Sub

Gruß
Robert
Anzeige
AW: Ablgeich Referenztabelle
15.08.2017 00:14:17
Excel-Kalle
Vielen Dank Robert,
es funktioniert alles top und hat mich ein riesen Stück vorwärts gebracht!
Grüße Kalle

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige