Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
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

Tabellenmerge mit mehreren Einträgen zu einem Key

Tabellenmerge mit mehreren Einträgen zu einem Key
08.10.2014 12:16:25
Monika
Hallo zusammen,
der Betreff beschreibt mein Problem leider nicht wirklich gut, ich wusste allerdings nicht genau, wie ich das sonst kurz formulieren soll...
Ich hoffe, ich beschreibe es hier etwas verständlicher:
Ich habe zwei Sheets, in denen teilweise redundante Informationen zu finden sind, aber eben nicht nur.
Diese beiden Sheets sollen zu einem zusammengefasst werden. Problem dabei ist, dass ich nach den Auftragsnummern sortieren und mergen würde. Allerdings ist auf dem einen Sheet der Auftrag nach erbrachtem Service gesplittet, das bedeutet, die Auftragsnummer ist mehrfach gelistet. In dem anderen Sheet sind die Services in einem Feld zusammengefasst, jede Auftragsnummer kommt also nur einmal vor.
Ist es möglich, trotzdem effizient zu mergen? Ich suche schon seit zwei Tagen im Netz, bisher habe ich aber leider nichts brauchbares finden können :(
Es wäre wirklich super, wenn ihr mir hierbei helfen könntet und einen Tipp für mich hättet :)
Viele Liebe Grüße und Danke schon mal!
Monika

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

Betreff
Datum
Anwender
Anzeige
Rückfrage
08.10.2014 12:35:21
Daniel
Hi
da kann man sicherlich was machen, aber ohne zu wissen wie die Daten genau aussehen, lässt sich da nur schwer ein Tip geben.
Es wäre gut, wenn du die Datei mit den Daten, sowie sie vorliegen hier hochladen würdest und von Hand auf einem weitern Blatt darstellst, wie du dir das Ergebnis vorstellst.
Gruß Daniel

AW: Rückfrage
08.10.2014 13:53:08
Monika
Hi,
danke für die schnelle Reaktion!
Ich habe jetzt mal alle sensiblen Daten raus genommen, das heißt, es fehlen die Kundennamen und Lieferadressen. Für das Prinzip sollte es reichen...
https://www.herber.de/bbs/user/93029.xls
In dem Sheet "Wie es aussehen soll" sind die Spalten übernommen, die relevant sind. Allerdings soll - wenn sie in beiden anderen Sheets vorkommen - immer der Wert aus dem Sheet "OrderStatus" übernommen werden.
Viele Grüße

Anzeige
AW: Rückfrage
08.10.2014 15:12:37
Michael
Hallo Monika,
ich habe mir Deine Datei angesehen und bin etwas verwirrt. Welche Tabelle soll zu welcher sortiert werden? Oder so: ist eine von beiden so etwas wie eine "Master-Tabelle"?
Isses nicht sinnvoll, in der Ergebnistabelle zu vermerken, aus welcher der beiden anderen Tabellen die Ergebnisse übernommen wurden?
Die Status-Tabelle enthält viel mehr Auftragsnummern als die Tracker-Tabelle. Wie soll es im Ergebnis dargestellt werden, daß kein Eintrag in letzterer existiert?
Was ist mit den nicht existenten Auftragsnummern in Tracker (z.B. Zeile 23)? Sollen die mit gemerged werden, und wenn ja, wohin?
Wo befindet sich das Land WAHR?
Fragen über Fragen.
Der Punkt ist ein grundlegend durchdachtes "Datenbank-Design", wenn man denn schon Excel DB-mäßig einsetzen möchte.
Grundlage 1: eindeutiger Primärschlüssel: nicht vorhanden, da nicht existente Nummern in Tracker
Grundlage 2: Aufteilung in mehrere Tabellen: Ein Auftrag hat Daten, die zum "Auftrag selbst gehören" und pro Auftrag nur einmal vorhanden sind: Nr., Land, Währung, Kunde usw. Dazu gibt es Auftrags-Posten, die von der Logik her in eine zweite, mit der ersten über einen eindeutigen Schlüssel verknüpften Tabelle gehören.
Das ist leicht einzusehen, wenn Du Dir eine Rechnung o.ä. ansiehst: es gibt einen Rechnungskopf mit den "Überdaten" und einen Bereich für einzelne Rechnungsposten.
Das Ergebnis ist dann "theoretisch richtig konzipiert", braucht aber mehr Papier, z.B. so:

Auftrag Nr. Sonstige_Daten
12345       Bla
Posten 1: Stück, Ware
12346       Blabla
Posten 1: Stück, Ware
Posten n: Stück, Ware

usw.
Das Problem, wenn man es nicht so macht, ist eine ungünstige Vermischung von Daten und Struktur.
...
Ich habe mir nochmal die ursprüngliche Fragestellung angesehen. Es ist einfach unklar, was mit Posten passieren soll, bei denen die Auftragsnummer nicht in beiden Tabellen vorkommt: man könnte sie weglassen, aber dann könnten wichtige Informationen am Anwender vorbeigehen.
Mach Dir doch bitte ein paar Gedanken über die nachgefragten Details, dann sehen wir weiter.
Schöne Grüße,
Michael

Anzeige
AW: Rückfrage
08.10.2014 15:24:38
Daniel
könntest du das Blatt "Wie es aussehen soll" noch mit Daten füllen, so wie sie sich aus den Beispieldaten ergeben sollen?
Gruß Daniel

AW: Rückfrage
08.10.2014 16:52:20
Monika
Hi,
ich habe jetzt einen Bsp.-Datensatz eingefügt, der bei "OrderStatus" mit der Auftragsnummer drei mal gelistet ist...
https://www.herber.de/bbs/user/93033.xls
Auftragsnummern, welche nur im OrderStatus vorkommen, sollen trotzdem in die neue Tabelle übernommen werden, eben mit den Daten, die vorhanden sind...
Ich weiß, dass die Grundlage etwas seltsam ist :( Aber das ist, was ich übergeben bekommen habe...
Vielen Dank noch mal :)

Anzeige
AW: Rückfrage
08.10.2014 17:03:22
Michael
Hallo Monika,
ich bitte meine Faulheit zu entschuldigen...
Ich hab's mir einfach gemacht und ein neues Tabellenblatt in Deiner ALTEN Datei angelegt, das ist dann die Tabelle4, in die das Makro alle Daten schreibt.
Es sind zwei Teile:
a) einzeilig_Kopieren kopiert alles aus OrderStatus
b) mischt alles aus OrderTracker rein UND schreibt ein x in Spalte K, wenn was kopiert wurde: das dient dazu, diese Daten evtl. noch zusätzlich reinzukopieren, wenn gewünscht.
Option Explicit
Sub einzeilig_Kopieren()
Dim zeile, zeile_erg As Long
Dim orderNr, ProdNr As String
zeile = 2
zeile_erg = 3
While Tabelle1.Range("A" & zeile)  ""
Tabelle1.Rows(zeile).Copy Destination:=Tabelle4.Rows(zeile_erg)
orderNr = Tabelle1.Range("A" & zeile).Value
zeile = zeile + 1
While Tabelle1.Range("A" & zeile).Value = orderNr
Tabelle4.Range("D" & zeile_erg).Value = _
Tabelle4.Range("D" & zeile_erg).Value & " " & _
Tabelle1.Range("D" & zeile).Value
zeile = zeile + 1
Wend
zeile_erg = zeile_erg + 1
Wend
End Sub
Sub Tracker_reinmischen()
Dim zeile As Long
Dim orderNr As String
Dim gefunden As Range
zeile = 3
While Tabelle4.Range("A" & zeile)  ""
orderNr = Tabelle4.Range("A" & zeile).Value
Set gefunden = Tabelle2.Cells.Find(What:=orderNr, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not gefunden Is Nothing Then
Tabelle2.Range("A" & gefunden.Row & ":H" & gefunden.Row).Copy _
Destination:=Tabelle4.Cells(zeile, 11)
Tabelle2.Range("I" & gefunden.Row).Value = "x"
End If
zeile = zeile + 1
Wend
End Sub
Sub alles_machen() ' das hier aufrufen
einzeilig_Kopieren
Tracker_reinmischen
End Sub
Die Faulheit besteht darin, daß ich nicht Zelle für Zelle dahin kopiere, wo Du sie haben willst, sondern jeweils die komplette Zeile nach Ax bzw. Kx: es ist kein großer Aufwand, die Spalten hinterher untereinander zu verschieben bzw. doppelte zu löschen.
File anbei: https://www.herber.de/bbs/user/93035.xls
Schöne Grüße,
Michael

Anzeige
AW: Rückfrage
09.10.2014 11:39:48
Monika
Vielen Dank!

Gerne und Korrektur
09.10.2014 14:17:35
Michael
Hi Monika,
ich meinte natürlich anstatt:
b) mischt alles aus OrderTracker rein UND schreibt ein x in Spalte K, wenn was kopiert wurde: das dient dazu, diese Daten evtl. noch zusätzlich reinzukopieren, wenn gewünscht.
richtig: ... die Daten OHNE x noch irgendwie zu bearbeiten.
Schönen Tag (hier isses so sonnig, ich muß aus dem Haus),
Michael
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige