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

Daten aufbereiten

Daten aufbereiten
29.04.2022 09:59:48
Bernhard
Hallo Ihr lieben,
ich bin es mal wieder mit einem Problem bei dem ich mal wieder Unterstützung benötige.
Ich habe einen Export aus unserem ERP System in Excel, siehe https://www.herber.de/bbs/user/152751.xlsx.
Jetzt habe ich das Problem, das ich die Messwerte auswerten muss und dachte, hey ganz easy mit PQ.
Kam direkt der erste Mittelfinger :-), denn spalte trennen funktioniert zwar wenn ich Leerzeichen/Leerzeichen Eingabe aber da die User früher die Daten auch gerne mal anders eingegeben habe bekomme ich nicht alle Spalten sauber getrennt, sodass ich keine auswertbare Datei habe.
Wenn ich dann die Dateien noch mal trenne erzeugt er ja neue Salten, klar würde ich irgendwann ans Ziel kommen mit 10 Umwegen aber ich bin mir sicher, das die Experten hier eine einfache und vor allem schneller Lösung parat haben.
Hat jemand eine Idee, Challenge is open ;-)
Ganz liebe Grüße
Bernhard

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aufbereiten
29.04.2022 10:07:45
onur
Beispieldatei ist ja schön und gut, aber es wäre gut, wenn man auch mal wüsste, wie es hinterher aussehen SOLL.
AW: Daten aufbereiten
29.04.2022 10:17:31
Bernhard
hallo onur,
das hast du vollkommen recht!!!
Das habe ich total vergessen mit anzugeben. Sorry
Die Werte und nur die Werte sollen nebeneinander in einzelnen Zellen stehen.
Also Praktisch so:
A2 B2 C2 D2 E2 F2 G2
Datum / Artikelnummer / Wert 1 / Wert 2 / Wert 3 / Wert 4 / Wert 5
Datum / Artikelnummer / Wert 1
Etc.
Danke noch mal :-)
Beste Grüße
Bernhard
AW: Daten aufbereiten
29.04.2022 11:14:37
Bernhard
Hallo onur,
ja ich habe 365 aber bekomme trotzdem komischerweise bei deiner Formel das _xlfn. gesetzt, was doch dafür steht, das ich eine älter Version verwende welche die Formel nicht unterstützt. Oder?
Bekomme auf den Fehler #Name? wenn ich die Formel weiter runterziehe.
merkwürdig....
Gruß
Bernhard
AW: Daten aufbereiten
29.04.2022 11:15:47
onur
Mache mal die blöde "intelligente" Tabelle weg.
AW: Daten aufbereiten
29.04.2022 11:38:50
Bernhard
Hallo onur,
die Tabelle ist keine Intelligente Tabelle mehr, das hast du scheinbar vorm Hochladen schon geändert.
Komisch ist das ich diesen Fehler auch nur bei der Ergebnisspalte bekomme.
Gruß
Bernhard
AW: Daten aufbereiten
29.04.2022 11:39:47
onur
Kannst du mal posten?
Anzeige
AW: Daten aufbereiten
29.04.2022 11:39:01
onur
Microsoft meint dazu:
Hinweis: Dieses Feature ist nur verfügbar, wenn Sie über ein Microsoft 365-Abonnement verfügen. Wenn Sie Microsoft 365-Abonnent sind, vergewissern Sie sich, dass Sie über die neueste Office-Version verfügen.
AW: Daten aufbereiten
29.04.2022 11:42:25
Bernhard
hmmmm
das kann natürlich sein, da dies über die IT gesteuert wird...
Danke trotzdem, verfolge den Vorschlag von Chris weiter.
Aber gut zu wissen das es diese Möglichkeit jetzt gibt!
Danke dafür und deine Lösungshilfe
Beste Grüße
Bernhard
AW: Daten aufbereiten
29.04.2022 11:40:55
ChrisL
Hi onur
In meinem 365-Business steht die Funktion noch nicht zur Verfügung. Womöglich ist mal wieder ein Update-/Software-Verteilung notwendig, aber darauf habe ich keinen Einfluss (macht die IT).
Die Aufgabe hat übrigens noch ein paar Hürden (z.B. Zeile 154). Abgesehen vom Glätten "/" vs. "_/_"
TEXT_TEXT (nicht trennen)
ZAHL_ZAHL (trennen)
cu
Chris
Anzeige
AW: Daten aufbereiten
29.04.2022 11:44:17
onur
Solange kein Trennzeichen ("/") ist, wird auch nicht getrennt, egal ob Text oder Zahl (ist ja so gesehen sowieso alles Text).
AW: Daten aufbereiten
29.04.2022 11:53:09
ChrisL
ich meine folgendes (Text/Zahl im Sinne von ZEICHEN). z.B.
Zeile 155:
"1,98 1,99 2,00 2,00 1,99"
Zeile 265:
"Büroklammertest bestanden"
Ich gehe davon aus, dass 155 getrennt werden soll, 265 aber nicht. Darum habe ich (sinngemäss) eine ISNUMERIC-Prüfung verwendet. Wenn Zahlen mit Leerzeichen getrennt, dann trennen. Wenn nur Textwerte mit Leerzeichen getrennt, dann nicht trennen.
Hat natürlich sein Grenzen z.B. "i.O. i.O. i.O" würde nicht getrennt werden. Oder ein Gemisch aus Text und Zahlen würde auch nicht gehen.
Bei ungeprüften Nutzereingaben ist generell die Frage, was noch alles für "Sonderfälle" zum Vorschein kommen.
Anzeige
AW: Daten aufbereiten
29.04.2022 11:47:40
onur
Und der Rest ist Pillepalle.
AW: Daten aufbereiten
29.04.2022 10:49:16
ChrisL
Hi Bernhard
Benutzerdefinierte Spalte (Kurzbeschreibung muss Datentyp Text haben):

= if Value.Is(Value.FromText(Text.Replace(Text.Replace([#"Ergebnis-Kurzbeschreibung"]," ","") , ",","")), type number) then Text.Replace([#"Ergebnis-Kurzbeschreibung"]," ",";")  else Text.Replace(Text.Replace([#"Ergebnis-Kurzbeschreibung"]," / ",";"),"/",";") 
cu
Chris

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Wann", type datetime}, {"Artikel", type text}, {"Ergebnis-Kurzbeschreibung", type text}}),
#"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Geänderter Typ", "WertNeu", each if Value.Is(Value.FromText(Text.Replace(Text.Replace([#"Ergebnis-Kurzbeschreibung"]," ",""), ",","")), type number) then Text.Replace([#"Ergebnis-Kurzbeschreibung"]," ",";") else Text.Replace(Text.Replace([#"Ergebnis-Kurzbeschreibung"]," / ",";"),"/",";")),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Hinzugefügte benutzerdefinierte Spalte1", "WertNeu", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"WertNeu.1", "WertNeu.2", "WertNeu.3", "WertNeu.4", "WertNeu.5", "WertNeu.6"}),
#"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"WertNeu.1", type text}, {"WertNeu.2", type text}, {"WertNeu.3", type text}, {"WertNeu.4", type text}, {"WertNeu.5", type text}, {"WertNeu.6", type text}, {"WertNeu.7", Int64.Type}})
in
#"Geänderter Typ1"

Anzeige
AW: Daten aufbereiten
29.04.2022 11:08:16
Bernhard
Hallo Chris,
danke für die Benutzerdefinierte Spalte, das ist schon super aber wo setze ich den darunter stehenden Code ein?
Danke und Gruß
Bernhard
AW: Daten aufbereiten
29.04.2022 11:21:01
ChrisL
Hi Bernhard
Nimm die Beispieldatei und füge den ganzen Code im erweiterten Editor (Code-Fenster) ein.
Oder einfach kurz die paar Schritte durchführen.
- Editor öffnen
- Automatische Typenkonvertierung laufen lassen und manuell nachhelfen, dass die Beschreibung den Typ Text hat
- Benutzerdefinierte Spalte einfügen und die "Formel" einkopieren
- Danach nur noch Text in Spalten, Semikolon getrennt
cu
Chris
Anzeige
AW: Daten aufbereiten
29.04.2022 11:34:22
Bernhard
Hallo Chris,
habe die Schiritte wie oben definiert ausgeführt.
Problem ist, das wenn es Einzelwerte gibt, diese in der Original Spalte verbleiben, sodass ich diese Zelle nicht löschen und somit wieder nicht auswerten kann.
Hast du dafür auch ne idee?
Danke und Gruß
Bernhard
AW: Daten aufbereiten
29.04.2022 12:27:11
Bernhard
Hi Chris,
Danke, da war bei mir wohl ein Fehler drin, passt super!
Vielen Dank für deine Unterstützung.
Hast du eine gute Seite für PQ, wo man mehr über die Funktionen lernen kann? Finde das Tool so mächtig aber man findet vergleichsweise wenig darüber im Netz.
Gefühlt zumindest
Beste grüße
Bernhard
Anzeige
PQ Standard-Funktionen
29.04.2022 13:35:11
ChrisL
Hi Bernhard
Vorweg, auf benutzerdefinierte Funktionen (M-Code) gehe ich nicht ein.
Für die (über 700) Standard-Funktionen verwende ich die Funktionsreferenz:
https://docs.microsoft.com/de-de/powerquery-m/power-query-m-function-reference
Oder ich recherchiere die konkrete Aufgabenstellung im Internet. Öfters werde ich fündig, wenn ich den Bezug zu Tabellenfunktionen mache z.B. "wie geht IsNumeric in Power Query".
Ein weiterer Anhaltspunkt kann sein, erst die Standardfunkionalität anzuwenden und danach den Code zu studieren. Z.B. Spalte, Transformieren, Kürzen ergibt:

Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Abgeschnittener Text" = Table.TransformColumns(Quelle,{{"Spalte1", Text.Trim, type text}}),
Dasselbe als benutzerdefinierte Spalte:

=Text.Trim([Spalte1])
Wichtig scheint mir, dass man erstmal ein Grundverständnis für die Datentypen der Input-Parameter und Rückgabewerte entwickelt, da PQ diesbezüglich ziemlich unverzeihlich ist. Kennt man erstmal den Typ, findet man in der Funktionsreferenz die richtige Kategorie (z.B. Textfunktionen) oder im Netz weitere Infos z.B.
https://svens-excel-welt.blogspot.com/2016/03/nutzliche-text-funktionen-in-power-query.html
Zu den Input-Typen:
Selbstsprechend:
Text, Number, Date, Time, DateTime, Duration
Zusätzlich und wichtig zu differenzieren:
Table, List
Eine List ist eigener Typ, was aus nur einer Spalte bestehen kann. Eine Table kann auch nur eine Spalte haben, aber ist deswegen noch keine List.
Typische Excel-Funktionen wie Summe, Mittelwert, Min, Max etc. erfordern eine List als Input. Eine ganze Tabelle, auch wenn diese nur aus einer Spalte besteht, kann nicht summiert werden.
Weiter die ganzen Typenkonvertierungen z.B.:
Number.FromText (aus Text mach Zahl)
Table.FromList (aus Liste mach Tabelle)
Table.Column (aus Spalte mach Liste)
usw.
Geht natürlich noch weiter z.B. mit Datensatz (Record) Funktionen etc.
cu
Chris
Anzeige
AW: Danke !
29.04.2022 13:49:04
Bernhard
Hallo Chris,
danke für deine Antwort, da muss ich mich mal einfuchsen...
Die Standard Funktonen klappen eigentlich ganz gut und haben mir schon oft ne menge Formelarbeit erspart.
M Code muss man erstmal verstehen, vor allem wenn man mit Coden sowieso nichts am Hut hat... xD
Aber wer nichts probiert, kann auch nicht gewinnen.
Danke nochmal und weiterhin alles Gute
Bernhard
PQ Funktionsreferenz lesen
29.04.2022 13:47:31
ChrisL
Funktionsreferenz:
https://docs.microsoft.com/de-de/powerquery-m/power-query-m-function-reference
Anhand Table.Column, möchte ich noch kurz darauf eingehen, wie die Seite zu lesen ist:
https://docs.microsoft.com/de-de/powerquery-m/table-column

Table.Column(table as table, column as text) as list
Zwei (nicht optionale) Input-Parameter, einmal Typ Table und einmal Typ Text-String. Der Rückgabewert ist vom Typ List.
Verwendung:

Table.Column(
Table.FromRecords({
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"],
[CustomerID = 3, Name = "Paul", Phone = "543-7890"],
[CustomerID = 4, Name = "Ringo", Phone = "232-1550"]
}),
"Name"
)
Ausgabe:

{"Bob", "Jim", "Paul", "Ringo"}
Die praktischen Beispiele fand ich anfangs ziemlich unverständlich, aber eigentlich ist es ganz einfach. :)
Die Verwendung entspricht:

Table.Column(Quelle, "Name")
Folgendes produziert lediglich eine Beispieltabelle. Kann man leicht reproduzieren, wenn man eine neue leere Abfrage nimmt und in der Befehlszeile den Text einkopiert:
Userbild
Abschliessend, die geschweiften Klammen in der Ausgabe implizieren, dass es sich beim Ergebnis um eine List handelt.

{"Bob", "Jim", "Paul", "Ringo"}

Anzeige
AW: PQ Funktionsreferenz lesen
29.04.2022 13:51:50
Bernhard
Werde ich mal ausprobieren, Danke für die viele Mühe!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige