반응형

안녕하세요.

 

양**님이 메일로 질문을 하셨습니다.

 

선생님, 제가 엑셀 해결이 안돼는 부분이 있는데 해결 부탁드립니다.

파일 초록색 밑으로 6캍식 내용을 내려야 하는데 
어떻게 하는지 잘 몰라서 부탁 드려도 될까요?
예제로 제가 만들어 놨는데 제가 한 업무로는 내용이 
더 많이 있습니다. 
그 전에는 일일이 6칸씩 블럭 설정해서 내용을 
내렸는데 자료는 이것 말고도 너무 많아서 전체
설정해서 내리는 방법 좀 가르쳐 주세요.
부탁드립니다~

 

첨부한 엑셀 파일에 데이터가 있습니다.

 

실습 파일 다운로드

일정한 개수로 잘라 나열하기_실습.xlsx
0.01MB

 

완성 파일 다운로드

일정한 개수로 잘라 나열하기_완성.xlsm
0.01MB

 

 

메일 내용과 데이터 파일을 봐도 원하는 결과가 어떤 모습인지 정확히 알 수 없습니다.

[A2], [N2] 셀에 있는 데이터를 봤을 때 행의 처음 부분에 나타나야 되지 않나 싶어서 입니다.

 

질문하는 사람은 데이터 의미를 알고, 결과도 어떤 모습인지 알고 있겠지만, 질문 받는 사람은 처음 보는 것이라 너무 막연합니다.

그래서 질문할 때 처리된 결과 모습의 예시도 같이 작성하면 작업을 이해하는데 큰 도움이 됩니다.

 

 

특별한 언급이 없으니 셀 내용은 고려하지 않고 모두 6열씩 끊어서 나타내는 것으로 결정했습니다.

이유는 이렇게 처리하는 것이 간단하기 때문입니다. ^^

 

수식으로 작성할 수도 있을 듯 하지만 간편하게 VBA를 작성합니다.

 

<Alt + F11>을 눌러 VBE를 실행합니다.

코드를 적으려면 모듈을 추가해야 합니다.

 

[삽입]-[모듈]을 누릅니다.

바로 프로시저를 만듭니다.

[삽입]-[프로시저]를 누릅니다.

[프로시저 추가] 대화상자에서 [이름]을 적습니다.

[이름]은 작업 내용을 알아 볼 수 있도록 적는 것이 좋습니다.

변환 매크로 틀이 만들어 집니다.

코드를 작성합니다.

Public Sub 변환()
    입력행 = 2
    출력행 = 3
    출력열 = 1
    제한 = 6
    p = 7
    
    Do
        Cells(출력행, 출력열) = Cells(입력행, p)
        
        If p Mod 제한 = 0 Then
            출력행 = 출력행 + 1
            출력열 = 0
        End If
        
        출력열 = 출력열 + 1
        p = p + 1
    Loop While Cells(입력행, p) <> ""
End Sub

 

처음부터 이렇게 작성한 것은 아니고, 몇 가지 수정을 하고 테스트 해서 완성합니다.

 

<F5>를 눌러 실행합니다.

<Alt + F11>을 누르면 엑셀 창으로 전환되어 실행된 결과를 확인할 수 있습니다.

원하는 결과가 나왔습니다.

데이터를 복사하기만 하는 것이 아니라 이동하는 것으로 작성해서  옮긴 데이터는 바로 지워지도록 할 수도 있지만, 변환 작업을 마친 후 필요 없는 데이터를 지우는 작업은 간단하기 때문에 굳이 코드를 복잡하게 하지 않았습니다.

 

VBA 코드가 포함되었기 때문에 Excel 매크로 사용 통합 문서(*.xlsm) 형식으로 저장해서 답장 메일을 보냈습니다.

 

양**님이 답장 메일을 받고 다시 메일을 보내 왔습니다.

 

선생님, 감사합니다. 큰 도움이 되었습니다.

선생님, 감사합니다. 
바쁘셔서 답변을 못하실 거라고 생각했는데 이렇게 빠른 답변을 주셔서 감사드립니다.
제가 업무 적으로 사용하는데 큰 도움이 되었습니다. 

저는 유튜브에서 엑셀 강의 들을 찾아 보았는데 찾을 수가 없어서 
선생님께 부탁 드렸는데 매크로 사용법으로 사용하는거 였네요. 
혹시, 선생님 매크로 강의 중에서 제가 드린 파일 내용과 비슷한 
강의가 있는지 궁금합니다. 있을까요?

 

 

이 메일에 답을 하기 위해 이 글을 쓰고 있습니다.

 

완성된 코드를 보셨을 테니 보다시피 아주 간단합니다.

빈 줄을 빼면 16줄이고, 명령문도 Do ~ Loop, If ~ End if2개를 씁니다.

함수는 아예 없고, 좀 특이한 연산자 Mod를 쓰고, 개체는 Cells 하나입니다.

 

조금만 보면 알 수 있는 내용입니다.

그렇다고 마냥 쉽다고는 말하지 않겠습니다.

 

짧은 코드이지만 여러 가지 기술이, 흔히 말하는 알고리즘이 있습니다.

하나씩 값을 가져와서 개수를 헤아리고, 정해진 개수가 되면 다음 행으로 넘어가고, 헤아리는 값은 초기화 합니다.

작업해야 할 데이터 끝을 확인하는 것도 흔히 쓰는 방법입니다.

 

방법을, 알고리즘을 직접 만들어 내거나 생각해 내는 것은 많은 시간을 투자해야 합니다.

개발쪽 일을 하지 않는다면 그럴 필요도 없고, 그럴 수도 없습니다.

 

대신 이미 만들어져 있는 코드를 이해하고, 조금 수정해서 원하는 결과를 구하는 것은 많은 시간을 투자하지 않아도 될 수 있습니다.

 

알려진 김치찌게 레시피를 따라 김치찌게를 끓여 봤다면 된장찌게, 순두부 찌게도 비슷한 방법으로 끓일 수 있다고 생각합니다.

 

개발자가 아닌 사용자를 위한 매크로&VBA를 소개하는 목록이 있으니 참고하세요.

 

https://hantip.net/category/%EB%A7%A4%ED%81%AC%EB%A1%9C%26VBA

 

필요하신 분께 도움이 되길 바랍니다.

반응형

+ Recent posts