Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines beliebigen Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?Wie schreibe ich eine If-Anweisung (oder was auch immer die richtige Funktion ist), die ausgewertet wird, wenn der Spaltenwert einer Zeile = ein beliebiger Wert in einem Array ist?
Beispiel:
If( :ColToCheck == [Jeder dieser Werte] , dann 1, sonst 0 )
Betreff: Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?Nicht direkt.......deshalb verwende ich Loc().
Betreff: Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?Danke euch beiden.@txnelson TX hat mich letzte Nacht über den Berg gebracht.Ich habe gerade Zeichen in Zahlen umgewandelt und es hat das gewünschte Ergebnis geliefert.
Ich finde @vince_faller Die Lösung von ist das, wonach ich suche. Ich habe es mit Zeichen versucht und es hat funktioniert
New Column( "Some Check 2",
Numeric,
"Continuous",
Format( "Best", 12 ),<BR /> Formula( !!Contains( {"TIM", "ALICE", "JANE", "UDY"}, :name ) )
),<BR /> // "UDY" is in there to verify contains will not return true for "JUDY"<BR />Betreff: Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt << new Column("Some Check", FOrmula(
//only doing !! so it's negates the output of contains (which is WHERE it is in the list)
!!Contains({59, 63, 48, 70}, :height)
));Betreff: Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?1. Eine Matrix kann nur numerische Werte enthalten.Daher muss die Matrix z als Liste und nicht als Matrix angegeben werden
2. Ich weiß nicht, was "cust" ist.
3. Ist dies eine Spaltenformel oder offener JSL-Code?
4. Loc gibt eine Matrix der Positionen zurück, an denen der Testwert in der Liste gefunden wird.Daher müssen Sie feststellen, ob mehr als 0 Zeilen zurückgegeben wurden, um festzustellen, ob eine Übereinstimmung gefunden wurde.
Unten sind ein paar Skriptbeispiele, die Ihnen helfen könnten
Names Default To Here( 1 );
dt = Current Data Table();
// As a formula in a new column
dt << New Column( "is present",
formula(
z = {"customer1", "customer2", "customer3"};
If( N Rows( Loc( z, :Name( "Ship-To Customer" ) ) > 0 ),
1,
0
);
)
);
// In open JSL
z = {"customer1", "customer2", "customer3"};
For( i = 1, i <= N Rows( dt ), i++,
If( N Rows( Loc( z, :Name( "Ship-To Customer" )[i] ) ) > 0,
1,
0
);
);Betreff: Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?Danke.
Ich versuche, so etwas zu tun.
#1 es erwartet eine Ziffer.
#2 die Rückgabe kommt zurück alle fehlenden Werte.Ich habe den Datentyp Ausdruck und Numerisch ausprobiert, konnte die Verteilung nicht ausführen, um zu sehen, ob es andere Werte als fehlende Werte gab.
cust = ["customer1","customer2","customer3"];
If( Loc( As List( cust ), :Name( "Ship-To Customer" ) ),
1,
0
);
//Aktualisierung 26.4.19
Im ursprünglichen Beitrag war kein Kunde definiert, stattdessen wurde angezeigt
z = ["Kunde1","Kunde2","Kunde3"];
Deshalb fragt TXNelson, was "cust" ist?
Betreff: Wenn der Zeilenspaltenwert gleich einem beliebigen Wert eines Arrays ist, dann ... Was ist die allgemeine Form dieses Formals?Verwenden Sie die Funktion Loc(), um zu prüfen, ob Werte in einer Liste beim Vergleich gleich sind.Wenn Sie dies mit einer Matrix tun, wandeln Sie die Matrix in eine Liste um.
z=[1,2,3,4];
loc(as list(z),2);