Kombinieren Sie Daten aus verschiedenen Arbeitsmappen im StapelformatHallo JMP-Experten,
Ich suche nach einer Möglichkeit, die Daten aus verschiedenen Excel-Arbeitsmappen in einer JMP-Datei zusammenzufassen, indem ich sie unter einer Kopfzeile stapele.
Bitte schlagen Sie die beste Option zum Importieren der Daten aus mehreren Arbeitsmappen vor. [Bitte beachten Sie, dass es sich nicht um ein Arbeitsblatt handelt.]
Ich verwende übrigens JMP 15 pro unter Mac OS.
Dank im Voraus.
Betreff: Daten aus verschiedenen Arbeitsmappen im Stapelformat kombinierenOffenbar ist die Definition für die Liste „theFiles“ falsch oder nicht vorhanden.Welchen Wert hat theFiles und welchen Wert hat die Variable i?
Betreff: Daten aus verschiedenen Arbeitsmappen im Stapelformat kombinierenIch habe dieses Skript ausprobiert und die folgende Fehlermeldung erhalten. Ich bin mir nicht sicher, was passiert ist, und frage mich, ob Sie helfen könnten. Danke.

Betreff: Daten aus verschiedenen Arbeitsmappen im Stapelformat kombinieren- Das von mir bereitgestellte Skript basiert auf einer JSL-Liste von Arbeitsmappen, die eingelesen werden sollen.Diese Liste heißt theFiles.In meinem Skript wird es erstellt, indem alle XLSX-Dateien aus einer bestimmten Verzeichnis-/Ordnerstruktur gelesen werden.Sie können das aber ändern und die Liste einfach manuell erstellen.
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };Ein erfundenes Beispiel dafür, wie der „vollständige Pfad zur Arbeitsmappe n“ aussehen könnte, ist:"C:\Excel Data\2020\January\Department21 Monthly.xlsx"
Sie können also einfach den Code in den Zeilen 3–11 entfernen und ihn durch Ihre neue Definition der Liste „theFiles“ ersetzen, und das Skript sollte Ihnen die gewünschten Ergebnisse liefern.
- Das Skript liest bereits alle Arbeitsblätter aus jeder geöffneten Arbeitsmappe ein und platziert sie in einer einzigen JMP-Datentabelle, die das Skript dann zur gesamten endgültigen Datentabelle hinzufügt, die das Skript erstellt.
- Sie müssen an Ihren JMP-JSL-Kenntnissen arbeiten, damit Sie die Verantwortung für die Verwendung und Wartung des Skripts übernehmen können.Oder wenn dies nicht in die Definition Ihres Jobs fällt, müssen Sie das Budget finden, um jemanden einzustellen, der den Kodex unterstützt.Die Verwendung von Skripten, die einem einfach weitergegeben werden, ist eine sehr fragwürdige Sache.JMP bietet kostenlose Dokumentation, Beispiele und Tutorials zum Erlernen von JSL.Darüber hinaus bieten sie kostenpflichtige Schulungskurse zu JSL an.Die Teilnehmer der JMP-Community-Diskussion sind da, um bei der Problemlösung zu helfen, aber es wäre die falsche Entscheidung anzunehmen, dass sie in der Lage sein werden, die fertigen Skripte zu schreiben, die Sie möglicherweise benötigen.
- Unten finden Sie eine Modifikation meines ursprünglichen Skripts, in das der Beispielcode für die manuelle Eingabe der Pfade zu den Arbeitsmappen eingefügt ist, die Sie einlesen möchten
Names Default To Here( 1 );
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };
// create the base data table that all other tables will be concatenated to
dtFinal = New Table( "All Data" );
// loop through all .xlsx files and concatenate them to dtFinal
// the Concatenate Worksheets(1) will result in a single data table
// for each workbook read in and that single data table will be concatenated
// to the dtFinal
For( i = 1, i <= N Items( theFiles ), i++,
dt = Open(
theFiles[i],
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
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( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// concatenate the new table with the dtFinal table
dtFinal << concatenate( dt, append to first table( 1 ) );
// delete the no longer needed data table dt
Close( dt, nosave );
);Betreff: Daten aus verschiedenen Arbeitsmappen im Stapelformat kombinierenDanke für die schnelle Antwort, txnelson.
Aber ehrlich gesagt bin ich nicht gut darin, die .jsl-Skripte zu bearbeiten. Ich weiß nicht, welche Schritte ich im oben genannten gemeinsam genutzten JSL-Skript bearbeiten muss.
Im Moment habe ich „n“ nein. von ähnlichen Excel-Arbeitsmappen in einem einzigen Ordner. Jede Excel-Arbeitsmappe hat mehrere Blätter, aber mein Fokus liegt darauf, die Informationen aus dem Arbeitsblatt mit dem Namen „Daten“ aus allen Arbeitsmappen zusammenzufassen.
Wenn Sie dieses Szenario annehmen, können Sie mich bitte weiter anleiten, um das angegebene Skript zu bearbeiten?
Wenn Sie außerdem eine Idee zum Assistenten „Mehrere Dateien importieren“ haben, schlagen Sie ihn bitte für das jeweilige Szenario vor. Ich kann die Daten aus mehreren Arbeitsmappen zusammenfassen, wenn die einzelnen Arbeitsmappen nur ein Arbeitsblatt haben. Aber ich weiß nicht, was der richtige Schritt für das Szenario ist, das ich hier angegeben habe [d. h. wenn jede Arbeitsmappe mehrere Arbeitsblätter hat.]Betreff: Daten aus verschiedenen Arbeitsmappen im Stapelformat kombinierenNachfolgend finden Sie ein Beispiel, das Ihnen eine Vorstellung davon geben soll, wie Sie dieses Problem angehen können.Sie müssen wahrscheinlich Änderungen daran vornehmen, basierend auf den Details Ihrer tatsächlichen Strukturen
Names Default To Here( 1 );
// get the workbooks to be processed
theFiles = Files in Directory(<YOUR path="">, recursive(1) );
// reduce the list to only .xlsx entries
For( i = N Items( theFiles ), i >= 1, i--,
If( Word( -1, theFiles[i], "." ) != "xlsx",
Remove From( theFiles, i, 1 )
)
);
// create the base data table that all other tables will be concatenated to
dtFinal = New Table( "All Data" );
// loop through all .xlsx files and concatenate them to dtFinal
// the Concatenate Worksheets(1) will result in a single data table
// for each workbook read in and that single data table will be concatenated
// to the dtFinal
For( i = 1, i <= N Items( theFiles ), i++,
dt = Open(
theFiles[i],
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
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( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// concatenate the new table with the dtFinal table
dtFinal << concatenate( dt, append to first table( 1 ) );
// delete the no longer needed data table dt
Close( dt, nosave );
);</YOUR>