PDA

Vollständige Version anzeigen : Zwei Tabellen vergleichen und zusammen führen


namniarb
02.10.2016, 09:52
Hallo zusammen,

verzweifle an einer Formel.

Möchte in einer Tabellle (2 Tabellenblätter) Daten zusammenführen.

Tabellenblatt "Termine" soll mehrere Ereignisse zu einem Termin auswerfen.

Das einzig gleiche in beiden Tabellenblättern ist der Name.

Ergebnis soll in Spalte D (Tabellenblatt Termine) - Ereignis1 + Ereignis2 oder in Spalte F und G getrennt ausgeworfen werden.

Kann mir jemand helfen?

Beispieldatei ist beigefügt.

Wäre dankbar für jede Hilfe.

namniarb

Hajo_Zi
02.10.2016, 10:09
Lade diese Mappe mit einem <a href="http://www.ms-office-forum.net/forum/showpost.php?p=340072&postcount=3">aussagekräftigen Dateinamen</a>.
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Test, Mappe, Beispiel usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten <a href="http://www.ms-office-forum.de/forum/showthread.php?t=322895">anonymisieren bzw. pseudonymisieren.</a>
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms).

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Fennek11
02.10.2016, 10:22
Hallo,

nach meinem ersten Eindruck vermute ich, dass ich es mit VBA lösen könnte. Wäre das akzeptabel, von der it zugelassen?

Ein Ansatz mit "Dictionary" dürfte am besten geeignet sein, aber das ist jenseits eines vba-Grundkurses. Könntest du so etwas bei Bedarf anpassen?

mfg

namniarb
02.10.2016, 11:56
Hallo,

ja ist zugelassen bzw. wenn ich die Tabelle habe, wandele ich sie in Werte um.

Wäre Super.

Mit Formeln bin ich gescheitert (trotz Hilfsspalten und Co.).

VBA Grundkenntnisse sind vorhanden, aber der Ansatz fehlt. Änderungen kann ich bestimmt nachvollziehen. Perfekt wäre wenn ich die Daten in ein weiteres Blatt dynamisch übernehmen könnte.

Also:
ID Datum Name Ereignis
10000 01.11.2016 Name1 Ereignis1

wenn 2 Ereignisse dann:
ID Datum Name Ereignis
10000 01.11.2016 Name1 Ereignis1
20000 01.11.2016 Name2 Ereignis1
20000 01.11.2016 Name2 Ereignis2

usw.

Ist eine Tabelle mit fast 30000 Datensätzen.

Mfg

Fennek11
02.10.2016, 15:32
Hallo,

heute werde ich das nicht mehr machen können.

Bitte sieh in deinen PN (persönliche Nachricht) nach.

mfg

aloys78
02.10.2016, 17:18
Hallo,

anbei mein Vorschlag.

Gruß
Aloys

namniarb
02.10.2016, 21:12
Hallo Aloys,

vielen Dank für die Mühe und den Vorschlag. Funktioniert grundsätzlich. Auch sehr gut im Code dokumentiert. Super.

Liefert aber leider falsche Ergebnisse in meiner großen Tabelle. Ich vermute es liegt daran das manche Namen nicht genau identisch sind (z.B. Leerzeichen zu viel o.ä.). Oder weil im Tabellenblatt "Terminereignis" etwas anders sortiert ist. Versuche den Code oder Tabelle anzupassen. Mal schauen wie weit ich komme.

Danke nochmal.

Mfg

namniarb
02.10.2016, 21:32
Problem schon lokalisiert.

Name1 kommt mehrmals vor:
01.11.2016 Name1
27.12.2016 Name1

Dann zieht Dein Code gleich den vom 27.12.2016 mit (Ereignis2).


Müsste also noch eine Datumsabfrage mit einbauen (also nur doppelte Ereignisse mit gleichem Datum).

Ist das ein Problem?

aloys78
02.10.2016, 23:00
Hallo,
Name1 kommt mehrmals vor:
Dann ergänze mal Deine Beispieldatei um diesen Fall und zeige daran auf, wie das Ergebnis dann aussehen soll.

Gruß
Aloys

namniarb
03.10.2016, 07:35
Hallo Aloys.

Datei ergänzt.

Gruß
namniarb

aloys78
03.10.2016, 07:57
Hallo,

Code an geänderte Aufgabenstellung angepasst.

Gruß
Aloys

namniarb
03.10.2016, 09:21
Hallo Aloys,

Funktioniert super ....

Musste nur noch eine kleine Änderung vornehmen...
Ursprünglich (da ging in meiner großen Datei nichts):
If Range("B" & r) = rng.Offset(0, -1) Then 'neben dem Namen muss auch das Datum gleich sein

Geändert:
If Range("A" & r) = rng.Offset(0, -1) Then 'neben dem Namen muss auch das Datum gleich sein

Vielen Dank nochmal. Hätte ich Tage/Wochen gebraucht.

Gruß
namniarb