본문 바로가기

Autohotkey강좌

Autohotkey #44, 엑셀 취합 수정본 v1.5(지정된 행만 취합하기)

반응형

https://youtu.be/UhgcakmDS8A

기존 엑셀 취합 내용에 추가적인 요구사항이 있어서 수정된 버전을 올려 드립니다.

1) 시작행부터 종료행까지 지정하고자 하는 경우

2) 종료행을 지정하지 않고 최종행까지 취합하고자 하는 경우

3) 최종행은 합계행이므로 빼고 취합하고자 하는 경우

4) 시트명이 default이름인 Sheet1이 아닌 경우 등에 대한 내용이 반영되도록 수정한 버전입니다.

어지간한 취합은 대부분 감당할것으로 생각됩니다. 추가적으로 다른 경우가 있다면 좀 더 수정이 필요하겠습니다. 통상적으로 취합활동을 많이 하시는 분들에게 도움이 되기를 기대합니다.

 

먼저 시작행부터 종료행을 지정하고자 하는 경우입니다.

예제에서는 2행부터 6행까지 취합하는 경우입니다. 만약 한줄만 취합하려면 End row도 2 로 지정하면 되겠습니다.

또한 이 경우는 아래줄의 마지막행 포함의 체크여부가 영향을 주지 않습니다. 즉 무조건 시작행부터 마지막행까지 포함합니다. 

다음으로는 종료행을 지정하지 않고 최종행까지 취합하고자 하는 경우

최종행까지 취합하기 위해서 마지막행 포함을 체크했습니다. 

만약 마지막행 취합을 체크 해제하면 마지막행은 빼고 시작행부터 마지막-1행까지 취합합니다.

즉, 이 상태가 기존에 배포된 버전의 상태라고 하겠습니다.

다음으로는 Sheet name을 변경할 수 있도록 했습니다. 생각보다 시트명을 변경해서 사용하는 경우가 많아서 해당 이름으로 변경할 수 있게 했고, 입력하는 엑셀이나, 결과파일이나 모두 동일한 시트명이어야 합니다. 

그리고  Progress항목을 넣었습니다. 전체 파일 갯수중에서 몇번째를 진행하는지 추가하는 부분을 넣었습니다. 

Progress바를 넣는 것은 한번 직접 해 보시기 바랍니다. 

추가로 GuiClose 루틴을 넣어서  App 종료에 대한 처리를 넣었습니다.

자세한 내용은 스크립트를 참고하세요.

통상적으로 취합업무를 많이 하는 분들이 잘 활용해서, 컴퓨터에게 취합은 맡기고, 본인은 보다 생산적인 일에 시간을 투입하기를 기대합니다.

mergeExcelv1.5.ahk
0.00MB

그냥 실행파일만 필요할 경우 아래 파일을 참고하세요.

mergeExcelv1.5.exe
0.61MB

마지막 열이 Z를 넘어가는 경우 오류가 나서 수정본을 올립니다. 이것도AZ까지만 가능합니다.

mergeExcelv1.5.1.exe
0.61MB

Z열을 넘어가는 경우는 대부분 없는데, 아마도 일부 셀에 빈칸이 입력되어 있거나 하는 경우에 그런 현상이 나올 것으로 예상합니다. 어쨋든 해당 문제를 검사하기 위해서 iLastCol의 값을 비교하여 Z(=26)값보다 크면 해당 숫자에서 26을 빼주고 나서 앞에 A를 덧붙여서 Z다음에 AA, AB등과 같이 만들어 지도록 합니다. 

iLastCol := exelinput.ActiveSheet.Cells.SpecialCells(11).column
if (iLastCol > 26)
    tt := "A" + chr( asc("A")+iLastCol -26 -1)
else 
    tt := chr( asc("A")+iLastCol -1)

이 부분을 Loop문 앞으로 보내는 것도 방법이긴 하지만, 파일들마다 복사할 범위가 달라지는 경우에는 수행이 되지 않아서 원래 코드 위치를 유지했습니다.

반응형