서로 다른 통합 문서의 데이터를 스택 형식으로 결합JMP 전문가 여러분, 안녕하세요.
서로 다른 Excel 통합 문서의 데이터를 하나의 헤더 아래에 쌓아 하나의 JMP 파일로 묶는 옵션을 찾고 있습니다.
여러 통합 문서에서 데이터를 가져오는 가장 좋은 옵션을 제안하십시오. [워크시트가 아님을 기억하십시오.]
그건 그렇고, 저는 Mac OS에서 JMP 15 pro를 사용하고 있습니다.
미리 감사드립니다.
Re: 여러 통합 문서의 데이터를 스택 형식으로 결합합니다."theFiles" 목록에 대한 정의가 잘못되었거나 존재하지 않는 것 같습니다.theFiles의 값은 무엇이며 변수 i의 값은 무엇입니까?
Re: 여러 통합 문서의 데이터를 스택 형식으로 결합합니다.이 스크립트를 시도했는데 다음 오류가 발생했습니다. 무슨 일이 있었는지 확실하지 않고 도움이 될 수 있는지 궁금합니다. 감사해요.

Re: 여러 통합 문서의 데이터를 스택 형식으로 결합합니다.- 내가 제공한 스크립트는 읽을 통합 문서의 JSL 목록을 기반으로 합니다.그 목록을 파일이라고 합니다.내 스크립트에서는 지정된 디렉토리/폴더 구조에서 모든 .xlsx 파일을 읽어 생성됩니다.그러나 이를 변경할 수 있으며 해당 목록을 수동으로 만들 수 있습니다.
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };"통합 문서 n에 대한 전체 경로"가 될 수 있는 구성 예는 다음과 같습니다."C:\Excel Data\2020\January\Department21 Monthly.xlsx"
따라서 3-11행에서 코드를 제거하고 "theFiles" 목록의 새 정의로 교체하면 스크립트에서 원하는 결과를 얻을 수 있습니다.
- 스크립트는 이미 열려 있는 모든 통합 문서에서 모든 워크시트를 읽고 이를 단일 JMP 데이터 테이블에 배치한 다음 스크립트가 생성하는 전체 최종 데이터 테이블에 추가합니다.
- 스크립트의 사용 및 유지 관리를 책임질 수 있도록 JMP JSL 기술을 연마해야 합니다.또는 그것이 귀하의 업무 정의에 포함되지 않는 경우 코드를 지원할 사람을 고용할 예산을 찾아야 합니다.방금 전달된 스크립트를 사용하는 것은 매우 의문스러운 일입니다.JMP는 JSL 학습에 대한 문서, 예제 및 자습서를 무료로 제공합니다.또한 JSL에서 "유료" 교육 수업을 제공합니다.JMP 커뮤니티 토론 참가자는 문제 해결을 돕기 위해 존재하지만 필요한 완성된 스크립트를 작성할 수 있다고 가정하는 것은 잘못된 결정입니다.
- 아래는 원본 스크립트를 수정하여 읽고자 하는 통합 문서의 경로를 수동으로 입력하는 예제 코드입니다.
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 );
);Re: 여러 통합 문서의 데이터를 스택 형식으로 결합합니다.빠른 응답에 감사드립니다, txnelson.
하지만 솔직히 저는 .jsl 스크립트를 편집하는 데 능숙하지 않습니다. 위의 공유 jsl 스크립트에서 편집해야 하는 모든 단계가 무엇인지 모르겠습니다.
지금은 "n"이 없습니다. 하나의 단일 폴더에 유사한 종류의 Excel 통합 문서가 있습니다. 각 Excel 통합 문서에는 여러 시트가 있지만 저는 모든 통합 문서에서 "데이터"라는 워크시트의 정보를 모으는 데 중점을 둡니다.
이 시나리오를 가정하면 주어진 스크립트를 편집하도록 더 안내해 주시겠습니까?
또한 "여러 파일 가져오기" 마법사에 대한 아이디어가 있으면 주어진 시나리오에 대해 제안하십시오. 개별 통합 문서에 하나의 워크시트만 있는 경우 여러 통합 문서의 데이터를 묶을 수 있습니다. 그러나 내가 여기에 제시한 시나리오[예: 각 통합 문서에 여러 개의 워크시트가 있는 경우.]Re: 여러 통합 문서의 데이터를 스택 형식으로 결합합니다.다음은 이 문제에 접근하는 방법에 대한 아이디어를 제공하는 예입니다.실제 구조가 무엇인지에 대한 세부 정보를 기반으로 변경해야 할 수도 있습니다.
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>