Power Query: Excel-Tabelle mit Zellformaten einlesen - geht das?
#11
Jupp, Ralf, da hast Du Recht, so ließe es sich auch angehen - damit baue ich in PQ aber das Zahlenformat der Excel-Zelle explizit nach.

Für diese Anwendung wäre das in erster Näherung auch zielführend. Meine Frage war dagegen dahin gerichtet, ohne direkte Nachbildung in PQ flexibel das Zahlenformat aus der Zelle direkt zu extrahieren und damit flexibler zu gestalten. Sollte sich z.B. in der Zukunft zeigen, dass statt "nm" lieber "Å" verwendet werden sollen, die Zahlenwerte somit das 10-fache betragen. PQ würde in der 'festverdrahteten' Umwandlung nach wie vor die Umrechnung in "nm" vornehmen, um den Faktor 10 zu klein...

Wie gesagt - für (fast...? ) jeden Einzelfall lässt sich das in PQ entsprechend nachbauen. Aber diese explizite Dopplung wollte ich gerne vermeiden und automatisch die "richtige" Verrechnung anwenden.

Aber, wie ja einige andere Poster schon dargestellt haben - seeeehr aufwändig – und für meinen Fall definitiv mit Kanonen auf Spatzen geschossen. Ich fürchte, ich werde um eine feste Umwandlung gemäß Deines Vorschlags nicht rumkommen und muss dann mit dem Restrisiko leben, dass es doch mal irgendwann in die Irre geht. Nobody ist perfekt .... oder so ... und "no risk - no fun"...

Gruß und Dank,
RaiSta

(21.02.2023, 21:14)schauan schrieb: 1)
auf den Versuch einer Anmeldung dort im Forum kam leider nix Sad
2)
ein(ig)e Verlinkung(en) mosert mein Virenscanner an Sad

(22.02.2023, 13:28)derHoepp schrieb: benutzerdefinierte Zahlenformate werden in einer Excel-Datei in der styles.xml gespeichert. Dazu wird ein numFmt Element erzeugt, dessen formatCode-Attribut den Formatierungsstring enthält (Achtung, mit HTML-Entitäten).
[....]
Lange Rede, kurzer Sinn:
[....]
Alles in allem also Recht aufwändig und wenig flexibel.

(22.02.2023, 12:48)ws-53 schrieb: Um auch die Formate zu erhalten, könntest du die Datei ja mit einem Makro auslesen und in diesem auch die ETL-Schritte durchführen.

Ich habe eingesehen, dass mein Ansinnen zu extremen Aufwänden führen würde – die in meinem konkreten Fall in keinem sinnvollen Verhältnis zum Ziel ständen. 'Ne schnelle, einfache Lösung gibt's offenbar nicht.

Wenn ich ein Makro dafür schreiben müsste/wollte, wäre das Auslesen der Zelle samt Zahlenformat eine leichte Fingerübung
Code:
Dim z as Range, x as string, y as string
Set z=Visu.Range("B11")
x=z.NumberFormat
y=z.Text
Wenn die Zelle des Interesses die Zelle B11 im Blatt 'Visu' (CodeName!) ist, dann liefert schließlich x das Zahlenformat und y den für den Benutzer sichtbaren Text (also den gemäß Format dargestellten Zellwert)

In VBA somit eine ganz leicht ausführbare Aktivität. Für PQ aber offenbar 'nicht trivia'. Wenn ich nun an bestimmter Stelle in PQ das Makro aufrufen, ggf. noch mit Parameter versehen könnte (welche Zelle ausgewertet werden soll....) und dann wie im Beispiel oben x und y als Rückgabewert erhielte - das wär' 'n Traum....

Nun, so geht's aber (auch) nicht - daher bleib' ich bei der statischen Lösung, wie schon von Ralf angedeutet, und muss sehen, wo ich bleibe...

Danke für Euren Einsatz zu diesem Thema,
RaiSta
 Man(n) ist nie zu alt für die Erkenntnis, dass das bisher Gelernte doch nur bedingt gültig oder auch nur brauchbar ist. 27
Antworten Top
#12
Hallöchen,

trotzdem will ich nochmal meinen Vorschlag zum Export der Datenquelle als csv in Erinnerung bringen. Da muss man kein Zip extrahieren und andere Klimmzüge machen ...
Allerdings muss man die Excel dazu ja auch öffnen und entsprechend könnte man gleich kopieren ...

Wenn Du die Daten allerdings für irgendwen bisher als Excel bereitstellst und der soll die Daten nur für andere Zwecke einlesen, wäre das doch eine akzeptable Variante.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#13
(22.02.2023, 18:15)schauan schrieb: trotzdem will ich nochmal meinen Vorschlag zum Export der Datenquelle als csv in Erinnerung bringen. Da muss man kein Zip extrahieren und andere Klimmzüge machen ...
Allerdings muss man die Excel dazu ja auch öffnen und entsprechend könnte man gleich kopieren ...

Wenn Du die Daten allerdings für irgendwen bisher als Excel bereitstellst und der soll die Daten nur für andere Zwecke einlesen, wäre das doch eine akzeptable Variante.

Danke für Deinen Vorschlag, Schauan,

der Punkt ist, dass in meiner derzeitigen Situation in einem (Netz-)Laufwerk verschiedene Dateien (nennen wir sie 'Variantenberechnungen', aktuell etwas >30 Dateien) liegen, die jeweils für einen bestimmten Prozess die Angaben enthalten, wie die 'unveränderte' Performance aussieht und wie sich für diesen Prozess die Performance jeweils ändert, wenn ich bestimmte Parameter um einen bestimmten Betrag oder Prozentsatz verändere.

In meiner 'Auswerte-Datei' (gewissermaßen mein Front-End) kann ich in einigen Zellen Werte auswählen, die gemeinsam festlegen, welche der Variantendateien in meine Auswerte-Datei geladen werden soll --> das macht meine Abfrage. Anschließend kann ich mit diesen Variantenberechnungen 'bestimmte Dinge' anstellen...

Für diesen Kontext kann ich momentan nicht erkennen, in wie fern mir hier ein CSV-Export helfen würde, da dieser ja mittels VBA erfolgen müsste - oder sehe ich das falsch? Außerdem mache ich mir aktuell zu Nutze, dass in den Variantendateien die relevanten Inhalte als 'intelligente Tabelle' hinterlegt sind, ich somit einfach die jeweilige iT in PQ ansprechen und weiter verarbeiten kann. Das ginge ja verloren, wenn ich einen CSV-Export machte. Aber, vielleicht habe ich Deinen Ansatz auch nur noch nicht richtig verstanden ... ?

Aus diesen 'Varianten-Dateien' wollte ich halt das Zahlenformat auslesen und weiterverarbeiten. Da in der Zukunft die Anzahl an Varianten-Dateien größer werden soll, kann ich derzeit natürlich nicht sagen, was sich da in Zukunft noch tun wird - allerdings kann ich für deren Erstellung 'gewisse Design-Regeln' aussprechen. Damit könnte ich somit 'verwaltungstechnisch' dafür Sorge tragen, dass hier kein Unfug passiert.

Na ja, mal sehen, wie ich letztlich zum Ziel komme

Vielen Dank noch mal für die vielen interessanten Gedanken, Anregungen und Links zum Thema,
ist letzten Endes viel spannender geworden, als ich beim Verfassen vermutet hatte...

RaiSta
 Man(n) ist nie zu alt für die Erkenntnis, dass das bisher Gelernte doch nur bedingt gültig oder auch nur brauchbar ist. 27
Antworten Top
#14
...na ja... da die Quelltabellen ja sowieso intelligente Tabellen sind, könntest Du ja einfach eine Spalte anhängen, in der Du Dir das Format über eine entsprechende Funktion (=format([@Wert]) ausgeben lässt:
Code:
Function format(r As Range) As String
    format = "Format: " & r.NumberFormat & " | Style: " & r.Style
End Function
Beispielausgaben:   
Format: _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_) | Style: Currency
Format: 0% | Style: Percent

Dann könntest Du diese Spaltenwerte zur Auswertung nutzen...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#15
(23.02.2023, 00:17)Ralf A schrieb: ...na ja... da die Quelltabellen ja sowieso intelligente Tabellen sind, könntest Du ja einfach eine Spalte anhängen, in der Du Dir das Format über eine entsprechende Funktion (=format([@Wert]) ausgeben lässt:
Code:
Function format(r As Range) As String
    format = "Format: " & r.NumberFormat & " | Style: " & r.Style
End Function
Beispielausgaben:   
Format: _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_) | Style: Currency
Format: 0% | Style: Percent
Hmm, interessante Idee! Dann müsste ich gewissermaßen alle der Variationsdateien dahingehend überarbeiten, dass sie eine weitere Spalte zum Rechnen bekommen. Da diese Ausgangsdateien von anderen Kollegen stammen, müsste das natürlich auch für alle zukünftigen dieser Dateien 'nachgepflegt' werden...

Im Moment denke ich jedenfalls, dass ich 'mein Anliegen' auf anderem Wege lösen werde - in Anlehnung an Deine frühere Idee. Aber das Thema interessiert mich auf jeden Fall aus technischer Sicht, vielleicht kann ich das in Zukunft dann nutzen.

Gruß und Dank,
RaiSta
 Man(n) ist nie zu alt für die Erkenntnis, dass das bisher Gelernte doch nur bedingt gültig oder auch nur brauchbar ist. 27
Antworten Top
#16
Zitat:Hmm, interessante Idee! Dann müsste ich gewissermaßen alle der Variationsdateien dahingehend überarbeiten,

...naja... eigentlich nicht. Ist ja letzten Endes alles eine Frage der Organisation. Unter der Prämisse, dass alle Variationsdateien strukturell gleich sind und im gleichen Ordner liegen (und die künftigen auch dort landen), könntest Du ja via PQ alle Dateien dieses Ordners einlesen lassen. Oder von mir aus auch nur Einzeldateien (ggf. über Parameterauswahl). Aber, Du bräuchtest nur in dieser einen Zieltabelle die Spalte anzuhängen und diese dann für die weitere Verarbeitung als Quelle nutzen...

PS: Vergiss es... per PQ importieren löst ja nicht das Problem.... ;)
Aber Du könntest Dir trotzdem eine Vorlagendatei erstellen, die die (Singular/Plural) Datei(en) per Makro importiert und dort die Spalte anhängt und diese Tabelle dann mit PQ verarbeiten....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste