Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1560to1564
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
Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 13:27:15
2
Hallo zusammen,
habe folgendes Problem, ich habe 2 Tabellen, die wie folgt aussehen
Tabelle Daten:
Name1 Kl1
Name2 Kl2
Name3 Kl3
usw.
Tabelle Temp
Name1
Name2
Name3
usw.
In der Tabelle Daten stehen unter A alle TN-Namen und in B die zugehörigen Klassen.
In der Tabelle Temp stehen nur die Namen , das wäre der Vertgleichswert beider Tabellen.
Das Makro soll nun hergehen und Tabelle Daten und Temp in Spalte A vergleichen, sind Sie gleich soll in Tabelle Temp in Spalte B die Klasse ergänzt werden. Und das solange bis in Tabelle Daten alle Zeilen durchlaufen sind.
Hab es mal so angefangen zu versuchen, bekomme es allerdings nicht wirklich hin.
Dim rng2 As Range
For Each rng2 In Sheets("Daten").Range("A1:B" & Range("A999").End(xlUp).Row)
If Sheets("Daten").Cells(rng2.Row, 1) = Sheets("Temp").Cells(rng2.Row, 1) Then
Sheets("Daten").Cells(rng2.Row, 2).Copy
Sheets("Temp").Cells(rng2.Row, 2).PasteSpecial Paste:=xlPasteValues
End If
Next

Vielen Dank vorab schon für eure Unterstützung
Grüße Ralf

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 13:29:37
2
Hallo Ralf,
warum VBA, benutze Sverweis()
Gruß Hajo
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 14:09:00
2
Hallo Ralf,
z.B. so:
Option Explicit
Public Sub Test()
Dim loLetzte As Long
Dim raBereich As Range
Dim raZelle As Range
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Set wsQuelle = ThisWorkbook.Worksheets("Daten")
Set wsZiel = ThisWorkbook.Worksheets("Temp")
With wsQuelle
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set raBereich = .Range(.Cells(2, 1), .Cells(loLetzte, 1))
For Each raZelle In raBereich
If raZelle.Value = wsZiel.Cells(raZelle.Row, 1) Then
wsZiel.Cells(raZelle.Row, 2).Value = raZelle.Offset(0, 1).Value
End If
Next raZelle
End With
Set raBereich = Nothing
Set raZelle = Nothing
Set wsQuelle = Nothing
Set wsZiel = Nothing
End Sub
Bei dem Code bin ich davon ausgegangen, dass der Bereich der Daten erst in Zeile 2 beginnt, weil in Zeile 1 Überschriften vorhanden sind. Ebenso beim Zielbereich.
Der Einwand von Hajo ist natürlich berechtigt. Wenn die Namen in den Spalten A der beiden Tabellenblätter Daten bzw. Temp nicht mehrfach vorkommen, dann geht das auch mit einer SVERWEIS Formel.
Gruß Werner
Anzeige
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 15:03:08
2
Hallo Hajo und Werner,
danke für die Hilfe.
Die Daten fangen in der 1. Zeile an, die Überschriften dienten hier nur zur Darstellung.
Ich habe den Code im meine Userform eingebaut und angepasst auf die 1.Zeile, nur passieren tut nach bestätigen von dem Button nichts.
Grüße Ralf
P.S. Wollte ganz gerne alles innerhalb von VBA lösen, ohne Formeln in den Tabellen zu hinterlegen
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 15:08:38
2
Hallo Ralf,
dann zeig mal den Code, so wie du ihn in deiner Userform aktuell stehen hast.
Gruß Werner
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 15:16:27
2

'Vergleichen
Private Sub Image3_Click()
Dim loLetzte As Long
Dim raBereich As Range
Dim raZelle As Range
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Set wsQuelle = ThisWorkbook.Worksheets("Daten")
Set wsZiel = ThisWorkbook.Worksheets("Temp")
With wsQuelle
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set raBereich = .Range(.Cells(1, 1), .Cells(loLetzte, 1))
For Each raZelle In raBereich
If raZelle.Value = wsZiel.Cells(raZelle.Row, 1) Then
wsZiel.Cells(raZelle.Row, 2).Value = raZelle.Offset(0, 1).Value
End If
Next raZelle
End With
Set raBereich = Nothing
Set raZelle = Nothing
Set wsQuelle = Nothing
Set wsZiel = Nothing
End Sub

Anzeige
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 15:19:06
2
Alles klar

