Hallo, ich schreibe ein Skript, um meine Tabellenmanipulationen (hauptsächlich das Hinzufügen neuer Spalten mit Vergleichsformeln) für Daten mit einer variablen Anzahl eindeutiger Spalteninhalte und Endergebnisse zu automatisieren.
Ich habe ein Skript geschrieben, um die eindeutigen Inhalte in :SampleID (gespeichert in Init_IDs) zu identifizieren und den Benutzer in einem Popup-Fenster aufzufordern, diese umzubenennen. Die Änderungen werden in New_IDs gespeichert. Anschließend kann ich meine neue Spalte mit einer Standard-Match-Formel erstellen:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);
Diese Formel funktioniert für meinen Testdatensatz, bei dem die Größe von New_IDs 6 betrug. Da sich dies jedoch ändern wird, möchte ich eine For-Schleife verwenden, um die Formel flexibler zu gestalten. Folgendes habe ich versucht, aber es funktioniert nicht:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);
Ich habe überprüft, dass N Items (New_IDs) den Wert 6 erzeugt. Ich habe die For-Schleife allein, ohne die Kombination mit der anderen Match-Formel, ausprobiert, und auch das funktioniert nicht. Obwohl das '+' dazwischen letztendlich ein Problem sein könnte, scheint das Hauptproblem meine For-Schleife selbst zu sein.
Ich habe es auch vereinfacht mit einer WENN-Anweisung anstelle einer VERGLEICH-Formel versucht, aber auch das hat nicht funktioniert:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);