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

Vergleich von unterschiedlich aufgebauten Zellen

Vergleich von unterschiedlich aufgebauten Zellen
14.02.2014 14:09:41
unterschiedlich
Hallo zusammen,
ich bastel seit einiger Zeit an einem Makro und bin dafür, dass ich ein absoluter Anfänger bin auch schon recht weit. Jetzt komme ich aber nicht weiter und brauche eure Hilfe. Folgendes Problem:
In Tabelle 1 habe ich in Spalte 4 Zeichenketten bestehend aus 1-6 3er Gruppen, z.B.
Zelle(1,4) xxx,yyy
Zelle(2,4) zzz,abc,fgh,zyx,xxx, yyy
Je Zeile kann jede 3er Gruppe nur 1x vorkommen.
In Tabelle 2 sind in Spalte 17 ähnliche Zeichenketten die jedoch anders aufgebaut sind:
Zelle (5,17) +xxx+yyy
Hinzu kommt, dass die Zeichenketten in Tabelle 2 durch und (+) oder oder( / ) verknüpft sein können:
Zelle(20,17) +zzz/zzy/zyy+abc+fgh+zyx+xxx+yyy
Ich möchte jetzt in Tabelle 2 die Zellen finden die mit der Kombination aus Tabelle 1 beschrieben werden und den dazugehörigen Wert aus der gleichen Zeile, Spalte 1 in eine 3. Tabelle eintragen, das heißt für Tabelle 1, Zelle(1,4) würde Zelle(5,17) ein Treffer sein, Zelle (20,17) aber nicht weil dafür noch mehr Kombinationen nötig sind. Zelle(2,4) hätte einen Treffer bei Zelle(20,17) weil zzy und zyy nur optional sind. Zelle (5,17) wäre kein Treffer weil in (2,4) mehr Kombinationen enthalten sind.
Bisher habe ich die 3er Kombinationen in Tabelle 1 auf einzelne Zellen (Spalten 7-12) aufgesplittet. Bei dem Vergleich dieser einzelnen Zellen mit Tabelle 2 hänge ich jetzt fest.
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt und bin für jeden Tip dankbar!
VG
Micha

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
hier WECHSELN() ...
14.02.2014 14:27:16
der
Hallo Micha,
in Deiner Tabelle2 in einer Hilfsspalte folgende Formel:= =WECHSELN(WECHSELN(Q5;"+";",");"/";",") und die Formel entsprechend nach unten kopieren.
In Tabelle1 dann mit VERGLEICH() den Wert in der Hilfsspalte der Tabelle suchen und in der Formel dies gleich mit INDEX() auswerten für das Ergebnis.
Anstelle einer Hilfsspalte kann man natürlich auch gleich mit einer Matrixformel das Ergebnis in Tabelle1 ermitteln.
Gruß Werner
.. , - ...

AW: hier WECHSELN() ...
14.02.2014 14:52:00
Micha
Hallo Werner,
wow, danke für die schnelle Antwort. Da das ganze in einem größeren Makro eingebaut werden muss, muss das ganze aber in VBA gepackt werden (sorry wenn ich das in meinem ersten Post nicht so deutlich gemacht habe)... würde das auch gehen?
Außerdem sollen alle Kombinationen in den Hilfsspalten mit den Werten in Tabelle 2 verglichen werden. Wenn in Tabelle 1 zu viele Kombinationen oder eine falsche ist soll weitergesucht werden.
Wenn in Tabelle 2 noch mehr Kombinationen stehen, die nicht mit "oder" verknüpft und somit optional sind, soll weitergesucht werden.
Alle "+" Anforderungen sollen also erfüllt sein und von den "/" Anforderungen muss eine erfüllt sein.
Durch eine Umwandlung der + und / funktioniert diese Differenzierung nicht.
Grüße
Micha

Anzeige
hier wird eine VBA-Lösung gesucht ...
14.02.2014 14:54:44
der
Hallo Micha,
... aus VBA-Lösungsangeboten halt ich mich raus, setze den Thread deshalb auf offen.
Gruß Werner
.. , - ...

Lösungsansatz ist da, aber Umsetzung in VBA?
14.02.2014 16:28:20
Micha
Hallo Werner,
danke fürs öffnen.
Ich habe eine Idee wie man es evtl. umsetzen könnte:
Wenn die Kombination in der ersten Hilfsspalte in einer Zelle in Tabelle 2 gefunden wird, soll diese Kombination und das erste + was links davon steht gelöscht werden.
Dann wird die Kombination aus der 2. Hilfsspalte gesucht und so weiter.
Wenn am Ende in der Zelle in Tabelle 2 kein + mehr übrig ist, sind nur noch Oder Anweisungen oder gar nichts mehr da. Wenn jetzt gleichzeitig in Tabelle 1 keine Einträge mehr vorhanden sind (Hilfsspalten 3-6 leer) dann ist die Prüfung korrekt abgeschlossen.
Ist eine der beiden Bedingungen nicht erfüllt, dann ist die Prüfung falsch.
Aber wie kann ich das in VBA packen? :(

Anzeige
Beispieltabelle ?
14.02.2014 16:34:25
ransi
Hallo Micha
Ich denke ich kann dir helfen, aber ich habe Probleme eine Tabelle mit deinen Daten nachzubauen.
Lade doch bitte mal eine kleine Beispieldatei hoch.
Daraus sollte man erkennen wie es zur Zeit aussieht, und wie die Ausgabe der Berechnung sein soll.
20 bis 30 aussagekräftige Werte reichen.
ransi

AW: Beispieltabelle ?
14.02.2014 18:43:11
Micha
Hallo Ransi,
im Anhang ist eine Datei mit allen wichtigen Zellen. Tabelle 1 Spalten E-J sind nicht orginal sondern werden von mir bereits erstellt.
In Tabelle 3 sind 2 Beispiele wie die Ausgabe dann aussehen soll.
Vielen Dank für deine Hilfe!!
Grüße
Micha

Anzeige
Beispieltabelle
17.02.2014 16:18:17
Micha
Hey Ransi und auch alle anderen,
hattest du schon Zeit dir die Beispieldatei anzuschauen?
Ich habe mittlerweile auch selber ein bisschen rumprobiert und mir Sachen zusammengesucht. Ich weiß allerdings nicht, ob da das gewünschte Ergebnis rauskommt und kann es nicht überprüfen, weil ich einen Fehler bekomme (Objektvariable oder With-Blockvariable nicht festgelegt). Wo liegt mein Fehler?
Option Explicit
Private Sub CommandButton1_Click()
Dim EingabeWS As Worksheet, StammWS As Worksheet, AusgabeWS As Worksheet
Dim LastRowStamm As Long, LastRowEingabe As Long
Dim PR As Integer, kombi As Integer, ResultCount As Integer, k As Integer
Dim SuchKombi As Range
Dim ErsteAdresse As String
EingabeWS = Sheets("Tabelle1")
StammWS = Sheets("Tabelle2")
AusgabeWS = Sheets("Tabelle3")
PR = 2
With StammWS
LastRowStamm = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With EingabeWS
LastRowEingabe = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For PR = 2 To LastRowEingabe
With StammWS.Range(Cells(2, 17), Cells(LastRowStamm, 17))
kombi = 5
Set SuchKombi = .Find(EingabeWS.Cells(PR, kombi), LookIn:=xlValue, LookAt:=xlPart)
ErsteAdresse = SuchKombi.Address
k = SuchKombi.Row
If Not SuchKombi Is Nothing Then
Do While EingabeWS.Cells(PR, kombi)  ""
Set SuchKombi = .Find(EingabeWS.Cells(PR, kombi), LookIn:=xlValue, LookAt:= _
xlPart)
If SuchKombi.adress = ErsteAdresse Then
SuchKombi.adress.Replace what:="+*" & [EingabeWS.cells(PR,kombi)], With:="", _
LookAt:=xlPart
EingabeWS.Cells(PR, kombi).Value = ""
kombi = kombi + 1
Else: Exit Do
End If
Loop
If SuchKombi.Value  "*+*" And IsEmpty(Range(EingabeWS.Cells(PR, 5), EingabeWS. _
Cells(PR, 16))) Then
AusgabeWS.Cells(ResultCount, 1).Value = EingabeWS.Cells(PR, 4)
AusgabeWS.Cells(ResultCount, 2).Value = StammWS.Cells(k, 1)
ResultCount = ResultCount + 1
End If
Set SuchKombi = .FindNext(ErsteAdresse)
End If
End With
Next PR
End Sub

Ich bin für jede Hilfe dankbar!
Viele Grüße
Micha
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige