이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
댓글 '7'
예진님..
아.. 코드 안에 분류 로직이 들어있었군요..
"Program Element"의 앞자리 3글자와 "MDEP"의 내용에 따라 카테고리가 분류되네요..
로직을 분석해보려다가..
용역을 하는것도 아니라서.. 제가 그런 수고까지 할 필요는 없을 것 같네요..
(제 홈페이지는 모르는 부분을 알려드리는 것이지.. 어떤 일을 대신 해드리는 공간이 아닙니다.)
로직을 정리해주시면 피벗테이블로 만들어보겠습니다.
예)
Program분류 기준 결과
"Ground OPTEMPO" "Program Element"의 앞 3자리 + "MDEP"의 첫글자 "112W"
"Ground OPTEMPO" "Program Element"의 앞 3자리 + "MDEP"의 첫글자 "113W"
기존의 코드는 엑셀 전문가가 아닌 프로그래머가 짜신 것 같네요..
코드의 재활용도가 떨어집니다.
피벗테이블로 만들면 업데이트도 쉽고 굳이 vba로 하지 않아도 됩니다.
즐거운 하루 되세요~ ^^
예진님..
처음부터 조건이라던가 제반 사항을 잘 전달해주셨으면 오해를 안했을텐데요..
덩그라니.. 옛날 코드를 수정해서 새로운 보고서 형태로 만들어달라고 하시면.. 곤란하지요.. @_@;;
예전에 이런 사내 데이터를 이용한 특정 형태의 보고서를 만들어주는 아르바이트를 한적이 있었습니다.
이것보다는 복잡하고 차트와 요약 테이블이 몇십개 되는 일이었지만.. 당시 180만원 정도 받았던걸로 기억하네요..
자꾸 이러시면.. 청구서를 송부해드리는 수가 있습니다. ㅎㅎ
요구하신 조건에 맞춘 카테고리를 분류하는 수식은 아래와 같습니다.
=IF(T9=1,"Civilian Pay",IF(OR(AND(VALUE(LEFT(N9,3))>=111,VALUE(LEFT(N9,3))<=116,LEFT(P9,1)="W"),LEFT(N9,3)&P9="116VFHM",LEFT(N9,3)&P9="121VFHM",P9="TCBC"),"Ground OPTEMPO",IF(P9="VFHP","Flying Hours",IF(OR(P9="TATM",P9="TAVI",P9="TSAM",P9="TCSC",P9="VSCW"),"TSS",IF(OR(LEFT(N9,3)&LEFT(P9,1)="121W",P9="TSGT",P9="TSPU",P9="TTDY",P9="TDLP",P9="XISQ",P9="VJCS"),"OPRED/Training Enablers",IF(OR(P9="VFRE",P9="VIRQ"),"OCO","Other"))))))
위 분류 수식을 AV열에 집어넣었구요..
그걸 기준으로 피벗테이블을 구성했습니다.
Result시트 하단에 옛날 보고서 형태로도 만들어 놨구요..
(피벗테이블 결과도 기존 값과 정확히 일치하더군요..)
REPORT시트에 새로운 보고서 형태로도 만들어놨습니다.
이제 데이터가 추가되어도 피벗테이블 새로고침만 하시면 자동으로 업데이트 될겁니다.
(아.. 원본 데이터 영역은 늘어난 만큼 수정해주셔야 반영됩니다.)
피벗테이블로 만들면..
피벗테이블 필드목록 창에서 임의로 마음껏 수정해서 사용할 수 있으니 편리하지요..
첨부파일을 참고하세요..
다운받기 : Execution_3.xlsm
예진님..
제가 드린 답변은 활용하시는건가요?
오랫만에 엑사모에 놀러갔다가 질문게시판을 보다보니..
어디서 많이 보던 코드가 있어서 봤더니 예진님 질문이더군요..
조태평님과 황기성님이 열심히 답변 달아주시던데요..
황선생님이 답변 잘 주신 것 같은데..
제 홈페이지에도 같은 질문을 올리신 의도가 뭔가요?
예진님..
오랫만이시네요.. ㅎㅎ
VBA를 실행해봤는데..
머 아무런 동작은 안하던데요.. 전체 데이터가 다 있는게 아니라서 그런가요?
암튼.. 코드 분석은 안해봤구요..
저걸 수정해서 사용하느니..
그냥 피벗테이블로 만드는게 편할 것 같은데요..
나중에 양식이 바뀌어도 변경이 쉽고요..
첨부파일의 피벗테이블을 참고해보세요..
다운받기 : Execution_2.xlsm