Hallo zusammen,
Mein Problem wurde wahrscheinlich schon einmal angesprochen, da es ziemlich einfach ist, aber ich konnte die Lösung für mein genaues Problem nicht finden.
Ich möchte mehrere Dateien mit derselben Struktur importieren, sie auf identische Weise bearbeiten und dann eine Teilmenge davon zusammenfügen. Ich habe den Import- und Datenmanipulationsteil auf die folgende allgemeine Weise durchgeführt:
dt = Open(
"PATH/File1.xlsx",
Worksheets( "Table1" ),
XXX
);
// New operation e.g. New column: Column 2
dt << New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 )
);<BR /><BR />File1 = dt;<BR />File1 << Set Name("File1");<BR />Um weitere Dateien zu importieren, würde ich den gleichen Code in das Skript kopieren und nur "Datei1" durch "Datei2", "Datei3" usw. ersetzen. Es funktioniert, aber die Skriptlänge wird ziemlich groß, da ich viele Dateien importieren muss.
Ich habe auch die IMF-Option ausprobiert. Als ich "Mehrere Tabellen öffnen" gewählt habe (ich möchte nicht, dass sie gestapelt sind), habe ich die Datentabellen bereits mit bestimmten Namen verknüpft und konnte sie nicht mit dem oben beschriebenen generischen Code manipulieren.
Irgendwelche Ideen für elegantere Lösungen?
Vielen Dank!
Du könntest versuchen, es zu verwenden function() (jmp.com) oder expr(). Hier sind einige Optionen mit function():
Names Default To Here(1);
open_and_modify = function({file_path}, {Default Local},
dt = Open(file_path, Worksheets("Table1"), XXX);
// New operation e.g. New column: Column 2
dt << New Column("Column 2", Numeric, "Continuous", Format("Best", 12));
dt << Set Name("File1");
return(dt);
);
dt1 = open_and_modify("PATH/File1.xlsx");
dt2 = open_and_modify("PATH/File2.xlsx");
dt3 = open_and_modify("PATH/File3.xlsx");
//or have a list of paths
file_paths = {"PATH/File1.xlsx", "PATH/File2.xlsx", "PATH/File3.xlsx"};
//create first concatenate before
table_list = {};
For Each({new_file_path}, files,
Insert Into(table_list, open_and_modify(new_file_path));
);