Hallo zusammen,
habe folgende Problematik und erhoffe mir, dass mir die Community dabei weiterhelfen kann 🙂 :
ich möchte von einer Spalte die Inhalte bestimmter Zellen löschen und diese mit bestimmten Datensätzen füllen. Folgendes Beispiel:
In der Spalte "A" sollen die Zellen 3070, 3071, 3072 und 3073 mit 000-000 sowie die Zellen 3077, 3078 und 3079 mit der 111-111 befüllt werden.
Am Ende möchte ich folgenden Output haben:
Zur Info: Es handelt sich hierbei um ein Datensatz mit über 5.000 Zeilen. Entsprechend gibt es weitere Zellen, die mit einem Inhalt befüllt werden sollen (Bsp. Zelle A3 bis A6 mit dem Inhalt der Zelle A2 usw.)
Vielen Dank im Voraus.
ZB
Gelöst! Gehe zu Lösung.
Hallo @zbostan,
willkommen in der deutschen Alteryx-Community!
Deine Aufgabe lässt sich relativ mit der Mehrzeiligen Formel (Multi-Row-Formula) umsetzen. Die Formel könnte dann wie folgt aussehen:
Was passiert da?
Wenn der Wert in A null ist oder 000-000 bzw. 111-111, dann soll er genau so bleiben wie er ist, in allen anderen Fällen nehmen wir einfach den Wert aus der vorherigen Zeile.
Solltest du noch mehr Werte wie '000-000' oder '111-111' haben, können wir für diese auch dynamisch eine Liste hinterlegen oder diese mit ihrem Schema erkennen.
Viele Grüße
Alex
Hallo Alex,
vielen Dank für deine schnelle Antwort.
ja, ich habe noch mehrere Werte wie die "000-000" usw. (siehe unten "1789-099"). Wie würde eine solche Liste aussehen?
Viele Grüße
ZB
Hallo @zbostan,
entschuldige bitte die späte Antwort, ich war ein paar Tage verreist.
Deinem anderen Post entnehme ich folgendes:
Für beide Varianten gibt es eine gute Möglichkeit dies in Alteryx abzufragen:
Variante 1: IN-Statement:
If isnull([A]) or [A] IN ('111-111','000-000',...)
then [A]
else [Row-1:A]
endif
In einem IN Statement können wir gegen viele Werte auf einmal prüfen. Wenn A einen davon erfüllt, dann überschreiben wir die folgenden Zahlen.
Variante 2: Regex
If isnull([A]) or Regex_Match([A],'\d{3}-\d{3}')
then [A]
else [Row-1:A]
endif
Hier beschreiben wir dein Schema von "3 Zahlen Bindestrich 3 Zahlen" \d{3} steht dabei für "3 Zahlen" - danach haben wir den Bindestrich und wieder drei Zahlen.
Viele Grüße
Alex
Hallo Alex, vielen Dank für deine Rückmeldung. 🙂
Bei deiner 2. Variante kommt folgende Fehlermeldung (siehe Bild):
"Field 1" stellt in der Übersicht "A" dar. Was habe ich der RegEx Formel falsch dargestellt?
VG
ZB
Hi @zbostan,
du musst die Formel so wie du sie geschrieben hast, in der Multi-Row Formel (mehrzeiligen Formel) eintragen - sorry, dass ich das verpeilt habe zu erwähnen. Wie das aussehen würde, könntest du in meinem vorherigen Post sehen, dort war ein Screenshot davon zu sehen, gerne mache ich dir aber auch nochmal einen mit der aktualisierten Formel falls es Probleme gibt.
Viele Grüße
Alex
Hallo Alex,
ich habe mir deinen Lösungsansatz zunutze gemacht, um bei mir auch leere Zellen zu ersetzen. Im Details sind es leere Felder bei Artikelgrößen.
Die Formel wird zwar erkannt, aber die Anpassung nicht vorgenommen:
Jetzt ist es gut möglich, dass Null nicht gleich Null oder leer ist. Gibt es außer isnull noch andere Optionen leere Zellen zu identifizieren?
Vielen Dank
Andreas
PS: weshalb ich Leerfelder ersetze ist ganz einfach: Ich füge Artikelnummer und Grüße mit einem Trennzeichen zusammen. Bei Artikeln ohne Größen, bleibt dann Trennzeichen und das Ü stehen, das kann ich beiden über den Parser rausschmeißen und habe es sauber :)
Hallo @ASTX,
ich würde in deinem Fall mit "isempty()" arbeiten (statt isnull), alternativ nutze ich manchmal auch "Length([Column]) <= 1" (Felder die eine Länge von 0 oder 1 haben) um diese rauszuwerfen.
Der Fehler in deiner Formel ist, dass du im 'then' Bereich einen Vergleich machst "Ist die Größe = Ü" - Sprich, er wirt dir in leere Zellen immer 0/False reinschreiben, weil du zuvor prüfst ob das Feld leer ist und es daher niemals Ü sein kann.
Wenn du in alle Leeren Felder ein "Ü" reinschreiben willst, dann muss du "[Größe..]" weglassen.
VG Alex
Danke Alex,
ich habe es mit isempty() umgesetzt, das hat funktioniert. Habe mir gedacht, das es nur eine Kleinigkeit ist.
Viele Grüße
Andreas