SAS에는 intck()라는 날짜 관련된 함수가 있다. 엑셀에서는 edate()라는 함수가 있다. 엑셀에서 자료를 만드는 팁을 공유하고자 한다.


 e6 셀에 다음과 같은 자료가 있다. e6 = "201601"


우리는 이 연월 텍스트 자료에서 1달씩 늘어나는 자료를 만들어야 한다. 원하는 포맷은 아래와 같다.


"201601",0,"201601"

"201601",1,"201602"

"201601",2,"201603"

"201601",3,"201604"

"201601",4,"201605"

"201601",5,"201606"

"201601",6,"201607"

"201601",7,"201608"


 이럴 때 함수는 = text(edate(date(e6, 4), mid(e6, 5, 2), 1), f6), "YYYYMM")


 엑셀에서 이런게 되려나 한참 고민을 했지만, 검색하면 바로 좌라라락 나온다. 역시나 엑셀 같은 것은 백날 생각하거나 책을 찾는 것보다 검색 하는 것이 확실하게 효율적이다. 문제는 내가 뭘로 검색해야 하는지 이해하기가 쉽지 않으니 말이다.


  이번에는 Payback month를 계산하는 공식을 적어본다.


 =iferror(match(true, index((e151:bl151)>0, 0), 0) -1, "Over 5YR")


 위의 공식은 나도 받아서 사용중인데, index에 대한 개념이 없어서 아무래도 더 검색을 해야 한다.

반응형

'VBA' 카테고리의 다른 글

VBA를 일부러 멀리 했던 이유  (0) 2016.10.16
코딩을 참 잘하는 줄 알았다.  (0) 2016.10.16
VBA loop break : exit for  (0) 2014.10.03
VBA 다시 손대는데 생각보다 재미있구만.  (0) 2014.09.30
VBA 구조체  (0) 2014.09.29

 내가 일하는 곳은 금융회사이고 엑셀이나 액세스를 잘 쓰는 것을 일종의 "잔기술"이라고 치부하는 경향이 강하다. 오퍼레이션이나 전산팀은 상황이 좀 다르겠지만 나는 현업에서 일하면서 통계팩키지로 일을 하는 상황이어서, SAS이외에 VBA까지 손을 대기 시작하면 일이 늘어나면 늘어났지 결코 줄지는 않게 된다. 그리고 그러한 것을 요청하는 사람들은 그냥 해달라고 하는 것이지 내게는 아무런 소득이 없게 된다.


 처음에 내가 맡았던 일들은 주로 자료를 뽑고 캠페인 리스트를 만들고 MIS를 만드는 것이었다. 처음에는 분석이나 그러한 일을 맡지 않았으므로 엑셀을 직접 다룰 일은 거의 없었다. 나중에 시뮬레이션이나 분석 업무를 맡게 되면서 다이나믹 분석이 필요한 일을 하면서 조금씩 VBA를 쓰게 되었다. 정말 많이 사용할 때에는 천 줄이 넘는 코드도 만들었고 배열로 처리하면서 각종 자료들을 직접 돌리기도 했다.


 액세스는 익숙하지 않았고 대부분의 업무가 실제 자리에서 보여주면서 시뮬레이션을 하는 것이므로 주로 엑셀VBA를 많이 사용할 수밖에 없었다. 처음에는 각종 제어 업무 위주로 사용했는데, 최근에는 그 이상을 넘어서 엑셀에서 실제 셀의 위치를 계산하면서 자동화하는 업무를 하게 되었다. 이것은 과거 하루가 넘게 복사+붙여넣기 하던 내 인생을 훨씬 더 자유롭게 해주었다. 매번 수정해야 하는 가변적인 업무이므로 실제 분석에서 빠른 계산과 응용이 없는 VBA는 오히려 독이 될 수 있었다.


 여하튼 지금은 시뮬레이션에서 예측 부분을 수기로 작성하는 것을 VB Script로 대체할 수 있었다. 이걸로 인해서 시간과 노력을 줄일 수 있었고 덤으로 휴먼 에러(손으로 할 때 생기는 잘못)도 없앨 수 있었다. 어찌 되었거나 당신이 사무실에 있다면 절대 VBA로부터 벗어날 수 없다. 나도 왠만큼 피해보려고 했는데, 이제는 그냥 적당히 받아들이고 살아보려고 한다.




반응형

'VBA' 카테고리의 다른 글

날짜와 관련된 엑셀 함수  (1) 2016.11.15
코딩을 참 잘하는 줄 알았다.  (0) 2016.10.16
VBA loop break : exit for  (0) 2014.10.03
VBA 다시 손대는데 생각보다 재미있구만.  (0) 2014.09.30
VBA 구조체  (0) 2014.09.29

 나는 코딩을 어깨 너머로 배웠다. 초등학교 6학년때까지 당시 유행하던 GW-BASIC을 배웠고 기본적인 문법에 대한 개념은 있었지만 실제 코딩은 군대에서 그리고 회사에서 배웠다. 지금 생각해 보면 가장 필요했던 프로그래밍 언어는 SAS, R, VB 순이었지만 나는 의도적으로 VB는 멀리했다. 그것이 저급언어라고 생각했고 나름 프로그래머가 되고 싶었던 나는 주제에 맞지 않게 C/C++ 그리고 자바순으로 공부했다. C언어를 하면서 포인터로 고민했고 상당히 많은 것들이 C++에서는 나아졌다고 생각했는데, 자바는 완전히 신세계였다.


 회사에서는 SAS를 쓰고 대학교/대학원에서는 주로 R을 사용했다. 내 대학교 전공은 경영이었지만, 군대에서 통계에 매력을 느끼게 되었고 방송대에서 정보통계학과에 편입하여 졸업했다. 이후 야간MBA를 나오고 다시 방송대 바이오통계학과에 들어가서 공부하고 있다. 통계에 대해서는 제대로 배워보고 싶어서 거의 10년이 넘는 기간동안 공부를 해왔지만, 코딩은 어깨너머로 사수에게 배운 걸로 대체하고 있다. 물론 제대로 배워서 써먹을 수 있겠지만 본사 정책의 변경으로 모델링을 직접 하지 않게 된 이후로는 고급통계 지식을 회사에서 쓰기는 어려웠다.


 프로그래밍을 제대로 배우지는 않았고 열혈강의 시리즈나 다른 여러가지 책을 통해서 코딩에 대해서는 많이 배워놨다. 그래도 전공자 그것도 석사 이상을 만나면 압도되고는 한다. 회사에서 컴공 석사가 같은 부서로 왔는데 부서 이동전에 중급 이상의 실력으로 들어와서 자기 혼자서 다 코딩을 하고 있더라. 나름 이분야가 전문 분야라고 생각했는데, 괴수급으로 일하는 것을 보면 입이 딱 벌어지더라. 그 녀석 왠만한 언어는 대충 책 몇 번 보고 그냥 코딩할 정도의 실력은 있더라. "뭐, 돌아만 가면 되잖아요."라고 말하는데, 왠만한 스크립트 언어는 대충 깔아뭉개는 녀석이다. ㅎㅎ 통계쪽도 R 정도는 되어야 하고, SAS는 그냥 코딩 가능한 패키지이고 SPSS는 엑셀이다 라고 말하기는 한다.


 요즘 들어서는 이쪽 분석가들도 대규모 데이터를 만지고 시각화를 많이 하다보니까 예전처럼 SAS만 갖고 모든 것을 다 하는 분위기는 아니다. 나는 당장 시뮬레이션이나 테스트를 엑셀로 하는 경우가 많은데, 그렇다 보니 상당히 많은 분량의 복사해서 붙여 넣기 일을 해야 한다. 예전에는 적당히 하면서 했는데, 이번주에는 정말 틀리면 안되는 거라서 VB 코딩을 시작했다. VB도 전혀 모르는 것은 아니고 예전에 대학원 다닐때, 많이 해봤는데 코딩을 한다기 보다는 필요한 각 명령어들을 어떻게 호출하면 되는지만 알면 되는 거라서 싫어했다.


 뭔가를 많이 외우고 어디에 뭐가 있는지를 알면 그때마다 검색을 하거나 해서 대충 코딩하면 아주 잘 돌아가는 게 VB였으니까. 어찌 되었던 이번에는 아주 정말 잘 사용했고 앞으로는 자주 사용할 예정이다. 다만 사람들이 싫어하는 .xlsm보다는 .xlsx를 많이 써야 하니까 코딩은 엑셀 시트에 별도로 저장하고 필요할 때만 그때그때 편집기 열어서 돌릴 생각이다.


 나는 코딩이나 지식이나 필요한 사람들에게는 공유하는 편이기 때문에 그래도 된다고 본다.


 다음에는 왜 내가 VBA를 의도적으로 피했는지 그리고 왜 하게 되었는지 적어보고자 한다.



반응형

'VBA' 카테고리의 다른 글

날짜와 관련된 엑셀 함수  (1) 2016.11.15
VBA를 일부러 멀리 했던 이유  (0) 2016.10.16
VBA loop break : exit for  (0) 2014.10.03
VBA 다시 손대는데 생각보다 재미있구만.  (0) 2014.09.30
VBA 구조체  (0) 2014.09.29

 오늘 회사에서 VBA 코딩하다가 이걸 빼먹고 돌려서 컴터가 갑자기 얼어 버렸다.


http://msdn.microsoft.com/en-us/library/t2at9t47.aspx

반응형

'VBA' 카테고리의 다른 글

VBA를 일부러 멀리 했던 이유  (0) 2016.10.16
코딩을 참 잘하는 줄 알았다.  (0) 2016.10.16
VBA 다시 손대는데 생각보다 재미있구만.  (0) 2014.09.30
VBA 구조체  (0) 2014.09.29
vba : date_macro  (0) 2014.09.28

 급한 마음에 다시 시작하기는 했지만 짧은 시간내에 가능할지 이런저런 


반응형

'VBA' 카테고리의 다른 글

코딩을 참 잘하는 줄 알았다.  (0) 2016.10.16
VBA loop break : exit for  (0) 2014.10.03
VBA 구조체  (0) 2014.09.29
vba : date_macro  (0) 2014.09.28
k-means clustering in vba  (0) 2014.05.28

 어떻게 하다가 보니까, 이제는 VBA에서 구조체까지 가게 되는구나. 솔직히 이야기 하면 이렇게라도 할 수 있는게 다행이다 이런 생각이 들 정도이네.


http://www.java2s.com/Code/VBA-Excel-Access-Word/Data-Type/AnExampleofUsingaTypeStructure.htm


 이렇게 구조체를 만들어야 할지도 모르겠는데...


테스트를 해보니 다행히도 되는구나. 이것 갖고 내일 회사 가서 비슷하게 연산하는 것만 짜면 되겠구나. 에효...


Option Base 0


Public Type vin
    vintage As Double
    mob As Integer
    bal As Double
End Type


Public Sub test()
    Dim i, j As Double
    Dim kj_vin(144) As vin
   
    For i = 0 To 11
        For j = 0 To 11
            kj_vin(i * 12 + j).vintage = 201401 + (i * 100) + j
            '201401 + (i * 100) + j
            kj_vin(i * 12 + j).mob = j
            kj_vin(i * 12 + j).bal = 100
        Next j
    Next i
   
    Debug.Print kj_vin(143).vintage
End Sub

반응형

'VBA' 카테고리의 다른 글

VBA loop break : exit for  (0) 2014.10.03
VBA 다시 손대는데 생각보다 재미있구만.  (0) 2014.09.30
vba : date_macro  (0) 2014.09.28
k-means clustering in vba  (0) 2014.05.28
Access VBA  (0) 2013.04.28

+ Recent posts