Zeilenauswahl erweiternIch möchte eine bestimmte Zeilengruppe um eine leicht identifizierbare Zeile auswählen. Im folgenden Beispiel kann ich die relevante Zeile erfassen. Nun muss ich diese um 11 Zeilen darüber und 15 Zeilen darunter erweitern, um den relevanten Datenblock zu erhalten.
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" );
Automatisierung und SkriptingBetreff: Zeilenauswahl erweiternhallo, du kannst benutzen
dt = current data table();
block of interest = (dt << get selected rows()) + -11::15;
dt << Select Rows( block of interest )
Betreff: Zeilenauswahl erweiternVerwenden Sie nicht „Select Where“, sondern „Get Rows Where“.
Es wird die Zeilennummer für die Zeile zurückgegeben, die Ihren 1. Dickenwert enthält.
dann benutze Select Rows(), um die 11 Zeilen oben und 15 Zeilen unten auszuwählen
Betreff: Zeilenauswahl erweiternHogi
Sieht interessant aus, gibt mir aber die Fehlermeldung „Indexargument beim Zugriff oder bei der Auswertung von ‚Index‘, …………………………….“
Danke
Betreff: Zeilenauswahl erweitern@hogi -Ansatz ist richtig. Die Syntax ist nicht.
Hier ist mein Ansatz
dt = current data table();
block of interest = (dt << get selected rows())[1];
block of interest = index(block of interest-11,block of interest+15);
dt << Select Rows( block of interest );
Ich schlage vor, dass Sie Ihr Paradigma ein wenig ändern und nicht darauf zählen, Code zu erhalten, den Sie einfach ausschneiden und in Ihr Skript einfügen, sondern dass Sie den bereitgestellten Code studieren und ihn dann unter Berücksichtigung der neuen Erkenntnisse, die er bietet, in Ihren Code integrieren.
Betreff: Zeilenauswahl erweiternNoch ein paar Vorschläge
Names Default To Here(1);
dt = Current Data Table();
Try(
r = (dt << get selected rows())[1];
dt << Select Where(r - 11 <= Row() <= r + 15);
);
Names Default To Here(1);
below = 11;
above = 15;
dt = Current Data Table();
r = dt << Get Selected Rows();
If(N Items(r) != 1,
Throw("Incorrect amount of rows selected");
);
rows_of_interest = Max(1, r - below)::Min(N Rows(dt), r + above);
dt << Select Rows(rows_of_interest);
Write();
Betreff: Zeilenauswahl erweiternJim
Das funktioniert, wählt aber nur die zusätzlichen Zeilen für die erste ausgewählte Zeile in der Matrix aus. Ich schätze, ich sollte für jede anfänglich ausgewählte Zeilennummer eine Iteration einrichten, um sie alle zu erfassen?
Betreff: Zeilenauswahl erweiternJim
Ich habe eine Iteration hinzugefügt und scheine zu bekommen, was ich will.
Danke
dt = current data table();
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" ));
sel_rows = Current Data Table() << Get Rows where( Contains( As Column(2), "1st Thickness" ));
j=1;
For( i = 1, i <= N Items( sel_rows ), i++,
block_of_interest = (dt << get selected rows())[j];
block_of_interest = index(block_of_interest-11,block_of_interest+15);
dt << Select Rows( block_of_interest );
j=j+27;
);
Betreff: Zeilenauswahl erweiternAus Ihrer ursprünglichen Nachricht ging hervor, dass Sie nur eine einzelne Zeile auswählen wollten. Die Schleife ist definitiv die einfachste Option und kann je nach Datenlage auch ohne Optimierungen schnell genug sein.
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
For Each({r}, selrows,
dt << Select Where(r - 11 <= Row() <= r + 15, current selection("extend"));
);
wait(0);
Und eine etwas kompliziertere Option
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
rows_of_interest = {[]};
For Each({r}, selrows,
rs = Max(1, r - 11)::Min(N Rows(dt), r + 15);
Insert Into(rows_of_interest, rs`);
);
Substitute Into(rows_of_interest, Expr(List), Expr(V Concat));
dt << select rows(rows_of_interest);
wait(0);