Posts

Posts mit dem Label "List Funktionen" werden angezeigt.

Power Query, Bewertungsmatrix, Abweichung zu Vergleichsprodukt

Bild
Bewertungsmatrix (Produkte mit Eigenschaften und Ausprägungen) mit einem Produkt vergleichen Lern Video 1 Benutzereingabe (Produkt 1, Produkt 2 usw) als Arbeitsmappenabfrage abbilden Verweis: Werte einer Zelle als Arbeitsmappenabfrage abbilden siehe Power Query / benannte Bereiche  2 Tabelle Bewertungsmatrix als benutzerdefinierte Tabelle formatieren und anschließend     als Arbeitsmappenabfrage abbilden 3 neue, leere Arbeitsmappenabfrage erstellen und folgenden Language M Code kopieren: --- SCHNIPP --- let     Quelle = Vergleichsmatrix,     Gruppierte_Summe_Wert = Table.Group(Quelle, {"Attribut"}, {{"Summe_Produkt", each List.Sum([Wert]), type number}}),     Sortierung_Abst_Summe_Produkt = Table.Sort(Gruppierte_Summe_Wert,{{"Summe_Produkt", Order.Descending}}),     IndexSpalte_Rang = Table.AddIndexColumn(Sortierung_Abst_Summe_Produkt,"Rang",1 ),     Bewertung = Table.RenameColumns(IndexSpalte_Rang,{{"Attribut", "Produkt"}...

Power Query, massenhaftes Suchen und Ersetzen, List.Accumulate()

Bild
 Lern Video 1 Tabelle [Text], [Find_Replace] als Power Query Abfrage abbilden 2 benutzerdefinierte Spalte hinzufügen (Abfrage Text) = List.Accumulate(     List.Numbers(0, Table.RowCount(Find_Replace)),      [Text],      (state, current) =>          Text.Replace(state,              Find_Replace[Find]{current},             Find_Replace[Replace]{current})) Quelle https://chandoo.org/wp/multiple-find-replace-list-accumulate/ massenhaftes Suchen und Entfernen von Textteilen aus Text --- SCHNIPP --- fxTextBereinigen (input as text, removeWords as list) as text => let     inputText = input,     wordsToRemove = removeWords,     removedText = List.Accumulate(wordsToRemove, inputText, (text, word) => Text.Replace(text, word, "")) in     removedText --- SCHNAPP -- zB Liste removeWords = {"Ffm","Ffm."} neue benutzerde...

Power Query, benutzerdefinierte Funktion fxZufallszahl

Bild
Lern Video   neue Abfrage erstellen, unten stehenden Language M Code einfügen und Abfrage in fxZufallszahl umbenennen --- SCHNIPP --- let fxZufallszahl = (Tabelle as table, Minimum as number, Maximum as number) => let     Index = Table.AddIndexColumn(Tabelle, "Index", 0, 1, Int64.Type),     ZufallFaktor = Table.AddColumn(Index, "ZufallFaktor", each List.Random(Table.RowCount(Index)){[Index]}),     ListMax = Table.AddColumn(ZufallFaktor, "Werte", each List.Max({Minimum .. Maximum})),     Zufallszahl = Table.AddColumn(ListMax, "Zufallszahl", each Number.RoundDown([ZufallFaktor]*[Werte])),     Aufraeumen = Table.RemoveColumns(Zufallszahl,{"Index", "ZufallFaktor", "Werte"}) in     Aufraeumen,     documentation = [     Documentation.Author ="Sven Galonska : http://svens-excel-welt.blogspot.com/",     Documentation.Name = "Zufallszahlen in einem angegebenen Bereich generieren",     Docu...

Power Query, Tabelle auf Basis einer Liste filtern

Bild
  Tabelle Buchstabe, Filter als Arbeitsmappenabfrage abbilden Tabelle Filter in eine Liste konvertieren Tabelle Filter, Schritt hinzufügen: = Table.ToList(Quelle) Tabelle Buchstabe, Schritt hinzufügen = Table.SelectRows(Quelle, each List.ContainsAny(tbl_Filter, {[Buchstabe]})) Beispiel Arbeitsmappe zum Download Lern Video

Power Query, Alle Spalten einer Tabelle durchsuchen

Bild
  1 Tabelle in eine Liste von Listen aufteilen wobei jede Liste alle Felder einer Zeile enthält =Table.ToRows(Source) 2 Liste in einer Liste kombinieren, bedeutet, man hat alle Felder der Tabelle in einer großen Liste =List.Combine(Table.ToRows(Source)) 3 Überprüfen, ob diese Liste den gesuchten Text beinhaltet =List.Contains(List.Combine(Table.ToRows(Source)), "Zahnrad") Anwendung (Praxis Beispiel) Suche alle Datensätze (Lieferanten), bei welchen in irgendeiner Spalte (der Tabelle) die Warengruppe Zahnrad beinhaltet ist Ausgangstabelle Tabelle nach [Lieferant] gruppieren und neue benutzerdefinierte Spalte( [check]) hinzufügen = List.Contains(List.Combine(Table.ToRows([Warengruppen])), "Zahnrad") Spalte [check] auf Element TRUE filtern Beispiel Arbeitsmappe Quelle  https://www.thebiccountant.com/ https://www.thebiccountant.com/2019/04/30/table-containsanywhere-function/#more-4044 Lern Video

Power Query, abhängige Attribute eines Merkmals vergleichen,List.Difference

Bild
Ausgangslage 2 Tabellen, Spalten [Attribut1] ... [AttributN] sind abhängig von Spalte [Merkmal] Aufgabe: Ermittlung der Differenz beider Tabellen, anders formuliert: Unterscheiden sich die Spalteninhalten [Attribut1] ... [AttributN] beider Tabellen ? Und wenn ja, welche abhängigen Spalten sind es ? 1 Tabellen [Liste1] und [Liste2] als Arbeitsmappenabfrage abbilden 2 Entpivotieren Reiter [Transformieren] -> Spalten entpivotieren -> andere Spalten entpivotieren (Spalte [Merkmal] ist markiert) Anders formuliert: die Spalten [Attribut1] ... [AttributN] und deren [Wert] werden transponiert, Spalten werden in Zeilen gewandelt 3 Spalten [Attribut] und [Wert] in neuer Spalte zusammenführen [Zusammengeführt] 4 nach Spalte [Merkmal] gruppieren, Option [Alle Zeilen]   screenshot siehe folgenden Blog Beitrag  und / oder hier (Abschnitt [alternativer Ansatz])   Spalte [Zusammengeführt]  des Table Objekts in List Objekt (Alle Spalteninhalt...

Power Query, Spaltennamen von Quelldaten in benutzerfreundliche Spaltennamen umbenennen, List.Zip

Bild
Phase 1 - Vorbereitung Quell - Ziel Felder Struktur (Spaltennamen) 1.1 Datenquelle über Excel Power Query anbinden zB SAP Export Daten, Text Datei, Tab getrennt angewendete Schritte := [Quelle] = Csv.Document(File.Contents("D:\Projekte\SAP\Daten\SAP_Export.txt"),[Delimiter=" ", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]) 1.2 Liste (Listobjekt) mit Spalten der Datenquellenstruktur erstellen angewendete Schritte := [Liste_Quellfelder] = Table.ColumnNames(Quelle) Exkurs: Anzahl Spalten der Quelldaten ermitteln = List.Count(Table.ColumnNames(Quelle)) 1.3 in Tabelle konvertieren, Spalte in [Quell_Feld] umbenennen Language M Code --- SCHNIPP --- let     Quelle = Csv.Document(File.Contents("D:\Projekte\SAP\Daten\SAP_Export.txt"),[Delimiter=" ", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]),     Liste_Quell_Felder = Table.ColumnNames(Quelle),     #"In Tabelle konvertiert...

Power Query, Objekttypen Skalar, List, Table, Record

Bild
Ergebnis: Skalarer Wert Kalkulation eines skalaren Werts, im Beispiel die zeilenweise Summe der Werte [Wert1], [Wert2] Ergebnis: List Kalkulation einer Liste von Werten, im Beispiel eine Liste der Werte von [Wert1] bis [Wert2] Ergebnis: Table Kalkulation einer Tabelle, im Beispiel Tabelle mit Spalte [Column1] und den Werten [Wert1], [Wert2] #table Objekt Language M = #table({"Spalte1","Spalte2"},{{"erste Zeile Spalte 1","erste Zeile Spalte 2"},{"zweite Zeile Spalte 1","zweite Zeile Spalte 2"}}) = #table(type table [Spalte 1 = text, Spalte 2 = text],{{"erste Zeile Spalte 1","erste Zeile Spalte 2"},{"zweite Zeile Spalte 1","zweite Zeile Spalte 2"}}) Ergebnis: Record Kalkulation eines Records, im Beispiel ein Record mit den Feldern [Feld1], [Feld2] und den Werten aus Spalten [Wert1], [Wert2] Excel kennt 3 Objekttypen, Tabellenblätter (Sheet), Tabellen (T...

Power Query, List.Accumulate, For-Next Schleifen

Mit List.Accumulate() kann eine For-Next Schleife mit der Sprache Language M erstellt werden. Eine For-Next Schleife ist eine Schleifen-Anweisung, mit deren Hilfe eine darin enthaltene Anweisung eine festgelegte Anzahl von Malen wiederholt / ausgeführt wird. Die Anzahl der Ausführungen ist somit vor dem Start der Ausführung bekannt bzw. berechenbar. In Visual Basic for Applications sieht eine For-Next Schleife wie folgt aus: For counter = start to end       [Anweisung(en)] Next counter Ein ähnliches Verhalten kann mit List.Accumulate() erzeugt werden. Die Syntax lautet dabei wie folgt: List.Accumulate( list as list , seed as any , accumulator as any ) as any Parameter 1 list Als ersten Parameter erwartet die Funktion eine Liste. Hier wird über die Anzahl der Listen Elemente die Anzahl der Schleifendurchläufe festgelegt. Parameter 2 seed seed ist der Startwert der Schleife. Da er (seed) vom Typ Any ist, kann er neben Zahlen beliebige andere Werte (Tabl...

Power Query, eindeutige Werte in einem Feld ermitteln List.Distinct, List.Objekt

Bild
eindeutige Werte in einem Feld ermitteln (Dubletten entfernen) 1 Listobjekt erstellen benutzerdefinierte Spalte hinzufügen [Column1] = Text.SplitAny ([Kreditor],",") -> List.Objekt wird erzeugt 2 eindeutige Werte ermitteln benutzerdefinierte Spalte hinzufügen [Ergebnis eindeutige Werte] =List.Distinct([Column1]) 3 [Auf neue Zeilen ausweiten] oder [Werte extrahieren] (Trennzeichen kann ausgewählt werden)

Power Query, die letzten N Spaltenbeschriftungen dynamisch ändern

Im Beispiel wird eine formatierte / intelligente Excel Tabelle (shortcut STRG-T) als Quelle verwendet (Tabellenname = Tabelle1), um eine Methode aufzuzeigen, mit deren Hilfe man dynamisch die letzten N Spaltenbeschriftungen ändern kann: --- SCHNIPP --- let     Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],     NewNames = {"LastBut1Col", "LastCol"},     CurrentNames = List.LastN(Table.ColumnNames(Source),2),     RenameList = List.Zip({CurrentNames,NewNames}),     RenamedColumns = Table.RenameColumns(Source,RenameList) in     RenamedColumns --- SCHNAPP --- weiterführende Informationen siehe hier

Power Query, Listen

Bild
In Excel wird häufig mit Listen gearbeitet, Listen aus Nummern, Buchstaben, Datumswerten usw. Mit Power Query können Listen mit Einträgen sehr einfach erstellt werden. Hierzu eine neue Abfrage erstellen und in der Funktionsleiste (fx) die gewünschte Funktion hinterlegen. Bei Bedarf können diese mit einem Klick in eine Tabelle konvertiert werden Liste mit fortlaufenden Zahlen Liste mit Buchstaben Liste mit Datumswerten Liste mit Datumswerten, List.Dates Liste mit Zahlen, Inkrement Liste mit Zahlen (wiederholend) bei Bedarf siehe weiterführende Informationen hier Spalten einer Tabelle in eine Liste konvertieren --- SCHNIPP --- let     Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],     Spaltennamen = Table.ColumnNames(Quelle),     Liste = "{" & Text.Combine(List.Transform(Spaltennamen, each """" & _ & """"), ",") & "}" in     Liste -...