Wie speichere ich eine Tabelle unter Berücksichtigung des Jahres der Daten als Variablennamen?Beispiel: Ich habe zwei Excel-Dateien: 2014.xlsx, 2015.xlsx und möchte nach der Auswahl dieser mehreren Dateien die Benennung bestimmter Arbeitsblätter in diesen Dateien (in diesem Fall {Produktereignisse, Produkte, CodesFrmPLI}) automatisieren, z insgesamt 6 verschiedene JMP-Tabellen: Namensbeispiele wären für diesen Fall Product_Events_2014, Product_Events_2015, Products_2014, Products_2015, CodesFrmPLI_2014, CodesFrmPLI_2015.
Names Default To Here( 1 );
Close All( data tables );
Delete Symbols();
Directory = Pick Directory( "Select a directory" );
Files = Pick File(
"Select Data Set(s)",
Directory,
{"All Files|*", "JMP Files|jmp;jsl;jrn", "Excel Files|xlsx"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
Try( Open( Files[i],
Worksheets( NWorksheet = {"Product Events", "Products", "CodesFrmPLI"}),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" ),
invisible
) )
));
Show(NWorksheet);
//*** 2014 Naming convention
For( i = 1, i <= N Items( Files ), i++,
if( Contains( Files[i] , "2014") > 0,
dt = Data Table(1);
dt << Save("Codes_2014.jmp");
dt = Data Table(2);
dt << Save("Products_2014.jmp");
dt = Data Table(3);
dt << Save("Product Events_2014.jmp");
//Close All(Data Tables, No Save);
)
);
//*** 2015 Naming convention
For( i = 1, i <= N Items( Files ), i++,
if( Contains( Files[i] , "2015") > 0,
dt = Data Table(4);
dt << Save("Codes_2015.jmp");
dt = Data Table(5);
dt << Save("Products_2015.jmp");
dt = Data Table(6);
dt << Save("Product Events_2015.jmp");
//Close All(Data Tables, No Save);
)
);Betreff: Wie speichere ich eine Tabelle unter Berücksichtigung des Jahres der Daten als Variablennamen?Wenn Sie einfach die Zeile entfernen
close( dt, save( extractList[1] || "_" || theYear || ".jmp" ) );
Die Datentabellen bleiben geöffnet.Daher können Sie nach dem schließenden „)“ für die anfängliche For()-Schleife beliebige Verknüpfungen oder Berechnungen hinzufügen.Grundsätzlich nach der letzten Zeile im aktuellen Skript.
Betreff: Wie speichere ich eine Tabelle unter Berücksichtigung des Jahres der Daten als Variablennamen?Danke, Jim. Das hat funktioniert. Kurzes Follow-up: Wenn ich jetzt Tabellen zusammenführen und Daten manipulieren möchte, wo wäre der beste Ort dafür?
Grüße.
Betreff: Wie speichere ich eine Tabelle unter Berücksichtigung des Jahres der Daten als Variablennamen?Ich denke, die folgende Überarbeitung Ihres Skripts wird Sie dahin bringen, wo Sie wollen. Ich hatte keine sehr umfangreiche Testumgebung, aber ich denke, der Code kommt ziemlich nah an dem vorbei, was Sie brauchen:
Names Default To Here( 1 );
Close All( data tables );
Delete Symbols();
Directory = Pick Directory( "Select a directory" );
Files = Pick File(
"Select Data Set(s)",
Directory,
{"All Files|*", "JMP Files|jmp;jsl;jrn", "Excel Files|xlsx"},
1,
0,
"",
"multiple"
);
// Place the names of the spreadsheets to be input into a list
spreadsheetList = {"Product Events", "Products", "CodesFrmPLI"};
For( i = 1, i <= N Items( Files ), i++,
// For this file, determine the year
If(
Contains( Files[i], "2014" ), theYear = "2014",
Contains( Files[i], "2015" ), theYear = "2015"
);
// Read in separately each separate spreadsheet
For( k = 1, k <= N Items( spreadsheetList ), k++,
// Create a list that will contain the current spreadsheet to
// be read in
extractList = {};
Insert Into( extractList, spreadsheetList[k] );
// Open the spreadsheet
Try(
dt = Open(
Files[i],
Worksheets( NWorksheet = extractList ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" ),
invisible
)
)
);
// The name for the JMP file is the same as the spreadsheet name,
// except for the Codes, so make the change
If( extractList[1] == "CodesFrmPLI",
extractList[1] = "Codes"
);
// Save the JMP file with the prescribed name
close( dt, save( extractList[1] || "_" || theYear || ".jmp" ) );
);
);