Sortieren Sie die Spalten in absteigender Reihenfolge und verwenden Sie die vier größten für die BerechnungIch habe eine Datentabelle und muss die ersten vier größten Werte aus einer Reihe von Spalten mit der Bezeichnung „Düse #“ abrufen. Diese Spaltenwerte variieren je nach Variable oder Spalte mit der Bezeichnung „Test #“.

Dann muss ich diese Werte anwenden und in einer neuen Spalte die Fläche eines Kreises pro Testnummer berechnen. Da ich eine größere Datentabelle habe, möchte ich die Spalten entweder mithilfe der Logik „For“, „If“ und „Contains“ gruppieren, oder gibt es in JSL einen effizienteren Ansatz?
Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenBitte werfen Sie einen Blick auf die erste Formel, die ich Ihnen gegeben habe.Zunächst wird eine Liste aller Werte für die verschiedenen Spalten der angegebenen Zeile erstellt.Anschließend werden die Werte sortiert und schließlich werden die ersten vier Werte in eine Zeichenfolge umgewandelt.
Wenn Sie diesen Code zum neuesten Code hinzufügen, ergibt sich ein Wert für die Spalte, die die ersten vier größten Werte enthält.
Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenHabe es ausprobiert, der Code ist unten abgebildet, aber er zeigt mir alle Werte sortiert an.
theList = {};
For( i = 2, i <= 7, i++,
For Each Row(
Eval( Parse( "Insert Into( theList," || Char( Column( dt, i )[Row()] ) || ")" ) )
)
);
theList = Sort Descending( theList );Nachgiebig,
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 814px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="image.png" style="width: 814px;"><span class="lia-inline-image-display-wrapper" image-alt="image.png" style="width: 814px;"><img src="https://us.v-cdn.net/6038925/uploads/images/21024iC715F1791A69F0B3/image.png" role="button" title="image.png" alt="image.png" /></span></SPAN></SPAN>
Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenVersuchen Sie es mit diesem Formular
dt = Current Data Table();
theList = {};
For( i = 2, i <= 7, i++,
Eval( Parse( "Insert Into( theList," || Char( Column( dt, i )[Row()] ) || ")" ) )
);
theList = Sort Descending( theList );Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenAlso habe ich versucht, die Spalten mithilfe einer for-Schleife in eine Liste einzufügen (siehe Abbildung). Liste1 in der Datei „düse_script.jsl“. Immer wenn ich versuche, sie zu sortieren, werden nur die Spaltennamen sortiert und nicht die Spaltenwerte. Ich habe auch versucht, den von Ihnen angezeigten Code zu verwenden, und die Listen werden im unten gezeigten Protokoll als leer angezeigt.

Mein Gesamtziel wäre etwa so:

(Hinweis: Ich habe die Werte in der Spalte „Größte“ manuell eingegeben. Anschließend wird die Formel („Größter“/4)^2 für die Spalten „Fläche“ angewendet.)
Ich habe die Datentabelle und mein Skript unten angehängt. Danke schön!
Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenHier ist ein Beispiel für eine Möglichkeit, dies zu tun.Ich gebe zu, es ist ein bisschen verrückt, aber es sollte Ihnen eine JCL zeigen, die Ihnen eine Vorstellung davon gibt, was Sie tun können.Ich habe die Berechnung in einer neuen Spalte in der Datentabelle durchgeführt, die Sie in Ihrer ersten Anfrage angezeigt haben.

Hier ist die Formel, die ich für die neue Kolumne entwickelt habe
theList = {};
Insert Into( theList, :Nozzle 1 );
Insert Into( theList, :Nozzle 2 );
Insert Into( theList, :Nozzle 3 );
Insert Into( theList, :Nozzle 4 );
Insert Into( theList, :Nozzle 5 );
Insert Into( theList, :Nozzle 6 );
theList = Sort Descending( theList );
theOutput = Char( theList[1] );
theOutput = theOutput || ", " || Char( theList[2] );
theOutput = theOutput || ", " || Char( theList[3] );
theOutput = theOutput || ", " || Char( theList[4] );
theOutput;Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenIch möchte die ersten 4 größten Düsenwerte pro Test. Es wäre also:
18684 = 5,5 5 4 0
18685 = 5 5 4 0,5
18688 = 5,5 5 4 0,5
18689 = 5 5 0,5 0
Betreff: Spalten in absteigender Reihenfolge sortieren und die 4 größten für die Berechnung verwendenMöchten Sie die ersten vier größten Werte in den Düsen-Nr.-Spalten für jede Zeile oder die ersten vier größten Werte für alle Zeilen für alle Düsen-Nr.-Spalten?