'Vergleichen
Private Sub Image3_Click()
Dim loLetzte As Long
Dim raBereich As Range
Dim raZelle As Range
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Set wsQuelle = ThisWorkbook.Worksheets("Daten")
Set wsZiel = ThisWorkbook.Worksheets("Temp")
With wsQuelle
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set raBereich = .Range(.Cells(1, 1), .Cells(loLetzte, 1))
For Each raZelle In raBereich
If raZelle.Value = wsZiel.Cells(raZelle.Row, 1) Then
wsZiel.Cells(raZelle.Row, 2).Value = raZelle.Offset(0, 1).Value
End If
Next raZelle
End With
Set raBereich = Nothing
Set raZelle = Nothing
Set wsQuelle = Nothing
Set wsZiel = Nothing
End Sub

Anzeige
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 15:27:00
2
Also der Code scheint zu laufen, aber nicht richtig.
In der Tabelle Temp werden Namen die in der Tabelle Daten steht per Zufallsprinzip eingtragen. z.B. 15 Stück nur ohne Klasse.
In der tabelle Daten stehen im Durchschnitt immer 60 Namen mit Klasse, die Klassen soll er dann beim Durchgehen auch der Temp Tabelle hinzufügen.
Grüße
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 15:34:01
2
Dein Code macht genau das was mein alter gemacht hat. Er fügt nur hin und wieder eine Klasse bei einem Namen ein, aber nicht bei allen Namen.
Grüße
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 16:21:31
2
Hallo Ralf,
dann lade mal eine Beispielmappe hoch mit den zwei Blättern und ein paar Datensätzen. Aber bitte als .xls also ohne Makros. Kann derzeit keine .xlsm herunterladen.
Gruß Werner
Anzeige
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
31.05.2017 17:38:17
2
Hallo Ralf,
obwohl die Frage, ob im Tabellenblatt "Daten" Namen doppelt vorkommen können von dir nicht beantwortet wurde hier mal eine Lösung mit SVERWEIS. Das funktioniert aber nur, wenn im Blatt "Daten" keine doppelten Namen vorkommen.
Daß der vorherige Code nicht funktionieren kann, ist mir jetzt klar. Das liegt aber an deiner unpräzisen Beschreibung der Problemstellung.
Der Code vergleicht immer Zeilenweise. Sprich Zeile 1 Blatt Daten mit Zeile 1 Blatt Temp. Wenn du aber die Namen per Zufallsprinzip aus dem Blatt Daten holst, dann bringt eine Zeilenweise Prüfung nichts. Die Treffer die der Code dann bringt sind reiner Zufall.
Option Explicit
Public Sub Test()
Dim raBereich As Range
Dim loLetzte As Long
With Worksheets("Temp")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set raBereich = .Range(.Cells(1, 2), .Cells(loLetzte, 2))
raBereich.FormulaLocal = "=SVERWEIS(A1;Daten!A:B;2;FALSCH)"
raBereich.Value = raBereich.Value
End With
Set raBereich = Nothing
End Sub
Wie schon gesagt funktioniert dieser Code nur dann, wenn im Blatt Daten keine doppelten Namen vorkommen. Der Code schreibt eine SVERWEIS-Formel in Spalte B von Blatt Temp und ersetzt im Anschluß daran die Formel durch ihr Ergebnis.
Gruß Werner
Anzeige
AW: Vergleich von 2 Tabellen, ergänzen nach Treffer
01.06.2017 08:46:59
2
Hallo Werner,
hab den Beitrag gefunden, perfekt läuft super.
Danke, damit hab ich das Problem auch gelöst, hatte vorher versucht die Daten aus meinen array zubekommen nach dem mischen, aber, da stimmte leider die Klassen Zuordnung nicht mehr. So das ich diesen Weg versucht hatte.
mischen tuhe ich so, hatte hier im Forum den Code entdeckt
  i = 1
For lngIndex = LBound(vntList, 1) To UBound(vntList, 1)
Randomize Timer
lngRnd = Int((UBound(vntList, 1)) * Rnd + 1)
vntTmp = vntList(lngIndex, 0)
vntList(lngIndex, 0) = vntList(lngRnd, 0)
vntList(lngRnd, 0) = vntTmp
Next
With Sheets("arrayTemp")
.UsedRange.ClearContents
.Cells(1, 1).Resize(UBound(vntList), 1) = vntList
End With
Viele Grüße Ralf
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
01.06.2017 09:06:40
Werner

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige