Bedingte Formeln und Freitext in derselben SpalteIch erstelle eine Datentabellenvorlage, die von anderen verwendet und an mich übermittelt werden soll. In einigen Fällen sind die Daten in ColB eine Funktion von ColA, aber es gibt Bedingungen, unter denen dies nicht zutrifft. Ich möchte dem Einreicher das Leben leichter machen, indem ich ColB automatisch (mithilfe einer Formel) ausfülle, sobald ColA eingegeben wird, ihm aber dennoch die Möglichkeit gebe, eine benutzerdefinierte Zeichenfolge in ColB einzugeben, wenn sein ColA-Eintrag nicht in die vordefinierte Beziehung passt . Gibt es eine Möglichkeit, dies zu erreichen? Ich hatte naiv gehofft, dass das Leerlassen der „else“-Bedingung in meiner if-Anweisung dies ermöglichen würde, aber ich habe mich geirrt.
Bonus: Es wäre sogar noch besser, wenn ich zusätzlich zu all diesen Funktionen auch Listenprüfungen verwenden könnte (da es für ColB immer noch nur eine festgelegte Liste akzeptabler Werte gibt), aber JMP hat bereits Fehler ausgegeben, die mir mitteilen, dass ich keine Werte hinzufügen kann eine Formel über einer Listenprüfung (was meiner Meinung nach sinnvoll ist, da eine Formel und ein freier Text nicht nebeneinander existieren können).
Ich habe den Verdacht, dass ich zu viel mit einer einfachen Tabelle erreichen möchte und wahrscheinlich ein ausgefalleneres Eingabeformular benötige, um das alles hinbekommen zu können. Aber ich wollte es nur überprüfen, bevor ich diesen Weg beschreite. Vielen Dank im Voraus.
Betreff: Bedingte Formeln und Freitext in derselben SpalteAhh, ich verstehe! Geben Sie die Formel „Farbe“ in die Spalte „Material 2“ ein, wenden Sie sie jedoch auf die Spalte „Material (falls erforderlich)“ an, in der die Listenprüfung erfolgt. Viel besser! Ich habe versucht, die Formel in die Spalte „Material (falls erforderlich)“ einzufügen. Tolles Zeug!
Betreff: Bedingte Formeln und Freitext in derselben SpalteJa, Sie können die Zelle der anderen Spalte einfärben. Die Formel ist etwas komplizierter und Sie müssen die Farbe bei Bedarf hinzufügen und bei Bedarf entfernen (falls sie bereits hinzugefügt wurde).
Match( :Furniture Type,
"Bed",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Chair", "Wood",
"Sofa",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Table", "Metal"
)Betreff: Bedingte Formeln und Freitext in derselben SpalteDanke, @Peter_Hersh ! Entschuldigung, ich hatte Mühe, es sehr gut zu erklären. Ich denke jedoch, dass Jeffs Vorschlag funktionieren sollte. Ich schätze Ihren Beitrag sehr!
Betreff: Bedingte Formeln und Freitext in derselben SpalteDanke, @Jeff_Perkinson ! Ich denke, dass dies eine gute Implementierung ist, da die Anweisungen automatisch ausgefüllt werden, wenn der Benutzer den Inhalt für eine bestimmte Zeile von links nach rechts ausfüllt. Ich hätte darüber nachdenken sollen, Anweisungen in eine Formel einzubauen.
Wenn es möglich wäre, die Zellen in der Spalte „Material (falls erforderlich)“ basierend auf den Werten in der Spalte „Material 2“ automatisch einzufärben, wäre ich ganz Ohr. Ich habe versucht, dies mit einer Formel umzusetzen, aber dann konnte ich die Listenprüfung in der Spalte „Material (falls erforderlich)“ nicht beibehalten. Auf diese Weise könnte ich einfach einen Farbindikator für eine Zelle verwenden, die ausgefüllt werden muss, und die Spalte „Material 2“ vollständig vor dem Eingabegerät verbergen (da er die Ausgabe „Material 2“ nicht sehen muss).
Betreff: Bedingte Formeln und Freitext in derselben SpalteDanke, @DonMcCormack ! Ja, Row States stand auf meiner Liste der Dinge, die ich lernen sollte. Danke, dass du mich darauf hingewiesen hast. Ich werde es mir ansehen.
Betreff: Bedingte Formeln und Freitext in derselben Spalte@Matt_Converse , ich denke, die Art und Weise, wie ich damit umgehen würde, ist, dass der Benutzer zwei Spalten ausfüllen muss, eine für (unter Verwendung Ihres Beispiels oben) Möbeltyp und eine andere für Material, und dann würde Ihre Formelspalte Ihre Suche nach den Möbeltypen verwenden, die Sie kennen. und die Spalte „Material“ für diejenigen, die nicht vorhanden sind.
In Ihrer Formel können Sie prüfen, ob die Spalte „Material (falls erforderlich)“ ausgefüllt ist oder nicht, und den Benutzer darauf hinweisen, dass er diese ausfüllen muss. Sie können auch eine Listenprüfungseigenschaft für die Spalte „Material“ verwenden.

Betreff: Bedingte Formeln und Freitext in derselben SpalteHallo Matt,
Es kann sinnvoll sein, kurz anzurufen. Möglicherweise verstehe ich nicht ganz, was Sie erreichen wollen.Kontaktieren Sie mich gerne unter peter.hersh@jmp.com
Sie können ganz einfach ein einziges Skript erstellen, das alle diese Spalten-zu-Spalten-Beziehungen auf einmal erstellt.Es sei denn, es gibt einen Grund, warum dies getan werden muss.
Betreff: Bedingte Formeln und Freitext in derselben Spalte@Matt_Converse Sie könnten einen Blick darauf werfen, den Row State Handler in Verbindung mit einer Funktion zu verwenden, die die Spalte von Interesse überprüft und aktualisiert. Dies wäre etwas knifflig, da der Row State Handler jedes Mal ausgeführt wird, wenn sich ein Zeilenstatus ändert, und dabei die Zeilennummer(n) der ausgewählten und nicht ausgewählten Zeilen übergibt. Sie müssten wahrscheinlich Bedingungen hinzufügen, um sicherzustellen, dass die Funktion nur unter bestimmten Umständen ausgeführt wird (z. B. wenn der Wert in der Zielspalte geändert wird). Der Vorteil besteht darin, dass Sie die Verwendung einer Funktion oder eines Werts zur Überprüfung der Zielspalte vermeiden müssen. Beispiele finden Sie im Scripting-Index und in der Dokumentation.
Betreff: Bedingte Formeln und Freitext in derselben SpalteDanke, @Peter_Hersh ! Ich hatte nicht darüber nachgedacht, Recode zu verwenden. Ich stelle mir jedoch einige Herausforderungen vor, da mein Datensatz (und mein „Kunden“-Workflow) komplexer ist, als ich angedeutet habe:
1. Eine ganze Datenzeile wird eingegeben, bevor eine zweite Zeile hinzugefügt wird. Daher müsste das Skript (wenn auch eine einfache Wiedergabeschaltfläche) für jede Zeile ausgeführt werden, und ich muss einige Zeilen hinzufügen, damit zuvor eingegebener Nicht-Fragezeichen-Text nicht überschrieben wird (was meiner Meinung nach machbar ist).
2. Es gibt mehrere Spalten-zu-Spalten-Beziehungen, bei denen ich diese Funktion nutzen möchte (z. B. zwischen ColA und ColB sowie zwischen ColC und ColF usw.), sodass der Benutzer das Skript mehrmals ausführen muss Zeiten für eine bestimmte Zeile sowie wissen, wann das Skript abgespielt werden soll usw., was etwas umständlich erscheint. Alternativ könnte ich die Spalten neu anordnen (ColA, ColC, ColB usw.) oder den Benutzer bitten, von ColA zu ColC usw. zu springen, damit das Skript nur einmal pro Zeile ausgeführt werden kann, aber diese Optionen klingen auch nicht sehr benutzerfreundlich .
Wenn Sie der Meinung sind, dass „Neukodieren“ meine beste Problemumgehung ist, werde ich es wahrscheinlich versuchen. Danke für deinen Beitrag!
Betreff: Bedingte Formeln und Freitext in derselben Spalte@Matt_Converse Haben Sie versucht, Recode zu verwenden?In Ihrem Beispiel wäre ein Stuhl aus Holz und das Bett wäre leer.Sie könnten ein schnelles Skript ausführen, um diese Neukodierung auszuführen, und dann eine Listenprüfungseigenschaft hinzufügen.Bei der Listenprüfung kann der Benutzer mit der rechten Maustaste klicken und einen der Werte in der Liste auswählen.Wenn Sie das Protokoll in JMP 16 verwenden, werden alle diese Änderungen erfasst, sodass Sie kein Skript erstellen müssen.Versuchen Sie es unten.
//Make Data Table
New Table( "Example 2",
Add Rows( 7 ),
New Column( "Furniture",
Character,
"Nominal",
Set Values( {"Chair", "Bed", "Chair", "Bed", "Stool", "Stool", "Bed"} )
)
);
Wait (2);
// Recode column: Material
dt = Data Table( "Example 2" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Furniture );
col1 << Set Name( "Material" );
dt << Move Selected Columns( {col1}, after( dt:Furniture ) );
dt << Recode Column(
dt:Furniture,
{Map Value(
_rcOrig,
{"Bed", "?", "Chair", "Wood", "Stool", "Metal"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
// Clear row selection
Data Table( "Example 2" ) << Clear Select;
// Change column list check: Material
Data Table( "Example 2" ):Material << List Check( {"?", "Metal", "Wood"} );
Betreff: Bedingte Formeln und Freitext in derselben SpalteDanke für die prompte Antwort, Peter. Ich habe etwas mehr über Value Labels gelernt, als ich es mir angesehen habe. Sofern ich jedoch nichts übersehe, ist ColB letztendlich immer noch eine Funktion von ColA. Ich benötige die Option, dass ColB von ColA unabhängig ist, wenn ColB eine Eins-zu-viele-Beziehung mit ColA hat.
Angenommen, ColA ist „Möbeltyp“ und ColB ist „Aus welchem Material bestehen die Möbel?“. Wenn der Benutzer „Stuhl“ in ColA eingibt, wird ColB automatisch mit „Holz“ gefüllt, da ich von vornherein weiß, dass die einzigen Stühle, die er hätte, aus Holz bestehen würden. Wenn sie jedoch in ColB „Bett“ eingegeben haben, bleibt ColB leer, sodass sie entweder „Holz“ oder „Metall“ eingeben können, da sie beide Typen haben könnten. Alternativ könnte ColB ausgegraut werden, wenn sie „Chair“ in ColA einfügen (da ich bereits weiß, was ColB sein sollte und ich nur versuche, ihnen Zeit zu sparen und Tippfehler zu vermeiden), aber ich konnte das seitdem auch nicht zum Laufen bringen Ich habe diese Operation auch mit einer Formel durchgeführt.
Ich hoffe, das ist etwas klarer. Danke!
Betreff: Bedingte Formeln und Freitext in derselben Spalte@Matt_Converse , Gute Frage.Hier ist ein Beispiel für etwas Ähnliches wie das, was Sie gefragt haben.Ich habe Werteetiketten verwendet, bei denen Sie einen Bereich angeben können.Wenn dieser Wert in einen bestimmten Bereich fällt, wird er als Beschriftung angezeigt.Dies könnte das erreichen, was Sie sich erhoffen, oder zumindest teilweise.Sie können die Listenprüfung auch für Spalte A durchführen, da diese unabhängig ist. Wenn sie außerhalb des gewünschten Bereichs liegt, könnte dies ebenfalls funktionieren.Schauen Sie es sich trotzdem an, lassen Sie es mich wissen, wenn Sie Fragen haben.