Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen darüberHallo
Ich habe folgendes Problem:
Ich möchte Zellen über eine Formel oder ein Skript in der Spalte „Übergeordnete Liste“ füllen, basierend auf dem nächsten n-1-Wert in der Spalte „Ebene“:
Leere Zelle füllen (Spalte „Parent List“, Zeile 10):
• Gehen Sie in der Zeile mit der leeren Zelle zur Spalte „Ebene“, die den Wert „4“ enthält.
•Berechnen Sie n-1 („3“)
•Suchen Sie die nächste Zeile darüber, die den Wert n-1 (3) enthält, also Zeile Nr. 9. Kopieren Sie das Zeichen (7P61G05) der Materialspalte in eine leere Zelle (Teileliste, Zeile 10):

Füllen Sie alle leeren Zellen entsprechend aus.
Darüber hinaus kann folgender Sonderfall auftreten:
Die Nummerierung verringert sich: Wählen Sie weiterhin die Zeile mit dem Wert n-1 in der Zelle aus

Ich hoffe, dass das jemand lösen kann! Vielen Dank im Voraus,
Matthias
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungDatenmischung und -bereinigungBetreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenNachfolgend finden Sie eine andere Idee, da hier eine etwas andere Methode verwendet wird als bei Jed
Names Default To Here(1);
// format data
dt = Open("$DOWNLOADS\Fill empty cells V2.jmp");
Column(dt, "Desired Column")[10::N Rows(dt)] = ""; // set empty values
Column(dt, "Desired Column") << Set Name("Parent List");
//Column(dt, "Parent List") << Set Each Value( I would suggest creation of new column
dt << New Column("ParentListFixed", Character, Nominal, << Set Each Value(
As Constant(
m_levels = :Level << get values;
m_materials = :Material << get values;
);
If(Is Missing(:"Parent List"n) & !Is Missing(:Level),
level_to_search = :Level - 1;
If(level_to_search > 0,
row_of_interest = Max(Loc(m_levels[1::Row()], level_to_search));
m_materials[row_of_interest];
,
"";
);
,
:"Parent List"n
);
));Betreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenLieber Jed
Großartig, das Skript funktioniert perfekt, wie beabsichtigt! Vielen Dank für die Unterstützung. Dies wird integraler Bestandteil eines Skripts sein, das SAP-Daten in einer Form bereitstellt, die die Daten für Materialverfolgungen zugänglich macht, was in SAP ein Problem darstellt. Mein vorheriges Skript hat JMP bereits im Unternehmen sehr populär gemacht, da es weit verbreitet ist. Vielen Dank auch für den Scripting-Kurs. Das ist definitiv etwas, das ich gerne besser lernen würde.
Also nochmals vielen Dank und liebe Grüße,
Matthias
Betreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenAh, jetzt verstehe ich besser, glaube ich, wonach Sie suchen. Hier ist ein aktualisiertes Skript sowie ein Link zum kostenlosen und hervorragenden Online-Kurs „JMP Scripting“.
/*JMP STATISTICAL DISCOVERY LLC (“JMP”) PERMITS THE USE OF THIS COMPUTER SOFTWARE CODE (“CODE”) ON AN AS-IS BASIS AND AUTHORIZES YOU TO USE THE CODE SUBJECT TO THE TERMS LISTED HEREIN. BY USING THE CODE, YOU AGREE TO THESE TERMS. YOUR USE OF THE CODE IS AT YOUR OWN RISK. JMP MAKES NO REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRIGEMENT, AND TITLE, WITH RESPECT TO THE CODE.
You may use the Code solely as part of a software product you currently have licensed from JMP, JMP’s parent company SAS Institute Inc. (“SAS”), or one of JMP’s or SAS’s subsidiaries or authorized agents (the “Software”), and not for any other purpose. The Code is designed to add functionality to the Software but has not necessarily been tested. Accordingly, JMP makes no representation or warranty that the Code will operate error-free. JMP is under no obligation to maintain, support, or continue to distribute the Code.
Neither JMP nor its licensors shall be liable to you or any third-party for any general, special, direct, indirect, consequential, incidental, or other damages whatsoever arising out of or related to your use or inability to use the Code, even if JMP has been advised of the possibility of such damages. Except as otherwise provided above, the Code is governed by the same agreement that governs the Software. If you do not have an existing agreement with JMP or SAS governing the Software, you may not use the Code.
JMP and all other JMP Statistical Discovery LLC product or service names are registered trademarks or trademarks of JMP Statistical Discovery LLC in the USA and other countries. ® indicates USA registration. Other brand and product names are registered trademarks or trademarks of their respective companies.
*/
Names Default To Here( 1 );
dt = Current Data Table();
row()=10;
For Each Row(
dt,
If( Row() > 1,
n = row(); //temporary row variable for later
look_for_n = :Level[Row()] - 1; //find Level - 1
rows_with_n = dt << get rows where( :Level == look_for_n & row() < n ); //get all rows that match
last_n = rows_with_n[N Items( rows_with_n )]; //get the last of those rows
:Desired Column = Char( :Material[last_n] ); //put into desired column
)
);
Betreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenHallo Jed,
Das ist fantastisch! Vielen Dank für die tolle Unterstützung! Es gibt noch einen kleinen Dollar, vielleicht kannst du das auch lösen?
Das Skript scheint nach der n-1-Zahl weiter unten in der Level-Spalte zu suchen, während es nach der letzten n-1, in diesem Fall Level „3“, suchen sollte, also vor der zu füllenden Zelle! Es wurden also die falschen Zeichen in den Zellen der Zeilen 10 bis 14 verwendet. Ich habe die Spalte „Richtig“ erstellt, in der Sie die korrekt ausgefüllte Zelle sehen können:

Das Skript verwendet die Zeichen „D9844“ aus dem nächsten kommenden Level 3 anstelle von „7P61G05“ aus dem letzten Level 3 vor der entsprechenden Zeile.
Ich werde die JMP-Tabelle hinzufügen.
Danke im voraus und beste Grüsse,
Matthias
Betreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenWenn ich das richtig verstehe, sollte diese JSL das tun, wonach Sie suchen:
/*JMP STATISTICAL DISCOVERY LLC (“JMP”) PERMITS THE USE OF THIS COMPUTER SOFTWARE CODE (“CODE”) ON AN AS-IS BASIS AND AUTHORIZES YOU TO USE THE CODE SUBJECT TO THE TERMS LISTED HEREIN. BY USING THE CODE, YOU AGREE TO THESE TERMS. YOUR USE OF THE CODE IS AT YOUR OWN RISK. JMP MAKES NO REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRIGEMENT, AND TITLE, WITH RESPECT TO THE CODE.
You may use the Code solely as part of a software product you currently have licensed from JMP, JMP’s parent company SAS Institute Inc. (“SAS”), or one of JMP’s or SAS’s subsidiaries or authorized agents (the “Software”), and not for any other purpose. The Code is designed to add functionality to the Software but has not necessarily been tested. Accordingly, JMP makes no representation or warranty that the Code will operate error-free. JMP is under no obligation to maintain, support, or continue to distribute the Code.
Neither JMP nor its licensors shall be liable to you or any third-party for any general, special, direct, indirect, consequential, incidental, or other damages whatsoever arising out of or related to your use or inability to use the Code, even if JMP has been advised of the possibility of such damages. Except as otherwise provided above, the Code is governed by the same agreement that governs the Software. If you do not have an existing agreement with JMP or SAS governing the Software, you may not use the Code.
JMP and all other JMP Statistical Discovery LLC product or service names are registered trademarks or trademarks of JMP Statistical Discovery LLC in the USA and other countries. ® indicates USA registration. Other brand and product names are registered trademarks or trademarks of their respective companies.
*/
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
dt,
If( Row() > 1,
look_for_n = :Level[Row()] - 1; //find Level - 1
rows_with_n = dt << get rows where( :Level == look_for_n ); //get all rows that match
last_n = rows_with_n[N Items( rows_with_n )]; //get the last of those rows
:Desired Column = Char( :Material[last_n] ); //put into desired column
)
);
Betreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenJa natürlich, danke. In der Spalte „Gewünschte Spalte“ habe ich die Zellen aus der Spalte „Material“ kopiert, die das Skript meiner Meinung nach einfügen sollte, abhängig von den Werten in der Spalte „Ebene!“.
Betreff: Füllen Sie leere Zellen basierend auf der Auswertung der unterschiedlichen Wertspalte in den Zeilen obenKönnten Sie eine Datentabelle mit den Daten und einer Spalte bereitstellen, die korrekte Werte enthält?