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

PQ-M Funktion: Zahlenwerte in Anzahl Zellen umwandeln

PQ-M Funktion: Zahlenwerte in Anzahl Zellen umwandeln
05.02.2024 12:47:14
lippih
Hallo Community,

Dank großer Hilfe von Luschi aber nach kurzzeitiger Resignation möchte ich nun wieder an meiner Tabelle weiter arbeiten, bin aber wieder einmal auf ein Problem gestoßen: Ich habe eine kleine Tabelle, jede Zelle mit Zahlenwerten. Jetzt möchte ich eine Funktion in Power Query schreiben, welche die Zahlen ausliest, die Zeile um diese werte erweitert (Spalten generiert bzw. auffüllt) und in jede neu Zelle den Spaltentitel reinschreibt. Dabei sollen die neue generierten Spalten von links aber immer aufgefüllt werden. Da es etwas schwierig ist, das Vorhaben mit Worten zu erklären, habe ich ein kleines Beispiel angefügt. Dort enthalten die angesprochene Zahlentabelle und daneben habe ich eine Tabelle skizziert, wie das Ergebnis in Power Query aussehen sollte.

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

Vielleicht hat jemand (vielleicht sogar Luschi ;-) ) ein wenig Zeit, sich das mal anzusehen
Vielen Dank und Grüße
lippih

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kann dafür keine PQ-Lösung erstellen, aber ..
05.02.2024 13:54:54
neopa C
Hallo lippih,

... Deine Aufgabenstellung interessierte mich.
Hab eine Weile gebraucht, bis ich die Logik zur Ergebnisdarstellung verstanden hatte. Evtl. könnte ich mir eine Formellösung für Deine Aufgabe vorstellen, die allerdings in meiner älteren XL-Version wahrscheinlich recht aufwendig werden könnte. Deshalb zunächst nur nachgefragt, wieviele Zeilen sind max auszuwerten und wieviele neue Spalten sind ca. max zu erwarten? Unabhängig davon stelle ich den thread wieder offen, damit die PQ-Experten wie u.a. Luschi sich dem annehmen können.

Gruß Werner
.. , - ...
AW: (m)eine Formellösung erstellt in XL-Vers. vor XL365 ...
05.02.2024 17:56:06
neopa C
Hallo lippih,

... weil es mich interessiert hat, ob eine solche möglich ist. In XL365 könnte eine Formelösung einfacher zu defnieren sein. Auf jeden Fall dürfte die kürzer ausfallen.

Nachfolgende aufgezeigte Lösung in XL2010 mit 4 Formeln könnte ich zwar zu einer einzigen zusammenfassen und diese auch noch durch eine kurze benannte Formel ersetzen lasen. Darauf hab ich allerdings der einfacheren Nachvollziehbarkeit wegen verzichtet.

Die Hilfsspaltenformelspalte (hier in Spalte H) kann ausgeblendet werden. Die Formeln H12 und J12 sind weit genug nach unten ziehend zu kopieren, die in J11 nach rechts und die Formel K12 sowohl nach unten und rechts.

Arbeitsblatt mit dem Namen 'Tabelle7'
 ABCDEFGHIJKLMNOPQ
9 Eingangsdaten: HS Ergebnis:      
10                 
11 ABCDE   New_01New_02New_03New_04New_05New_06New_07 
12 00010 1 Dxxxxxxxxxxxxxxxxxx 
13 00000 0 xxxxxxxxxxxxxxxxxxxxx 
14 21000 3 AABxxxxxxxxxxxx 
15 30000 3 AAAxxxxxxxxxxxx 
16 12030 6 ABBDDDxxx 
17 00007 7 EEEEEEE 
18 00100 1 Cxxxxxxxxxxxxxxxxxx 
19                 

ZelleFormel
J11=WENN(ZÄHLENWENN(J12:J20;"?*")=0;"";"New_"&TEXT(SPALTE(A11);"00"))
H12=SUMME(B12:F12)
J12=WENN(ANZAHL(B12:F12)=0;"";WENNFEHLER(INDEX($11:$11;AGGREGAT(15;6;SPALTE($B$11:$F$11)/($B12:$F12>0);1));"xxx"))
K12=WENN(SPALTE(B11)>MAX($H:$H);"";WENN((J12="xxx")+(SPALTE(B11)>$H12);"xxx";WENN(ZÄHLENWENN($J12:J12;J12)WVERWEIS(J12;$B$11:$F12;ZEILE()-ZEILE($B$11)+1;0);J12;INDEX($11:$11;AGGREGAT(15;6;SPALTE($B$11:$F$11)/($B12:$F12>0);1+ZÄHLENWENN($B12:INDEX(12:12;VERGLEICH(J12;$11:$11;0));">0"))))))
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg


Gruß Werner
.. , - ...
Anzeige
AW: tolle Lösung, leider brauche ich PQ
05.02.2024 21:28:59
lippih
Hallo Werner,
ich bin begeistert, was ihr Ecxelexperten so aus dem Ärmel zaubert, und das auch noch in so kurzer Zeit. Ich bin auch etwas verwundert, dass ein einfach geglaubtes Vorhaben am Ende dann doch ziemlich komplex ist.
Leider brauche ich die Lösung tatsächlich in Power Query, da ich einige Dateien als Stapel einlesen muss.

Danke für deine Zeit und dass du deine Lösung geteilt hast!
AW: ... die nur 25'' später von Luschi eingestellt wurde owT
06.02.2024 09:25:28
neopa C
Gruß Werner
.. , - ...
AW: doch nach wie vor ist eine PQ-Lösung gesucht! owT
05.02.2024 17:57:42
neopa C
Gruß Werner
.. , - ...
AW: doch nach wie vor ist eine PQ-Lösung gesucht! owT
05.02.2024 21:29:24
Luschi
Hallo lippih & Werner,

hier mein 1. Versuch 1er PQ-Lösung: https://www.herber.de/bbs/user/166817.xlsx

Gruß von Luschi
aus klein-Paris
Anzeige
AW: wieder etwas mehr verstanden, wenn ich auch ...
06.02.2024 09:17:50
neopa C
Hallo Luschi,

... es selbst morgen nicht ohne nachzuschauen aufstellen könnte. Trotzdem auch mein Dank für Deine Lösung.

Aber nun noch nachgefragt: Was wäre wo und wie noch notwendig, um die "null"-Datenwerte durch einen vorgegebenen Datenwert (im Beispiel war es "xxx") zu ersetzen? Dieses muß ja dynamisch in Abhängigkeit der variablen Anzahl an erstellten Spalten erfolgen.

Gruß Werner
.. , - ...



AW: doch nach wie vor ist eine PQ-Lösung gesucht! owT
06.02.2024 13:25:07
lippih
Danke für diese Lösung Luschi,

ich kann die Schritte gut nachvollziehen, aber alleine wäre ich da wohl nie darauf gekommen (ich denke irgendwie immer an Zeilen anstatt an Spalten ...).

Gibt es eine Möglichkeit, die "Ursprungsdaten" in ihrer Form erhalten zu lassen (wieder expandieren), bzw. wie müsste man deine Lösung umändern, wenn die gezeigte Beispieldatei ein Teil einer Tabelle wäre?

Anzeige
AW: hierzu ist zu beachten, ...
06.02.2024 13:49:30
neopa C
Hallo lippih,

... die Datenquelle muß zwingend immer eine formatierte ("intelligente") Tabelle sein. Wenn nur ein bestimmter Bereich einer "intelligenten" Tabelle entsprechend ausgewertet werden soll, dann muß eben als erstes in der PQ Abfrage die überflüssigen Spalten entfernt werden und die überflüssigen Datenzeilen ausgefiltert werden.

Gruß Werner
.. , - ...
AW: doch nach wie vor ist eine PQ-Lösung gesucht! owT
06.02.2024 14:03:28
Luschi
Hallo lippih,

so richtig verstehe ich nicht, was Du da meinst 'die "Ursprungsdaten" in ihrer Form erhalten zu lassen'. Stelle eine Demodatei mit der Ausgangslage und dem zu erwartenden Endergebnis bereit, dann sehen wir weiter,

Gruß von Luschi
aus klein-Paris
Anzeige
AW: hier nochmal eine Demodatei
06.02.2024 14:41:43
lippih
Sorry Luschi,
meine erste Beispieldatei bezog sich "nur" auf die gewünschte Lösung, wurde aber aus dem Kontext gerissen, wobei der Kontext wohl auch eine Rolle spielt. Hier nochmal eine einfache Beispieldatei, und wie sie nach Bearbeitung in PQ-M aussehen sollte.

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

Grüße
lippih

AW: hier nochmal eine Demodatei
06.02.2024 14:47:19
lippih
Ach, im Eifer der Sache, habe ich Spalten in der letzten Beispieldatei vergessen. Hier nochmal die komplette aber einfache Beispieldatei:

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

Grüße
lippih

Anzeige
AW: nachgefragt ...
06.02.2024 16:11:49
neopa C
Hallo lippih,

... warum beläßt es Du nicht einfach bei der Originalabfrage von Luschi und verschiebst dessen Ergebnistabelle nicht einfach nach L11? Oder muß unbedingt eine komplett neue Tabelle erzeugt werden?

Gruß Werner
.. , - ...
AW: hier nochmal eine Demodatei
09.02.2024 11:29:38
lippih
Einfach Klasse! Das Ergebnis deiner Lösung entspricht zwar nicht ganz genau dem Beispiel, aber ich kann sie gut verwenden denke ich. Besonders die Idee hinter dieser Zeile gefällt mir gut:
#"neue Spalte.2" = Table.AddColumn(#"Entpivotierte andere Spalten", "xxx",
each if _[Wert] is text then {} else Text.ToList(Text.Repeat([Attribut],[Wert]))),

wobei ich den Unterstrich bei _[Wert] nicht ganz genau verstehe, denn [Wert] beschreibt ja schon alle sein Zellen? Noch unverständlicher wird es für mich, dass es auch ohne dem Unterstrich funktioniert. Aber das ist nur ein kleines Detail am Rande.

Bei folgender Funktion brauchte ich auch ein Weilchen, denn ich dachte zuerst, warum macht Luschi das so kompliziert? Tatsächlich habe ich aber keine Text-Funktion gefunden, die Text in einer Liste zählt, deshalb wohl dieser Workaround:
#"n SpN" = (xTable as table) =>
let a1 = Table.RowCount(xTable) -1,
a2 = List.Accumulate(
{0 .. a1},
{},
(st, cur)=> st & {List.Count(Text.PositionOf(xTable{cur}[yyy], "|", Occurrence.All))})
in List.Max(a2) + 1,


Ich möchte dir recht herzlichst danken, dass du dir die Zeit genommen hast, mir hier ein wenig unter die Arme zu greifen, gerne würde ich dir und auch Werner ein Bier, Kaffee oder sonst einen Drink da lassen ...

Anzeige
AW: da wären wir beide sicher nicht abgeneigt ;-) owT
09.02.2024 12:44:05
neopa C
Gruß Werner
.. , - ...
AW: hier nochmal eine Demodatei
09.02.2024 12:50:56
Luschi
Hallo lippih,

das Kennwort 'each' kann man auch so schreiben: (_)=>
Im Rahmen von Table.AddColumn() repräsentiert '_' den aktuellen Datensatz und _[Wert] somit den aktuellen Inhalt der Spalte [Wert] des aktuellen Datensatzes.
Wenn man diesen '_' wegläßt wird der M-Code auch noch richtig interpretiert aber im Hintergrund setzt der M-Compiler diesen Unterstrich.
Da ich lieber den M / C# / Java / Vba -Code mit allen optionalen Parametern schreibe, steht bei mir dieser Unterstrich eben da. Den Hintergrund von 'each' sollte man aber immer im Hinterkopf haben, denn wenn in Table.AddColumn() auch noch List.Transform() eingebettet ist, dann muß man die 2 jetzt vorkommenden each ersetzen gegen (k)=> und (j)=> und mit k[Wert] bzw. List.Trim(j) darauf verweisen: nur auf die 2 'each' zu beharren geht dann einfach in die Error-Hose.

Gruß von Luschi
aus klein-Paris
Anzeige
AW: wenn eine gemeinsame Tabelle entstehen soll, ...
06.02.2024 16:34:42
neopa C
Hallo lippih,

... dann würde ich in der von modifizierten Abfrage (die ich Ergebnis nennen würde) die ersten beiden Spalten einfach löschen und dann diese mit der einer noch zu erzeugenden einfachen Abfrage zur Tabelle 1, welche mit "Nur als Verbindung erstellen" erzeugt wird, dann zusammenführen. Dazu würde ich in beiden Abfragen eine gleiche Indexspalte erzeugen über die die Zusammenführung vorgenommen werden kann, welche dann natürlich abschließend wieder gelöscht wird.

Man kann zwar sicher alles in einer Abfrage bewerkstelligen aber so wie beschrieben ist es zumindest auch möglich.

Gruß Werner
.. , - ...
Anzeige
AW: klingt interessant
06.02.2024 17:10:48
lippih
Hallo Werner,
das klingt interessant, auch wenn ich dein Vorhaben noch nicht ganz verstanden habe. Die Index Spalte würde es vielleicht nicht brauchen, dafür könnte man die Namen in der ersten Spalte verwenden?

Tatsächlich habe ich eine Frage in Petto, als Alternative zu diesem Thread, wo es um die Verbindung 2er Pivotabellen geht, die auf demselben Datensatz beruhen. Da mache ich aber einen neuen Beitrag dafür auf.
AW: natürlich ...
06.02.2024 20:08:40
neopa C
Hallo lippih,

... wäre in Deinem Beispiel der Abgleich auch ohne die zusätzliche INDEX-Spalte einfach über die vorhandenen Namen möglich gewesen. Nur hat man nicht immer die Gegebenheit, daß solche 1:1 so vorhanden sind.


Gruß Werner
.. , - ...
Anzeige
AW: weil..
06.02.2024 16:35:55
lippih
.. die Spalten "Column" zum Datensatz mitgehören. In der "echten" Tabelle werden die Daten in den Spalten A bis F aus den Daten in den "Column"-Spalten in PQ berechnet.
AW: dazu sieh meinen vorherigen Folgebeitrag owT
06.02.2024 16:59:37
neopa C
Gruß Werner
.. , - ...
AW: hierzu ist zu beachten, ...
06.02.2024 13:58:45
Luschi
Hallo Werner,
... die Datenquelle muß zwingend immer eine formatierte ("intelligente") Tabelle sein. 
Diese Aussage stimmt so nicht, PQ kann auch ganz gut mit definierten Bereichsnamen umgehen, also einlesen und weiterverarbeiten.

Gruß von Luschi
aus klein-Paris
AW: da hast Du sicher Recht ...
06.02.2024 14:07:58
neopa C
Hallo Luschi,

... meine getroffene Aussage gilt dann offensichtlich nur für den Standardfall des Einsatzes von PQ, so wie ich ihn bisher kenne und anwende.

Danke Für Deine entsprechende Korrektur. So habe ich wieder etwas gelernt.

Gruß Werner
.. , - ...
AW: kann dafür keine PQ-Lösung erstellen, aber ..
05.02.2024 14:55:05
lippih
Zeilen könnten es so um die 2000 sein, neu zu generierende Spalten maximal 20, falls ich eine PQ-Funktion finde, die die Spalten wie im Beispiel erklärt auffüllt.

Ich denke es läuft in PQ mit einer Mehrfach-Verschachtelung der Funktionen "List.Accumulate" und "List.Transform", ich habe aber große Schwierigkeiten die Zusammenhänge zwischen den Funktionen, Listen, Records, Table und er gewünschten Lösung zu sehen. Erschwert wird es für mich, da es keine direkten Funktionen wie "for", "while", "exit" gibt. Deshalb hoffe ich hier auf ein wenig Hilfe!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige