여러 Mac Excel 파일을 모두 헤더가 동일하지만 순서가 잘못된 병합하는 방법

여러 Mac Excel 파일을 모두 헤더가 동일하지만 순서가 잘못된 병합하는 방법

저는 Mac을 사용하고 있습니다. 내 Excel 파일에 일치하지만 순서가 잘못된 헤더가 있습니다. 그들은 모두 "query"라는 헤더로 시작하고 그 이후에는 혼합됩니다.

다음은 몇 가지 헤더 예입니다.

  • 쿼리|이메일|facebookUrl|twitterUrl|전화번호|타임스탬프|instagramUrl|오류|linkedinUrl|youtubeUrl
  • 쿼리|facebookUrl|linkedinUrl|전화번호|타임스탬프|youtubeUrl|이메일|오류|instagramUrl|twitterUrl
  • 쿼리|이메일|facebookUrl|instagramUrl|타임스탬프|linkedinUrl|youtubeUrl|전화번호|twitterUrl|오류

터미널을 사용하여 모든 csv 파일을 cat *.csv >combined.csv. 그런데 헤더가 다 틀려서 제대로 동작하지 않네요.

내가 무엇을 할 수 있는지 어떤 아이디어가 있습니까?

답변1

CSV 인식 도구를 사용해야 합니다. 훌륭한 것은밀러

예를 들어 다음 3개의 CSV 파일이 있는 경우

#input_01.csv
a,b,c
0,2,5

#input_02.csv
b,a,c
0,2,5

#input_03.csv
b,a
0,2

너는 달려가서 mlr --csv unsparsify ./input_0*.csv >./output.csv가질 수 있어

+---+---+---+
| a | b | c |
+---+---+---+
| 0 | 2 | 5 |
| 2 | 0 | 5 |
| 2 | 0 | - |
+---+---+---+

답변2

파일 크기가 너무 크다면 파워 쿼리를 살펴보세요. 나는 개인적으로 현재 특정 순서로 열을 재정렬할 수 있는 기술이 없지만 알파벳순으로 재정렬할 수는 있지만... 제 생각에는). 따라서 여기서는 적어도 오늘은 그것을 달성하는 방법에 대해 이야기하지 않겠습니다.

몇 가지 놀라운 작업을 수행할 수 있습니다(Excel의 제한에 익숙하고 VBA에서 약간 복잡한 작업 이상을 수행할 만큼 폭넓은 경험이 없는 사용자에게는 놀라운 일입니다). 내가 아는 만큼은 확실히 그 일을 할 수 있다. 하지만 곧 끝낼 수 있을 것 같지는 않다.

그러나 파일의 크기가 너무 크지 않아매우간단한 수식 접근 방식을 사용하면 컴퓨터를 멈추거나 최소한 Excel을 멈추지 않고도 작업을 수행할 수 있습니다. 그렇다면 다음은 실제로 매우 간단한 접근 방식입니다.

나는 당신이 사용하는 파일이 지금과 똑같이 계속 존재해야 하는지, 아니면 수정이 가능한지 알지 못했습니다. 그대로 유지해야 한다면 하위 디렉터리를 만들고 여기에 모두 복사하세요. 변경해도 괜찮다면 파일을 복사하지 않기 때문에 조금 더 쉽습니다. 그러나 파일을 계속 사용하고 단순히 열 순서를 변경해도 문제가 발생하지 않으면 변경하는 것이 훨씬 더 좋을 것입니다. 그래서 앞으로는 다시 변경할 필요가 없습니다. 그들이 말했듯이 "하나면 끝"입니다.

별다른 작업 없이 열을 다시 정렬하려면 다음 수식을 사용하면 됩니다.

=INDEX($I$1:$O$4,SEQUENCE(ROWS($I$1:$O$4)),MATCH($A$1:$G$1,$I$1:$O$1,0))

(공식의 경우 A:G에 6열 x 4행 테이블을 배치한 다음 I:O에 동일한 제목을 가진 또 다른 테이블을 배치했지만 A:G 테이블에 비해 순서가 혼합되어 있습니다.)

INDEX()재정렬하려는 테이블(이 경우 I1:O4)이 제공됩니다. 모든 행을 사용하도록 지시하기 위해 다음을 사용합니다.SEQUENCE() 하나의 매개변수를 사용합니다("행" 또는 출력이 첫 번째 매개변수이므로 더 이상 필요하지 않습니다). 해당 매개변수는 재정렬이 필요한 테이블의 행 수입니다. 시퀀스를 사용하면 내가 한 것처럼 범위 주소, 명명된 범위(실제로 그렇게 사용하는 이유),또는단지 행의 수입니다. 결국, 대부분의 테이블은 범위의 오른쪽만 알고 있는 것입니다. 아니면 그 위의 행에 대해 일부 값을 뺄 수도 있습니다. 명명된 범위를 사용하는 경우에만 "흠... I1:O4... 행이 4개여야 하므로 4만 입력하겠습니다..."와 같은 말 외에 다른 작업을 수행해야 합니다.

마지막 부분은 좋은 부분입니다: 열의 순서입니다. INDEX()열을 다시 정렬하거나 두 번 이상 표시되도록 할 수 있습니다. 모든 파일에 필요한 순서를 알고 있다면 {4,2,19,7,...}알려주는 것과 같은 내용을 입력할 수도 있지만 알 수는 없습니다. 그것들은 임의의 순서일 수 있고 각각 다를 수 있습니다.

그러나 를 사용하면 MATCH()Excel이 모든 다양한 주문에 대해 작업을 수행하도록 할 수 있습니다. 하나의 파일에 대한 제목을 사용하도록 지시하는 MATCH()것은 중요하지 않지만 열고 재배열하는 모든 파일에 대해 해당 파일의 제목 순서를 사용합니다. 따라서 match는 현재 파일의 제목에서 각 항목을 찾고 찾은 순서를 다시 피드한 다음 INDEX()순서 소스로 선택한 파일과 동일한 제목 순서로 데이터를 재조립합니다.

더 좋은 점은 공식이 2D SPILL 배열을 생성하므로 공식을 단일 셀에 복사하면 전체 출력 테이블이 생성된다는 사실입니다.

작업이 완료되면 저장할 수 있는 파일에서 작업을 수행하게 되므로(복사본 세트든 원본이든 어떤 방식으로든 변경하고 저장할 수 있는 파일로 작업하게 됨) 다음에는 다음 작업을 수행하고 싶습니다. 전체 출력을 선택한 다음 복사하여 Paste|Special|Values수식 출력이 아닌 데이터만 포함합니다. 그런 다음 출력 테이블만 남기고 원본 자료를 삭제합니다. 구하다. 다음으로 넘어가세요.

원본에 대해 작업을 수행할 계획이고 나중에 사용할 예정이라면 원본 테이블을 선택하고 복사한 다음 Paste|Special|Formats출력 테이블에서 테이블 형식을 유지하는 것이 좋습니다. Paste|Special|Column widths동일한 모양과 느낌을 유지하려면 그렇게 하세요 .

열 너비가 필요하지 않을 것 같습니다. CSV 파일을 함께 결합할 계획인 것 같으니 생각해 보세요. 형식은 거의 중요하지 않습니다. 하지만 라이브 파일을 사용하고 있고 앞으로도 사용할 예정이라면 원본 테이블을 삭제하기 전에 형식 지정 단계를 수행하세요. Excel 파일로 저장한 다음 CSV 사본으로 저장하세요. 아마도 이미 CSV 파일일 수도 있으므로 걱정할 필요가 없지만 접근 방식의 다른 용도를 염두에 두십시오.

어쨌든 목록의 첫 번째 파일을 열고 이 수식을 복사하고 필요에 따라 주소 지정을 조정한 다음 수식 셀을 복사하고 목록에서 두 번째 파일을 열고 붙여넣습니다. 위의 작업을 수행하여 데이터로 변경하고 이전 데이터를 삭제한 다음 동일한 CSV 형식으로 다시 저장하세요. 모든 파일이 수정될 때까지 헹구고 반복하세요. 그런 다음 그들과 합류하십시오.

더 좋은 점은 VBA에 능숙하다면 새 파일을 열고 이름을 지정하고 저장(매크로 파일, 즉 .xlsm)하고 디렉터리의 파일을 청크하는 매크로를 작성하고 각 파일에 수식을 추가하고 변경하는 것입니다. 데이터로만 출력하고 왼쪽에 있는 모든 항목을 삭제하여 출력의 첫 번째 셀이 A1이 되도록 하고 각각을 CSV로 저장합니다. 이 새 파일을 다시 저장하십시오. 그런 다음 롤아웃하고 실행해 보세요.

관련 정보