aber darf ich noch kurz etwas anmerken...
14.10.2023 12:14:42
Christian
Hallo Werner,
ich möchte dir nichts böses, aber ich möchte es trotzdem loswerden.
Ursprünglich hatte ich angefragt, den 30. größten Wert der einen Tabelle zu ermitteln und die andere Tabelle nach größer gleich diesem zu filtern.
Da die erste Tabelle jede Person genau einmal enthält, egal wann sie Geburtstag hat, war das exakt das was ich haben wollte und auch schon seit 10 Jahren in dieser Tabelle nutze. Das einzige was ich wollte ist in Zukunft PQ nutzen damit ich wenn neue Filme dazukommen, mir das nicht immer von Hand zusammensuchen muss. Aber mir war nach 10 Jahren klar, dass dieser Weg genau so funktioniert wie ich es mir wünsche.
Versuche jetzt, das Ganze mit nur einer Tabelle zu lösen, bringt nicht nur meine bisherige Arbeitsweise total durcheinander, sondern auch die ganze Struktur der Mappe.
Auf jeden Fall ist die Abfrage Leute absolut unverzichtbar, sie ist die Datenquelle für alle personenbezogenen Daten, die Tabelle7 zieht sich (mit dem schonmal angesprochenen Makro) die personenbezogenen Daten aus dieser Abfrage, welche wiederum mit einer aus dem Internet heruntergeladenen CSV Datei mit den aktuellsten Daten gepeist wird.
Also die Abfrage Leute ist da und wird auch nicht einzusparen sein und die 30 jüngsten Daten sind auch bereits exakt, die, die ich suche für meinen Filter. Ich weiß jetzt im Moment leider nicht, wo die Notwendigkeit liegt, diese 30 Werte erneut mithilfe der Tabelle7 zu ermitteln.
Vielmehr wenn du mir helfen möchtest, bitte ich dich, dir meine andere Lösung einmal anzuschauen:
let
Quelle = Csv.Document(File.Contents("C:UserschrisDownloadsLeute.csv"),[Delimiter=",", Columns=8, Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
#"Höher gestufte Header" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",{{"Position", Int64.Type}, {"Const", type text}, {"Created", type date}, {"Modified", type date}, {"Description", type date}, {"Name", type text}, {"Known For", type text}, {"Birth Date", type date}}),
#"Sortierte Zeilen" = Table.Sort(#"Geänderter Typ",{{"Description", Order.Descending}}),
#"Hinzugefügter Index" = Table.AddIndexColumn(#"Sortierte Zeilen", "Index", 0, 1, Int64.Type),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügter Index",{"Position", "Const", "Created", "Modified", "Name", "Known For", "Birth Date"}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Entfernte Spalten", each [Index] = 29),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Gefilterte Zeilen",{"Index"}),
Description = #"Entfernte Spalten1"[Description]
in
Description
Ich habe mir die CSV Datei direkt genommen, das Format angepast, damit die Daten in TT.MM.JJJJ da stehen, die Tabelle nach den Daten (Description) sortiert, einen Index zugefügt, nicht benötigte Spalten gelöscht und nach =29 gefiltert und hatte damit die 30 größten Werte.
Als Liste konnte ich es nicht umwandeln, dann gab es irgendeinen Fehler beim Aktualisieren, dass das nicht ging, aber egal hab ich es hat als Abfrage in die Mappe eingefügt.
Dann der Code für Ganze
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle7"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"c", type date}, {"i", type text}, {"f", type date}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Geänderter Typ",{"j", "l", "m", "n", "o", "p"}),
#"Sortierte Zeilen" = Table.Sort(#"Entfernte Spalten",{{"e", Order.Ascending}, {"b", Order.Ascending}}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Sortierte Zeilen", each List.ContainsAny(Liste, {[f]})),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gefilterte Zeilen", "Benutzerdefiniert", each if [c] = null then "MRS " & [b] & " - " & [e] & " (" & Text.From([f]) & ")" else "MRS " & Text.PadStart([i], 5, "0") & " " & [b] & " (" & Text.From([c]) & ") - " & [e] & " (" & Text.From([f]) & ") " & Text.From([g]) & "-" & Text.From([h])),
#"Umbenannte Spalten" = Table.RenameColumns(#"Hinzugefügte benutzerdefinierte Spalte",{{"Benutzerdefiniert", "l"}}),
#"Ersetzter Wert" = Table.ReplaceValue(#"Umbenannte Spalten",":","",Replacer.ReplaceText,{"l"}),
#"Ersetzter Wert1" = Table.ReplaceValue(#"Ersetzter Wert","""","",Replacer.ReplaceText,{"l"}),
#"Ersetzter Wert2" = Table.ReplaceValue(#"Ersetzter Wert1","?","",Replacer.ReplaceText,{"l"}),
#"Ersetzter Wert3" = Table.ReplaceValue(#"Ersetzter Wert2","""","",Replacer.ReplaceText,{"l"}),
#"Ersetzter Wert4" = Table.ReplaceValue(#"Ersetzter Wert3","?","",Replacer.ReplaceText,{"l"})
in
#"Ersetzter Wert4"
Tabelle 7 als Quelle, erst wieder die Zellformate angepasst, nicht benötigte Spalten entfernt, die für diese Abfrage gewünschte Sortierung eingestellt und dann mit #"Gefilterte Zeilen" = Table.SelectRows(#"Sortierte Zeilen", each List.ContainsAny(Liste, {[f]})) den Filter gesetzt, ok, was dann noch folgt hat ja nichts mit meiner Bitte hier zu tun.
Das ist ein Weg, der mich zu meinem Ziel gebracht hat, das einzige was mich stört ist das Filtern dauert und dauert...
Wenn du da noch eine Idee hast wäre das super
Christian