Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Frage zu PQ

Forumthread: Frage zu PQ

Frage zu PQ
06.12.2024 12:40:16
Armin
Hallo liebe Excel-Freunde,

ich lade zwei Tabellenblätter in den PQ Editor (Mat NR. von, Mat Nr. bis, Bezeichnung) und Materialnummer und Produkt.
Dann erstelle ich eine Abfrage und möchte, wenn die Materialnummer in dem Bereich (Mat NR. von und Mat Nr. bis) liegt,
dass die Bezeichnung eingefügt wird.
Beispiel: zu 234521 Kabel soll Werkzeuge hinzugefügt werden, weil es in dem Bereich 200000 250000 liegt.

Mat NR. von Mat Nr. bis Bezeichnung Materialnummer Produkt Benutzerdefiniert Ziel:
100000 150000 Werkzeuge
200000 250000 Material
250001 300000 Zubehör
234521 Kabel Material
135649 Klemme Werkzeuge
269308 Sicherung Zubehör

Ich habe eine Benutzerdefinierte Spalte eingefügt und vermormet mit:= if [#"Materialnummer "][Mat NR. von] and[#"Materialnummer "]>[Mat Nr. bis] then[Produkt] else null. Leider bekomme ich nur error.

Könnt ihr bitte hefen.

VG Anton
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu PQ
06.12.2024 14:11:02
Yal
Hallo Anton,

fast richtig.
= if [#"Materialnummer "][Mat NR. von] and[#"Materialnummer "]>[Mat Nr. bis] then [Produkt] else null

Du hast ein Mat.Nr und diese soll zwischen "von" und "bis" stehen:
von Mat.Nr bis

Diese 3er-Bedingung ist in zwei 2er-Bedingung zu brechen:
von Mat.Nr und Mat.Nr bis

also
= if [Mat NR. von] [#"Materialnummer "] and [#"Materialnummer "] [Mat Nr. bis] then [Produkt] else null

VG
Yal
Anzeige
AW: Frage zu PQ
08.12.2024 10:31:38
Armin
Hallo Luschi und Case,

Eure Lösungen klappen hervorragend. Sie sind, wie Luschi auch schreibt, eine komplexe Variante um das Problem zu lösen.
Leider zu schwer (für mich) um Veränderungen anzupassen.

Ich hatte gehofft, es geht auch einfacher mit dem einfügen einer Benutzerdefinieren Spalte und mit der if Abfrage von Yal.
(= if [Mat NR. von] [#"Materialnummer "] and [#"Materialnummer "] [Mat Nr. bis] then [Produkt] else null). Aber das ging
leider nicht, ich bekomme einen Error in der Spalte.

Wenn ihr dennoch eine Möglichkeit seht, das mit einer Benutzerdefinieren Spalte zu lösen, würde ich mich über eine Antwort sehr freuen.

VG
Anton


Anzeige
AW: Frage zu PQ
09.12.2024 12:27:08
Yal
Hallo Anton,

ja, ich habe in dem Fall ein bisschen zu einfach gedacht.

Ein Vorgehensweise für PQ-Anfänger könnte so aussehen:
(ich habe dein Tabellen "tblZuordnung" und "tblMaterial" umbenannt. Die Abfragen in PQ übernehmen diesen Namen)

- auf die Abfrage "tblZuordnung",
- filtere die Spalte "Mat Nr. von" mit "kleiner oder gleich als...", gebe 234521 ein,
- filtere die Spalte "Mat Nr. bis" mit "grösser oder gleich als...", gebe 234521 ein,
- rechtsklicke auf dem Inhalt der erste Zelle im Spalte "Bezeichnung" und wähle "Drilldown"
Es ergibt einen Code im "erweiterte Editor" (Menü "Start"), der so aussieht:
let

Quelle = Excel.CurrentWorkbook(){[Name="tblZuordnung"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Mat NR. von", Int64.Type}, {"Mat Nr. bis", Int64.Type}, {"Bezeichnung", type text}}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Geänderter Typ", each [Mat NR. von] = 234521),
#"Gefilterte Zeilen1" = Table.SelectRows(#"Gefilterte Zeilen", each [Mat Nr. bis] >= 234521),
Bezeichnung = #"Gefilterte Zeilen1"{0}[Bezeichnung]
in
Bezeichnung


Ändere an 3 Stellen wie folgt:
- beide "234521" durch "Material" (ohne ", die ich nur hier einführe, um die Lesbarkeit zu sichern)
- vor dem Text die Zeile
let Erg = (Material) =>

eintragen und
- nach dem Text die Zeile
in Erg


Das gesamt sieht dann so aus
let Erg = (Material) =>

let
Quelle = Excel.CurrentWorkbook(){[Name="tblZuordnung"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Mat NR. von", Int64.Type}, {"Mat Nr. bis", Int64.Type}, {"Bezeichnung", type text}}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Geänderter Typ", each [Mat NR. von] = Material),
#"Gefilterte Zeilen1" = Table.SelectRows(#"Gefilterte Zeilen", each [Mat Nr. bis] >= Material),
Bezeichnung = #"Gefilterte Zeilen1"{0}[Bezeichnung]
in
Bezeichnung
in Erg

Die Abfrage zeigt sich mit einem "fx", was deutet, dass wir aus der Abfrage eine Funktion gemacht haben.

in der Abfrage "tblMaterial" fügen wir nach dem letzten Schritt eine Spalte hinzu und zwar durch die Aktion "benutzerdefinierte Funktion aufrufen",
wir rufen die Funktion "tblZuordnung" und übergeben als Parameter die Spalte Materialnummer (ev. der Spaltentyp links davor umstellen. Die Spalte muss aus der Liste der Spalten auswählbar sein).
Fertig.

Nur Noch auf Menü "Datei", "Schliessen & laden in ...", "nur Verbindung erstellen" auswählen,
dann in der Liste der Abfragen rechts die Abfrage "tblMaterial" rechtsklicken und "Laden in..." auswählen, als "Tabelle" an der gewünschten Stelle ausgeben lassen.

VG
Yal

Anzeige
AW: Frage zu PQ
06.12.2024 16:57:05
Armin
Hallo Yal,

vielen Dank für Deine Antwort und dass du dir das angeschaut hast.
Es klappt leider noch nicht, ich bekomme einen Error.
Vielleicht habe ich das Problem falsch beschrieben,
ich lade die Datei mal hoch.

Kannst du bitte noch mal reinschauen.

VG
Anton



https://www.herber.de/bbs/user/174148.xlsx
Anzeige
AW: Frage zu PQ
10.12.2024 11:01:10
Armin
Hallo Yal,

vielen Dank für deine Lösung, habe es nach ein paar mal probieren hinbekommen.

Auch nochmals vielen Dank an Luschi und Case.

VG
Anton
Im Anhang habe...
06.12.2024 17:42:54
Case
Moin, :-)

... ich dir eine Möglichkeit dargestellt: ;-)
https://www.herber.de/bbs/user/174149.xlsx

Servus
Case
Anzeige
AW: Im Anhang habe...
06.12.2024 21:23:24
Luschi
Hallo Case,

wenn in 1 PQ-Schritt 2 'each' auftauchen löse ich diese so auf:
(k)=> bzw. (j)=>
TabAddC = Table.AddColumn(TypeC2, "Bezeichnung", (k)=> 

let
MatNum = k[Materialnummer],
Match = Table.SelectRows(TypeC1,
(j)=> MatNum >= j[Mat NR. von] and MatNum = j[Mat Nr. bis]
)
in
if Table.IsEmpty(Match) then null else Match{0}[Bezeichnung]
)

Gruß von Luschi
aus klein-Paris
Anzeige
AW: Im Anhang habe...
09.12.2024 11:02:36
Armin
Hallo Zusammen,

die Lösungen von Luschi und Case klappen hervorragend.

Sie sind, wie Luschi auch schreibt, eine komplexe Variante um das Problem zu lösen. Leider zu schwer (für mich) um Veränderungen anzupassen.

Ich hatte gehofft, es geht auch einfacher mit dem einfügen einer Benutzerdefinieren Spalte um der if Abfrage von Yal. Leider bekam ich einen Error.
(if [Materialnummer] >= [Materialnummer von] and [Materialnummer] = [Materialnummer bis] then [Bezeichnung] else null)

Vielleicht könnt Ihr euch das unter dem Aspekt der Benutzerdefinieren Spalte und einer If Abfrage nochmal anschauen.

VGA
Anzeige
AW: Frage zu PQ
06.12.2024 19:10:19
Luschi
Hallo Armin,

und hier mal meine PQ-Variante: https://www.herber.de/bbs/user/174150.xlsx

Gruß von Luschi
aus klein-Paris

PS: in beiden PQ-Varianten (von Case und mir sind erweiterte PQ-M-Kenntnisse erforderlich, da das PQ-Editor-Menü für so was kaum Unterstützung bietet
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18