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

Vergleichtabelle aus 2 Tabellenblätter

Vergleichtabelle aus 2 Tabellenblätter
Khiari

Hallo Dr. Herber,
ist zwar schon eine Ewigkeit her, dass Sie diese Hilfe geleistet haben, geholfen hat sie mir heute wunderbar - danke.
ich bin völlig unbedarft in VBA und bräuchte eine Erweiterung:
Aus 2 gleich aufgebauten Tabellenblätter (Mit X Spalten: Name(String), Adresse(string), Gewicht (double), Alter (int)), muss eine neue Tabelle in der gleichen Arbeitsmappe rausgegeben werden:
-in dieser Tabelle soll die gesamte Tabelleninhalten darstellt werdeb, ABER die Spalten sollen Paarweise dargestellt werden(Adresse|Adresse2|Gewicht|Gewicht2|Alter|Alter2|) mit Ausnahme des ersten Namen-Spalte. Dies muss nicht wierderholt werden.
Dies neue Tabelle soll die Vorbereitung zur eine 4te. Tabelle sein, die aus all diesen Infos ein Vergleichtabelle mit der gewünschte infos über Filtern ausgibt.
hoffentlich Sind Sie noch in diesem Forum unterwegs und Sie mir in einiges dabei helfen können :)
lg
Khiari

Dr. Herber
09.02.2018 17:40:52
KlausF
Hallo Khiari,
"Dr. Herber" ist kein Doktor sondern Hans Herber, der Betreiber dieses Forums.
Hans ist hier im Forum praktisch nicht mehr unterwegs, dafür aber eine Menge
anderer kompetenter Helfer. Wenn Du also eine Arbeitsmappe hier reinstellst
und Dein Anliegen noch einmal deutlich erklärst, wird Dir hier bestimmt geholfen.
Der andere direkte Weg zu "Dr. Herber" wäre der hier:
https://www.herber.de/develop.html
Gruß
Klaus
AW: Link zum alten Beitrag
10.02.2018 12:51:52
Khiari
Hallo Chris,
danke für die Rückmeldung.
Anbei die Excel-Tabelle mit dem Wunschergebnis bzw. mit der entsprechenden Legende.
https://www.herber.de/bbs/user/119698.xlsm
Danke schon mal
LG Nadia
AW: Link zum alten Beitrag
12.02.2018 10:33:14
ChrisL
Hi
Sub Makro1()
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim lZ As Long
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Set WS3 = Sheets.Add
With WS3
WS1.Columns(1).Copy .Range("A1")
WS2.Range("A2:A" & WS2.Cells(Rows.Count, 1).End(xlUp).Row).Copy .Cells(Rows.Count, 1).End( _
xlUp).Offset(1, 0)
.Columns(1).RemoveDuplicates Columns:=1, Header:=xlYes
lZ = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("B1") = "Adresse1"
.Range("C1") = "Adresse2"
.Range("D1") = "Gewicht1"
.Range("E1") = "Gewicht2"
.Range("F1") = "Delta Gewicht"
.Range("G1") = "Alter1"
.Range("H1") = "Alter2"
.Range("I1") = "Delta Alter"
.Range("B2:B" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,2,0)"
.Range("C2:C" & lZ).Formula = "=VLOOKUP($A2,Tabelle2!$A:$D,2,0)"
.Range("D2:D" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,3,0)"
.Range("E2:E" & lZ).Formula = "=VLOOKUP($A2,Tabelle2!$A:$D,3,0)"
.Range("F2:F" & lZ).Formula = "=D2-E2"
.Range("G2:G" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,4,0)"
.Range("H2:H" & lZ).Formula = "=VLOOKUP($A2,Tabelle2!$A:$D,4,0)"
.Range("I2:I" & lZ).Formula = "=G2-H2"
.Range("B2:C" & lZ).Interior.Color = 5296274
.Range("B2").FormatConditions.Add Type:=xlExpression, Formula1:="=$B2<>$C2"
.Range("B2").FormatConditions(1).Interior.Color = 65535
.Range("B2").FormatConditions(1).ModifyAppliesToRange Range:=.Range("B2").Resize(lZ - 1, 2)
End With
End Sub

cu
Chris
Anzeige
AW: Link zum alten Beitrag
12.02.2018 13:34:48
Khiari
Hi Chris,
Super! danke für die Lösungsvorschlag.
Nur ich habe paar Fragen dazu, und zwar wie kann ich die "#INV" aus der Zellen rausnehmen und stattdessen einfach einen Bindestrich machen?
Sorry das war mein Fehler, dass ich nicht alles beschrieben hatte. Ich wollte auch ein 3te. Farbmarkierung für die abweichenden Name auf die 2 Tabellen.
Dann habe ich mir verschiedene Umschaltfläche als Filtern eingesetzt und wollte wissen wie ich durch die Aktivierung von einzelne Filtern, die Ergebnisse auf einer zusätzlichen Tabelle liefern kann.
Die folgende Muster-Tabelle dient zur Veranschaulichung.
https://www.herber.de/bbs/user/119738.xlsm
Danke und Grüße
Nadia
Anzeige
AW: Link zum alten Beitrag
12.02.2018 13:49:08
ChrisL
Hi
Formeln mit WENNFEHLER ergänzen z.B.
=WENNFEHLER(SVERWEIS($A2;Tabelle2!$A:$D;2;0);"-")
...Formula = "=IFERROR(VLOOKUP($A2,Tabelle2!$A:$D,2,0),""-"")"
Die Folgefragen lasse ich mal offen.
cu
Chris
AW: Link zum alten Beitrag
12.02.2018 18:15:35
Khiari
Hey,
danke Chris.
Das Problem ist folgendes: die Excel-fehlermeldung "#NV" wird erst in der generierten Tabelle vorkommen. Also ich kann mich nicht auf Tabelle 1 oder 2 verweisen.
Dann es tritt auch ein ähnliches Problem beim Delta-Rechnung auf, wenn auf der Tabelle 1 oder 2 ein leeres Zelle beim Gewicht oder ALter gibt.
Kannst du mir da helfen?
Danke und Grüße
Nadia
Anzeige
AW: Link zum alten Beitrag
12.02.2018 18:40:42
ChrisL
Hi
In dem Codeteil werden die Formeln eingesetzt, die du nachher in der generierten Tabelle siehts:

.Range("B2:B" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,2,0)"
.Range("C2:C" & lZ).Formula = "=VLOOKUP($A2,Tabelle2!$A:$D,2,0)"
.Range("D2:D" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,3,0)"
.Range("E2:E" & lZ).Formula = "=VLOOKUP($A2,Tabelle2!$A:$D,3,0)"
.Range("F2:F" & lZ).Formula = "=D2-E2"
.Range("G2:G" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,4,0)"
.Range("H2:H" & lZ).Formula = "=VLOOKUP($A2,Tabelle2!$A:$D,4,0)"
.Range("I2:I" & lZ).Formula = "=G2-H2"
Jetzt musst du diese Formeln nur mit WENNFEHLER resp. ISERROR ergänzen.
z.B.
"=VLOOKUP($A2,Tabelle2!$A:$D,2,0)"
ersetzen durch
"=IFERROR(VLOOKUP($A2,Tabelle2!$A:$D,2,0),""-"")"
cu
Chris
Anzeige
AW: Link zum alten Beitrag
13.02.2018 15:18:46
Khiari
Hi Chris,
jaaa! genau" es hat geklappt! Danke :)
ich wollte jetzt für die Filterungauswahl die "Toggle Button" benutzen und die Befehlsschaltfläche für die Generierung.
Das ganze dient dazu, dass letztendlich verschiedene gefilterte Tabelle als ein finale Ergebnis liefert werden können (je nach Auswahl des entsprechenden Toggle)
Das Problem hier ist die Kombination Zw. die Toggle Buttons und die Befehlsschaltfläche und vor allem die die Steuerung der toggling :S
Zur Veranschaulichung https://www.herber.de/bbs/user/119769.xlsm
Grüße
Nadia
Anzeige
AW: Link zum alten Beitrag
13.02.2018 17:09:08
ChrisL
Hi
Langsam nimmt es den Umfang von Auftragsprogrammierung an. Mein Einsatz ist dann hiermit auch beendet.
https://www.herber.de/bbs/user/119775.xlsm
Die letzten 3 Zeilen kannst du anstelle Hidden auch Delete machen.
Sub Makro()
Const WSName As String = "ZuFa"
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim lZ As Long
On Error Resume Next
Application.DisplayAlerts = False
Sheets(WSName).Delete
Application.DisplayAlerts = True
On Error GoTo 0
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Set WS3 = Sheets.Add(After:=Sheets(Sheets.Count))
With WS3
.Name = WSName
WS1.Columns(1).Copy .Range("A1")
.Rows(1).Insert
WS2.Range("A2:A" & WS2.Cells(Rows.Count, 1).End(xlUp).Row).Copy .Cells(Rows.Count, 1).End( _
xlUp).Offset(1, 0)
.Columns(1).RemoveDuplicates Columns:=1, Header:=xlYes
lZ = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("A1") = "Gefiltert nach Alter"
.Range("A1").Font.Bold = True
.Range("B2") = "Adresse1"
.Range("C2") = "Alter1"
.Range("D2") = "Alter2"
.Range("E2") = "Delta Alter"
.Range("B3:B" & lZ).Formula = "=IFERROR(VLOOKUP($A3,Tabelle1!$A:$D,2,0),""x"")"
.Range("C3:C" & lZ).Formula = "=IFERROR(VLOOKUP($A3,Tabelle1!$A:$D,4,0), ""--"")"
.Range("D3:D" & lZ).Formula = "=IFERROR(VLOOKUP($A3,Tabelle2!$A:$D,4,0), ""--"")"
.Range("E3:E" & lZ).Formula = "=IFERROR((C3-D3), ""----"" )"
.Range("A1:B" & lZ).Copy .Range("A" & lZ + 1)
.Range("A" & lZ + 1) = "Gefiltert nach Gewicht"
.Range("A" & lZ + 1).Font.Bold = True
.Range("C" & lZ + 2) = "Gewicht"
.Range("D" & lZ + 2) = "Gewicht2"
.Range("E" & lZ + 2) = "Delta Gewicht"
.Range("C" & lZ + 3 & ":C" & lZ * 2).Formula = "=IFERROR(VLOOKUP($A" & lZ + 3 & ",Tabelle1!$ _
A:$D,4,0), ""--"")"
.Range("D" & lZ + 3 & ":D" & lZ * 2).Formula = "=IFERROR(VLOOKUP($A" & lZ + 3 & ",Tabelle2!$ _
A:$D,4,0), ""--"")"
.Range("E" & lZ + 3 & ":E" & lZ * 2).Formula = "=IFERROR((C" & lZ + 3 & "-D" & lZ + 3 & "),  _
""----"" )"
.Range("A1:B" & lZ).Copy .Range("A" & lZ * 2 + 1)
.Range("A" & lZ * 2 + 1) = "Gefiltert nach Adresse"
.Range("A" & lZ * 2 + 1).Font.Bold = True
.Range("C" & lZ * 2 + 2) = "Adresse2"
.Range("C" & lZ * 2 + 3 & ":C" & lZ * 3).Formula = "=IFERROR(VLOOKUP($A" & lZ * 2 + 3 & ", _
Tabelle2!$A:$D,2,0),""x"")"
.Columns.AutoFit
.Columns.AutoFilter
.Range("A:I").HorizontalAlignment = xlCenter
.Range("A:I").VerticalAlignment = xlCenter
.Range("B" & lZ * 2 + 3).FormatConditions.Add Type:=xlExpression, Formula1:="=$B" & lZ * 2 + _
3 & "<>$C" & lZ * 2 + 3
.Range("B" & lZ * 2 + 3).FormatConditions(1).Interior.Color = 65535
.Range("B" & lZ * 2 + 3).FormatConditions(1).ModifyAppliesToRange Range:=.Range("B" & lZ *  _
2 + 3).Resize(lZ - 2, 2)
If Not Worksheets("Tabelle2").ToggleButton3 Then .Range("C" & lZ * 2 + 1 & ":C" & lZ * 3). _
EntireRow.Hidden = True
If Not Worksheets("Tabelle2").ToggleButton2 Then .Range("C" & lZ + 1 & ":C" & lZ * 2). _
EntireRow.Hidden = True
If Not Worksheets("Tabelle2").ToggleButton1 Then .Range("C1:C" & lZ).EntireRow.Hidden =  _
True
End With
End Sub

cu
Chris
Anzeige
AW: Link zum alten Beitrag
15.02.2018 16:37:59
Khiari
Jo Danke lieber Chris,
das war's auch über diesem Thema.
Jetzt allg Frage: wie kann ich der Inhalt von 2 Spalten aus verschiedener Worksheets aus der gleichen Arbeitsmappe eine bestimmte Farbe zuweisen. Z.b bei gleichen Zelleninhalte grün und bei unterschiedliche Inhalten rot markieren?
Danke schon mal :)
VG
Nadia
AW: Link zum alten Beitrag
15.02.2018 16:38:01
Khiari
Jo Danke lieber Chris,
das war's auch über diesem Thema.
Jetzt allg Frage: wie kann ich der Inhalt von 2 Spalten aus verschiedener Worksheets aus der gleichen Arbeitsmappe eine bestimmte Farbe zuweisen. Z.b bei gleichen Zelleninhalte grün und bei unterschiedliche Inhalten rot markieren?
Danke schon mal :)
VG
Nadia
Anzeige
AW: Link zum alten Beitrag
19.02.2018 15:53:33
Khiari
Hallo Chris,
kannst du mir bitte erklären wie der VLOOKUP-Befehl genau funktioniert?
also mit:
.Range("B2:B" & lZ).Formula = "=VLOOKUP($A2,Tabelle1!$A:$D,2,0)"
Was ich nicht vor allem kapiert habe, ist die Lookup_value ($A2) und die table_array (Tabelle1!$A:$D)
Grüße
Nadia
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige