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

Spalten Inhalte aus 3 Tabellen vergleichen

Spalten Inhalte aus 3 Tabellen vergleichen
09.11.2017 09:38:59
kesici
Hallo zusammen,
ich habe wahrscheinlich ein kleines Problem, bei dem ich nicht vorankomme.
Es geht um eine Tabelle, die aus 3 externen Tabellen zusammen gebastelt wurde. Aus diesen externen 3 Tabellen nehme ich jeweils eine Spalte heraus und stelle sie gegenüber.
Das Problem jedoch ist, dass die Spalte aus der ersten externen Tabelle Werte beinhaltet, die die anderen 2 Spalten der anderen externen Tabellen auch beinhalten. Ein kleines Beispiel:
1. externe Tabelle beinhaltet BMW
2. externe Tabelle beinhaltet BMW ist toll, toller BMW etc.
3. externe Tabelle beinhaltet Super bmw, bmw ist gut etc.
In der Endtabelle soll dies dann so aufgelistet werden:
Spalte 1 Spalte 2 Spalte 3
BMW
BMW ist toll Super bmw
toller BMW bmw ist gut
Und das geht mehrere tausend Zeilen und die werte sind nicht nacheinander, d.h. wenn z.b. BMW ist toll in Zeile 5 steht kann es sein, dass es doppelt vorkommt oder bmw ist gut in Zeile 5000 auch vorkommen kann.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: auch nach 2maligen lesen mir noch unklar ...
09.11.2017 10:15:34
...
Hallo,
... was Du wo und wie genau als Datenbasis hast und was Du daraus neu erzeugen möchtest.
Gruß Werner
.. , - ...
AW: auch nach 2maligen lesen mir noch unklar ...
09.11.2017 10:32:28
kesici
Hallo,
ok ich versuche es besser zu formulieren.
Wie gesagt habe ich 3 Tabellen bzw. 3 unterschiedliche Dtaeien. Aus diesen Dateien benötige ich jeweils eine Spalte. Darum habe ich mittels eines Makros geschafft, dass man diese 3 Dateien nacheinander öffnet und sie in eine 4. Datei sozusagen importiert. Dadurch gibt es nun in der 4. Datei 3 Arbeitsblätter.
Aus diesen 3 Arbeitsblättern benötige ich jeweils nur 1 Spalte. Dies habe ich dann mit einer Index-Funktion gelöst. Habe mir die benötigten Spalten (3 Spalten sinds) in das 4. Tabellenblatt rübergezogen.
Jetzt komme ich nicht mehr weiter. Ich muss diese 3 Spalten so auflisten, dass sie nicht durcheinander sind. Das bedeutet, die Spalte aus Tabellenblatt 1 ist meine Orientierungsspalte, an dieser Spalte halte ich mich. Hier sind Werte enthalten z.B.: BMW. Die 2. Spalte aus dem 2. Tabellenblatt, welche ich auch rüber in das 4. Tabellenblatt gezogen habe, hat Werte, die das Wort BMW enthalten. Nun muss ich diese Werte herausfinden und so auflisten, dass BMW aus Spalte 1 vorne steht und z.B.: BMW ist toll aus Spalte 2 neben dem Wort BMW aufgelistet wird. Das gleiche gilt auch für die Spalte 3.
Es soll am Ende im 4. Tabellenblatt so aussehen:
Spalte 1
BMW
Spalte 2
BMW ist toll
Spalte 3
guter BMW
usw. Es kann gut sein, dass Spalte 2 bspw. 20 Werte hat und diese sollten dann untereinander aufgelistet werden, wobei Spalte 3 nur 6 haben könnte. Und danach soll es bspw. mit dem Wort Audi weitergehen.
Anzeige
AW: eine kleine Beispieldatei wäre hilfreicher owT
09.11.2017 10:47:36
...
Gruß Werner
.. , - ...
AW: und nun nachgefragt ...
09.11.2017 11:32:06
...
Hallo,
... und zwar:
1.) sollen wirklich identische Datenwertkombinationen x-fach (so oft wie vorhanden) in Tabelle4 hintereinander gelistet werden? Wozu soll das denn gut sein? Oder sind die Datenwerte in Tabelle2!C:C und Tabelle3!D:D doch alle unterschiedlich?
2.) mit wie vielen verschiedenen Datenwerten wird in Tabelle1!S:S max. (ca) zu rechnen sein?
3.) und desgleichen für Tabelle2!C:C und Tabelle3!D:D je Datenwerten wird in Tabelle1!S:S ?
Gruß Werner
.. , - ...
Anzeige
AW: und nun nachgefragt ...
09.11.2017 11:41:24
kesici
Hallo,
1.) sollen wirklich identische Datenwertkombinationen x-fach (so oft wie vorhanden) in Tabelle4 hintereinander gelistet werden? Wozu soll das denn gut sein? Oder sind die Datenwerte in Tabelle2!C:C und Tabelle3!D:D doch alle unterschiedlich?
Ja, so ist das gewollt. In der Regel sind die Werte in Tabelle2!C:C und Tabelle3!D:D unterschiedlich. Aber es kann durchaus mal vorkommen, dass da identische Werte vorhanden sind.
2.) mit wie vielen verschiedenen Datenwerten wird in Tabelle1!S:S max. (ca) zu rechnen sein?
Wie gesagt, dass Tabellenblatt 1 hat knapp 30.000 Zeilen und die Spalte S hat in der Originaldatei momentan knapp 600 unterschiedliche Werte
3.) und desgleichen für Tabelle2!C:C und Tabelle3!D:D je Datenwerten wird in Tabelle1!S:S ?
Die Tabelle 2 hat über 1000 Zeilen und alle Zellen in Spalte C sind befüllt. ich weiß leider nicht, wie viele unterschiedliche Werte da entahlten sind. Das gleiche gilt für die Tabelle 3, die hat über 1500 Zeilen und Spalte D ist auch komplett befüllt
Anzeige
AW: wenn dem so ist ...
09.11.2017 11:52:29
...
Hallo,
... dann erscheint mir eine VBA-Lösung am geeignetsten. Aus einer solchen halte ich mich allerdings mangels ausreichender Kenntnisse grundsätzlich heraus.
Eine Formellösung wäre zwar auch möglich, aber in Anbetracht der schon als Massendaten zu bezeichneten Datenquelle bestenfalls nur 2. Wahl.
Solltest Du grundsätzlich eine VBA-Lösung anstreben, dann schreibe in Deinen Antwortbetreff: VBA-Lösung gesucht und kennzeichne den thread als offen.
Wenn sich kein VBAler Deiner Sache annimmt, bzw. Du eine Formellösung anstrebst, würde ich es mir am späteren Nachmittag mal annehmen.
Gruß Werner
.. , - ...
Anzeige
AW: VBA-Lösung gesucht
09.11.2017 11:57:29
kesici
Danke für den Tipp.
Hallo zusammen,
ich brauche eventuell Hilfe von einem VBAler :)
AW: VBA-Lösung gesucht
09.11.2017 14:13:37
Peter(silie)
Hallo,
hier deine Mappe mit Code: https://www.herber.de/bbs/user/117557.xlsm
(In Tabelle4 auf den Button "Hit Me" klicken)
Ich muss dir leider sagen, dass ich mich weigere Redundante Daten x-Tausend mal unter einander zu schreiben.
Bei dem Makro erhählst du den Text und die Anzahl an vorkommnissen.
Hier ist nur der Code:

Option Explicit
Public Sub Reorder_Values()
Dim worksheet_ As Worksheet
Dim tmp() As Variant
Dim dict1 As Object
Dim dict2 As Object
Dim t As String
Set dict1 = CreateObject("Scripting.Dictionary")
Set dict2 = CreateObject("Scripting.Dictionary")
Set worksheet_ = ThisWorkbook.Sheets(1)
tmp = Get_Array(worksheet_, 19)
Keys_from_Array tmp, dict1
Keys_from_Array tmp, dict2
Set worksheet_ = ThisWorkbook.Sheets(2)
tmp = Get_Array(worksheet_, 3)
Dim varItem
For Each varItem In dict1.Keys
Set dict1(varItem) = Counted_Items(tmp, varItem)
Next varItem
Erase tmp
Set worksheet_ = ThisWorkbook.Sheets(3)
tmp = Get_Array(worksheet_, 4)
For Each varItem In dict2.Keys
If dict2(varItem) Is Nothing Then Set dict2(varItem) = Counted_Items(tmp, varItem)
Next varItem
Erase tmp
Set worksheet_ = ThisWorkbook.Sheets(4)
Add_to_Sheet dict1, dict2, worksheet_
Set dict1 = Nothing
Set dict2 = Nothing
Set worksheet_ = Nothing
End Sub
Private Function Get_Array(ByRef ofWorksheet As Worksheet, ByVal ofColumn As Long) As Variant
With ofWorksheet
Dim rng As Range
Dim lRow As Long
lRow = .Cells(.Rows.Count, ofColumn).End(xlUp).Row
Set rng = .Range(.Cells(2, ofColumn), .Cells(lRow, ofColumn))
Get_Array = rng.Value2: Set rng = Nothing
End With
End Function
Private Sub Keys_from_Array(ByRef source() As Variant, ByRef This_Dictionary As Object)
Dim varItem As Variant
For Each varItem In source
If varItem  "" And Not This_Dictionary.Exists(varItem) Then This_Dictionary.Add  _
varItem, Nothing
Next varItem
End Sub
Private Function Contains(ByVal This_String As String, That_ As String) As Boolean
If InStr(1, This_String, That_, vbTextCompare) > 0 Then Contains = True
End Function
Private Function Counted_Items(ByRef source() As Variant, ByVal must_contain As String) As  _
Object
Dim dict As Object
Dim varItem As Variant
Set dict = CreateObject("Scripting.Dictionary")
For Each varItem In source
If Contains(varItem, must_contain) Then
If Not dict.Exists(varItem) Then
dict.Add varItem, 1
Else
Dim i As Long
i = dict(varItem)
i = i + 1
dict(varItem) = i
End If
End If
Next varItem
Set Counted_Items = dict
Set dict = Nothing
End Function
Private Sub Add_to_Sheet(ByRef dict1 As Object, ByRef dict2 As Object, ByRef Sheet_ As  _
Worksheet)
Dim varItem As Variant, varItem2 As Variant
Dim lRow As Long, i As Long
Dim tmp1 As Object
Dim tmp2 As Object
Dim rng As Range
With Sheet_
For Each varItem In dict1.Keys
Set tmp1 = dict1(varItem)
Set tmp2 = dict2(varItem)
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
If lRow 

Anzeige
AW: VBA-Lösung gesucht
09.11.2017 16:47:26
kesici
Hallo Peter(silie),
wow, vielen Dank und wenn ich mir das so anschaue hast du und neopa C recht. Es wäre nicht unbedingt sinnvoll die selben Werte untereinander aufzulisten. So ist es viel übersichtlicher.
Ich werde das erst am Montag mit der Originaldatei ausprobieren können, denke aber es wird funktionieren.

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige