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

SVerweise filtern automatisch Werte aus?

SVerweise filtern automatisch Werte aus?
21.02.2024 19:40:59
BeamtenRecht
Guten Abend.
Ich würde gerne um eure Hilfe bitten.

Vor wenigen Tagen habe ich eine Frage gestellt, wie man möglicherweise Spalten und Zeilen sortieren kann. Der dazugehörige Beitrag samt der Antwort von Yal findet sich unter https://www.herber.de/forum/messages/1966148.html.

Nachdem ich die ganzen Antworten versucht habe zu nutzen, habe ich mich letzten Endes für die Variante von Yal entschieden. Dafür vier Formeln genutzt (=Tabelle1[@...]; =Tabelle[@...]; =Sortieren(Eindeutig(VStapeln(...); =WENNFEHLER(SVerweis(...)) und die Tabellen gebildet bzw. die Werte sortiert. Dies lässt sich auch anhand der Bilder erkennen.

Userbild

Userbild

Nun zu meinem Problem: wie man auf den Bildern erkennt, habe ich einzelne Werte farblich markiert. Mein großes Problem ist nämlich, dass ich in meiner Ursprungsliste mehrere gleiche Werte vor allem in Tabelle 2 habe, die später in der Endtabelle durch "SVerweise" herausgefiltert werden. Das heißt, für Feld1 habe ich zum Beispiel unter Nummer 1 dreimal die Höhe 10; dies ist in Tabelle 1 dagegen nicht der Fall. Wobei dies nicht zu auszuschließen ist, es soll sich hierbei nur um ein grobes Beispiel drehen.

In der Endtabelle sollen alle - und damit genauestens - Werte aufgezeigt werden. Auch wenn dies zur Folge hat, dass für Tabelle 1 möglicherweise nur "Feld 1, Nummer 1, Höhe 10" und auf der anderen Seite "Feld 1, Nummer 1, Höhe 10" dreimal steht. Es sollen die realen Werte angegeben sein, damit man später wiederum die Unregelmäßigkeiten (also z.B
warum gibt es von "Feld 1, Nummer 1, Höhe 10" in unseren alten Akten drei Fälle, wenn wir offiziell nur einen haben) prüfen und nachvollziehen kann.

Wie kann ich die Formel also ändern, dass "=WennFehler(SVerweise(...)" alle Werte nimmt, auch wenn das möglicherweise die Tabelle unnötig in die Länge zieht? In Kurzfassung möchte ich also die Duplikate alle auch in der Tabelle haben.

Das Originaldokument gibt es im Übrigen in der ersten Frage, Yal hat freundlicherweise eins hochgeladen.

Danke euch!

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

Betreff
Datum
Anwender
Anzeige
AW: SVerweise filtern automatisch Werte aus?
21.02.2024 20:49:59
onur
1) Willst du das jetzt JEDEN Tag posten?
2) Wo ist die Datei? ICH werde bestimmt nicht den Link aufrufen und alle Dateien, die da gepostet sein könnten, runterladen.
AW: SVerweise filtern automatisch Werte aus?
21.02.2024 21:05:29
BeamtenRecht
Hi.
Zu 1) Nein, möchte ich nicht. Zumal es sich hierbei stets um andere Fragen handelt; maximal anknüpfend. Mehr aber auch nicht.
Zu 2) Einmal habe ich noch nicht verstanden, wie ich hier Dateien hochladen kann. Deshalb die Bilder. Und zudem habe ich deshalb auch den Link zum aller ersten Beitrag und der Antwort von yal geschickt, da dieser eine Datei hochgeladen hat. Deshalb müsstest du bitte nur einmal auf den Link, den ich in den Beitrag gepackt haben, klicken und die Datei herunterladen.
Anzeige
AW: SVerweise filtern automatisch Werte aus?
21.02.2024 21:03:51
Yal
Hallo Beamten (man spricht sich im Forum per Vorname an :-)

Der Beitrag war übrigens
https://www.herber.de/forum/archiv/1964to1968/1966082_Excel_sortiert_selber_aus.html

Es ist tatsächlich so, dass SVerweis immer der ersten Treffer liefert. Ob es per Formel anders zu haben, müssen die Formelspezialisten unter uns beantworten.

Wenn man eine Zeile der Quelltabelle doppelt liefert zwar Power Query für diese Tabelle das richtige, doppelte Ergebnis, aber nur für diese Tabelle. In der zweiten Ergebnis-Tabelle fehlt eine Zeile.

Da PQ sich an Datenbank-Mathematik richtet ("Join"), gibt es hier keine einfache Lösung. Ein angepasste PQ-Abfrage für Feld1;1;16 in der neue Konstellation 3 Treffer in der erste Ergebnis-Tabelle
Userbild

https://www.herber.de/bbs/user/167232.xlsx

Ein Ergebnis, das genau die Erwartung entspricht, könnte mit VBA erreicht werden. Wäre aber mühsam.

VG
Yal
Anzeige
AW: SVerweise filtern automatisch Werte aus?
21.02.2024 21:10:42
BeamtenRecht
Hallo Yal, danke für die Antwort. Ich hätte da aber dann Mal eben zwei kurze Fragen 😅
1) Wie kommt es denn dann, dass auf deinem Bild, in der rechten Tabelle auf einmal die 16 zweimal steht? Oder ist das noch ein altes Bild?
2) Nur um das realistisch einzuordnen: ich arbeite auf der Arbeit relativ wenig mit Excel, ich habe Power Query auch noch nie genutzt. Meinst du, man kriegt das trotzdem hin? Oder gibt es vielleicht noch eine Alternative-Methode? Bin mir leider tatsächlich unsicher, ob ich das dort schaffe.
AW: SVerweise filtern automatisch Werte aus?
21.02.2024 22:12:26
Yal
Hallo,

zu 1)
Es richtet sich an der Relationen von Datenbanken (sog. Relationale Datenbank). Wenn man zwei Mengen abgleicht anhand deren Schlüsseln, hat man bei einem sogenannte 1-zu-n Beziehung eine Vermehrung der Treffer.
Beispiel:
Menge 1 hat (Semikolon steht für ein Trenner zwischen 2 Felder):
A;1
A;2
B;3

Menge 2 hat:
A;4
B;5

Wenn man beide miteinander über die erste Spalte vermengt ("Join"), bekommt man folgende Ergebnis:
A;1;A;4
A;2;A;4
B;3;B;5

der "A;4" wird in dem Fall gedoppelt, weil zwei "A" in der erste Menge vorhanden sind.

zu 2)
Excel ist nur ein Werkzeug, PQ auch. Wichtig sind die Konzepte. Wenn Du die Videos im gegebenen Tutorial verstehst, gemeint ist, verstehen was da passiert, und was man damit bezweckt (es sind dafür gute Videos), dann kannst Du dich an PW wagen. Eine zweite Messlatte ist, wie schnell Du solche Themen wie im Pkt 1 erfassen kannst (wobei ich nicht der beste Erklärer bin).

Ansonsten habe ich ein VBA-Lösung gepostet. Aber VBA ist schwieriger als Power Query.

VG
Yal

Anzeige
AW: SVerweise filtern automatisch Werte aus?
22.02.2024 04:09:34
BeamtenRecht
Danke. Bzgl. 1 noch: vielleicht sehe ich da zu kurz, aber in dem Beispiel, dass ich hochgeladen habe, gibt es doch doppelte Werte. Diese müssten sich doch eigentlich auch vermehren/doppeln? Zumindest vermenge ich die doch auch über die erste Liste?
AW: SVerweise filtern automatisch Werte aus?
22.02.2024 09:12:41
Yal
Guten Morgen,

mit Verlaub: Du hast keine Beispiele geladen, sondern nur Bilder. Diese lassen sich nicht in Excel verarbeiten. Die Daten werden ich selbstverständlich nicht nachtippen. Die einzige verfügbare/verwertbare Grundlage ist die Datei von Werner/Neopa. Es gelten die Daten, die drin sind. Auch den Datensatz, den ich gedoppelt habe, habe ich willkürlich ausgewählt.

Es ist auch richtig so: eine Lösung, bei der Du eine Grossenteil schon kennst, wird selten vollständig angeschaut. Erst wenn man etwas ähnliches mit "anderen Farben" liefert, wird die Aufmerksamkeit aufs Ganzes gerichtet.

Ist es ausserdem richtig, von mir zu verlangen, deine Daten genau zu betrachten, wenn Du dir dabei nicht die Mühe gibt, die Daten, die dir zurückgeliefert worden, genau anzuschauen? Bei aller Hilfsbereitsschaft ist das Thema weiterhin dein Anliegen.

VG
Yal
Anzeige
mit VBA
21.02.2024 21:52:59
Yal
Hallo Beamten,

mir hat die VBA-Lösung keine Ruhe gelassen. Folgende Code kommt in einem allgemeine Modul:



Sub Übertragen()
Dim Lo1 As ListObject, Lo2 As ListObject
Dim Row1 As Long, Row2 As Long, Ausg As Long
Dim Key1 As String, Key2 As String

Sortieren
With ThisWorkbook.Worksheets("Tabelle1")
Set Lo1 = .ListObjects("Tabelle1")
Set Lo2 = .ListObjects("Tabelle2")
Row1 = 1
Row2 = 1
Do While Row1 = Lo1.ListRows.Count And Row2 = Lo2.ListRows.Count
Ausg = Ausg + 1
Key1 = MakeKey(Lo1.ListRows(Row1).Range.Value)
Key2 = MakeKey(Lo2.ListRows(Row2).Range.Value)
If Key1 = Key2 Then
.Cells(Ausg, "R").Resize(1, 3).Value = Lo1.ListRows(Row1).Range.Value
Row1 = Row1 + 1
End If
If Key1 >= Key2 Then
.Cells(Ausg, "V").Resize(1, 3).Value = Lo2.ListRows(Row2).Range.Value
Row2 = Row2 + 1
End If
Loop
End With
End Sub

Private Function MakeKey(Satz) As String
Dim i
Dim Erg As String

For i = LBound(Satz, 2) To UBound(Satz, 2)
If IsNumeric(Satz(1, i)) Then
Erg = Erg & ";" & (100000 + Satz(1, i))
Else
Erg = Erg & ";" & Satz(1, i)
End If
Next
MakeKey = Mid(Erg, 2)
End Function

Es setzt voraus, dass das Blatt "Tabelle1" heisst und die Tabellen "Tabelle1" und "Tabelle2" heissen.
Ergebnis wird in den Spalten R bis X zurückgegeben.

Die Einträge in den Tabelle1 und 2 müssen sortiert sein, sonst funktioniert es nicht. Trotz Sortierung wird es problem geben, wenn Zahlen am Ende eines Textes gibt, z.B. mit Feld1 und Feld10. Da müsste der Zahl vom Text getrennt und als Zahl betrachtet werden

Man kann es per Hand oder mit folgenden Code:
Sub Sortieren()

Dim i

For i = 1 To 2
With ThisWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle" & i).Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("Tabelle" & i & "[[#All],[Feld]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SortFields.Add2 Key:=Range("Tabelle" & i & "[[#All],[Nummer]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SortFields.Add2 Key:=Range("Tabelle" & i & "[[#All],[Länge]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next
End Sub


VG
Yal
Anzeige
AW: mit VBA
22.02.2024 04:07:27
BeamtenRecht
Danke für das Ganze. Kurze Frage: an welcher Stelle würde ich denn jetzt dem Code hinzufügen? Oder kann ich das überhaupt?
AW: mit VBA
22.02.2024 09:19:02
Yal
Hallo Beamten (mir wäre recht, wenn Du irgendwo einen "Viele Grüße, Uwe" geben könnte, so könnte ich "Hallo Uwe" schreiben.)

es steht alles drin. Man muss nur aufmerksam lesen. Programmieren verlangt ebenfalls Genauigkeit und volle Aufmerksamkeit. Computer können nicht einen "so habe ich es nicht gemeint" abfangen.

Begriffe, die Du nicht zuordnen kannst, wie "allgemeine Module", solltest Du googeln.

VG
Yal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige