Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Powerquery - Text ersetzen und Dauer
#1
Ich importiere mit Hilfe von PQ meine wöchentliche Telefonliste. Diese möchte ich natürlich auch auswerten.

Wie kann ich die Telefonnummern alle gleich formatieren? 95% der Nummern sind im Format +4912398765 einige wenige aber im Format 012398765. Wie kann ich nun in PQ wenn eine "0" am Anfang der Telefonnummer steht, diese durch "+49" ersetzen lassen?

Ich habe außerdem eine Spalte mit dem Wert Dauer in der Form "00:12:21". Ich möchte alle Telefonnummern gruppieren, die Anzahl und die Gesamtdauer ausgeben lassen. Das Zählen der Anrufe klappt ohne Probleme, wenn die die Dauer addiere gibt es ab zwei Anrufe einen Error! Wo muss ich hier drehen?

Excel 365, macOS

Danke!

O.
Antworten Top
#2
Zur ersten Frage: 
Code:
if Text.Start([TelNr],1)="0" then "+49" & Text.Middle([TelNr],1,Text.Length([TelNr])-1) else [TelNr]
Zur zweiten kann man ohne Beispieldaten, wo der Fehler (welcher überhaupt, das wird nicht spezifiziert ) auftritt, nur raten.

PS Du hast einen Mac, richtig? Wusste nicht, dass dort PQ verfügbar ist.
Aber ist wohl so  Importieren und Strukturieren von Daten in Excel für Mac (Power Query) - Microsoft-Support
Antworten Top
#3
Als Beispiel:

Telefon Dauer
+49123 00:00:01
+49123 00:05:05
+49890 00:00:01
+49890 00:05:05
+49090 00:00:01
+49123 01:05:05

Soll ergeben:

Telefon Gesamtdauer Anzahl
+49123 01:10:11 3
+49090 00:00:01 1
+49890 00:05:06 2

Ich hoffe jetzt ist es verständlicher Smile
Antworten Top
#4
Und wie lautet der Fehler?
Antworten Top
#5
(24.02.2024, 11:37)Warkings schrieb: Zur zweiten kann man ohne Beispieldaten, wo der Fehler (welcher überhaupt, das wird nicht spezifiziert ) auftritt, nur raten.

Das ist der berühmte unspezifizierte Fehler.


Angehängte Dateien Thumbnail(s)
   
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#6
Mein Ergebnis
   

ChatGPT schlägt folgendes vor
Zitat:1. Formatierung der Telefonnummern:
Du kannst die Funktion "Ersetzen" in PQ verwenden, um die "0" am Anfang der Telefonnummern durch "+49" zu ersetzen. Hier ist ein Beispiel-Code:

Code:
= Table.TransformColumns(
    DeineQuelltabelle,
    {
        {"Telefonnummer", each if Text.StartsWith(_, "0") then "+49" & Text.From(Number.RoundDown(Number.FromText(_))) else _}
    }
)


Dieser Code prüft, ob die Telefonnummer mit "0" beginnt. Wenn ja, wird die "0" durch "+49" ersetzt.

Funktioniert auch (natürlich nicht via Copy & Paste !!!)

Und 
Zitat:2. Gruppierung und Summierung der Dauer:
Du kannst die Funktion Group By in PQ verwenden, um die Telefonnummern zu gruppieren und dann die Summe der Dauer zu berechnen. Hier ist ein Beispiel-Code:

Code:
= DeineQuelltabelle
  |> Group By("Telefonnummer", {"Anzahl", each Table.RowCount(_), Int64.Type}, {"Gesamtdauer", each List.Sum(Duration.FromText(_[Dauer]))})
Dieser Code gruppiert die Tabelle nach der Spalte "Telefonnummer" und berechnet die Anzahl der Anrufe sowie die Gesamtdauer
Dürfte auch funktionieren.

Auf jeden Fall gibt ChatGPT hier die richtigen Hinweise und mit etwas Sachverstand sollte man zum Ergebnis kommen.
Antworten Top
#7
Der Fehler lautet:

   
Antworten Top
#8
Schau Dir den Begriff Datentyp wie Duration an, bereite in Deinem uns unbekannten M-Code die Spalten so vor, dass Du sie für die gewünschten Operationen nutzen kannst.
Duration functions - PowerQuery M | Microsoft Learn

Noch ein Hinweis von ChatGPT
Zitat:Entschuldige den Fehler. Um die Dauer korrekt zu summieren, müssen die Dauerwerte zuerst in Minuten umgewandelt werden. Hier ist eine aktualisierte Version des Codes:

Code:
= DeineQuelltabelle
  |> Group By("Telefonnummer",
              {"Anzahl", each Table.RowCount(_), Int64.Type},
              {"Gesamtdauer", each Duration.FromText(_[Dauer]) / #duration(0, 0, 1, 0)})
In diesem Code wird die Duration.FromText-Funktion auf die Spalte "Dauer" angewendet, und das Ergebnis wird durch #duration(0, 0, 1, 0) geteilt, um die Dauer in Minuten umzuwandeln. Dadurch kannst du die Dauerwerte erfolgreich summieren.
Geht zwar in die falsche Richtung, aber mit etwas NI (=natürlicher Intelligenz) sollte man den richtigen Weg finden.
Antworten Top
#9
=GLÄTTEN(WECHSELN(" "&A1;" 0";"+49"))
Antworten Top
#10
(24.02.2024, 11:52)Warkings schrieb: Mein Ergebnis


ChatGPT schlägt folgendes vor

Funktioniert auch (natürlich nicht via Copy & Paste !!!)

Und 
Dürfte auch funktionieren.

Auf jeden Fall gibt ChatGPT hier die richtigen Hinweise und mit etwas Sachverstand sollte man zum Ergebnis kommen.

Und wo gebe ich das ein?
Antworten Top


Gehe zu:


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