구본형 변화경영연구소

단군의

/

2단계,

두

  • 어 부
  • 조회 수 21612
  • 댓글 수 339
  • 추천 수 0
2014년 9월 21일 13시 47분 등록

VBA 보조필살기 만들기 Project

 

단군 200일차를 시작하는 마음가짐

 1. 중요한건 지금하는 단군의 후예 활동을 믿느냐 안 믿느냐다. 나는 믿는다. 나답게 살기 위해서 결과가 어떻든 밀어붙인다.

   - 영화 머니볼, 자기답게 살고자 애쓰는 자들을 위해 축배를 

 

 2. 현실과 이상의 경계를 잘 걷는다. 그러기 위해서 성실해야 된다. 

     구직과 관련 된 모든 행위에서 성실해야 한다. 

     내가 정말 잘하고 좋아할 수 있는 일을 찾기 위해 하루를 되돌아보고, 나에 대해 정리한다. 그리고 생각을 매일 실천한다.    

 

새벽시간과 새벽활동

 기상시간: 5시 30분

 활동시간 : 오전 6시 00분~ 오전 8시 00분(엑셀), 재활 : 오후 6시 ~ 오후 7시(집을 나설 일이 있을 때는 엑셀 활동 후)

 새벽 활동 : 엑셀 공부(2시간), 어깨 재활 운동(1시간)

 기상 시나리오: 5시 30분 기상, 요가 10분, 물 한잔 먹고,  스트레칭 하면서 컴퓨터 키기 

 
전체적인 목표

  엑셀 VBA 숙달, 어깨 재활

 

엑셀공부의 의미

  1. 내가 잘하고 싶고, 재밌어 하는 것으로 하루를 시작

  2. 단군 활동으로(나의 노력으로) 자신을 믿는 과정

  3. 취업을 다른 사람들에게 의존하지 않고 내 힘으로 해처나가겠다는 의지

  4. 다른 지원자들과의 차별점

 

재활운동의 의미

  1. 건강에 대한 욕망 실현

  2. 장기전을 위한 체력 비축

 

개인의식

  1. 기상 후 3분 요가

   가. 3분도 집중해서 요가하면 짧은 시간이 아님. 몰입도를 느낀다.

   나. 단 3분으로 내가 좋아하는 것을 매일 하는 것에 대한 유익함(건강)과 성장(유연성)를 확인한다.

   다. 삶에 쫓기지 않고, 내가 삶을 이끈다는 느낌을 받는다.

 

  2. 귀가 후 버스에서 하루 되돌아보고 정리하기(나와의 대화)

   가. 그 날 어떤 일이 있었고 내가 어떤 행동을 했고 왜 그런 행동을 했는지 생각하고 핸드폰 메모장에 적기.

 

중간 목표

  1. 엑셀(직접 VBA를 짜보는 것을 원칙으로 한다.)

 

  목표1: VBA 지식 넓히기, 익숙해지기

  세부활동: 엑셀장인의 엑셀 매크로&VBA 마스터링 북 1회독. 매크로 기록해보면서 따라한다. 모르는건 카페에 들어가서 질문한다.

                    책만 무작정 보지 않고 http://www.uno21.com/에 들어가서 문제도 풀어보며 점검 한다.

  목표기간: 9월 22일 ~ 11월 30일

  
  목표2: 컴활 1급 취득

  세부활동: 아이티고 강의이용해서 컴활 1급 시험 준비

  목표기간 

   필기: 2014년 10월 18일(접수기간: 2014.09.25 ~ 2014.10.01)  
   실기: 2014년 11월 29일(접수기간: 2014.11.06 ~ 2014.11.12)

 

2. 어깨 재활 운동

  목표1: 오른 쪽 어깨 회전 근 강화

   세부활동: 밴드 운동, 바쁠 때는 코어운동과 오른쪽 어깨 밴드운동으로 대체.

   목표기간: 9월 22일 ~ 11월 31일

 

   
목표 달성 과정에서 직면하게 될 난관과 극복 방안

 1. 왜 아침에 일찍 일어나야 하는지 의문에 대한 대답

 
  가. 저녁에는 각종 유혹(친구들과의 만남, TV, 인터넷 딴 짓)으로 하고자 하는 일을 놓칠 수 있음.

 
  나. 엑셀, 재활은 꼭 하고 싶고 중요한 일이며, 이 일들을 매일 하기 위해서는 아침에 일찍 일어나서 하는 것이 확실 함.

 
  다. 늦게 자면 늦게 일어나게 되고 하루의 시작이 순조롭지 못하지만 일찍 일어날 경우 하루의 시작을 좋게 함.

 
  라. 현재 시간을 자유롭게 조절하기 가장 좋은 시기이므로 좋은 습관을 만들기에 적합.

 
  마. 수련기간 중간에 취업을 하더라도 버스에서 노트북으로 엑셀 공부라도 할 수 있음.

 
  바. 어쩔 수 없이 늦게 자서 일찍 일어나 피곤한 경우가 생긴 경우 하루 단위로 보면 손해이지만

 
      길게 보았을 때는 이득임.(회사를 다니면서 계리 자격증을 딴 삼성화재 직원의 경우 전날 술자리가 있었어도

 
      토, 일요일에 무조건 8시에 도서관을 갔다고 함, 피곤한 날도 있지만 자신과의 약속을 지킴으로 전체적으로

 
      충실한 수험 공부를 가능케 함)

 
  사. 밤에 집중이 잘 되는 스타일이지만 그것 또한 하나의 습관으로 자리 잡아서 그런 것, 아침에 집중하는 습관을

        만들자, 단지 힘들고 좀 오래 걸릴 뿐이다.

  
   
2. 밤에 늦게 자는 습관

 
 가. 집에 귀가 후 간단히 운동 후 바로 씻고 밥 먹는다.

 
 나. TV 근처에 가지 않고, 컴퓨터를 밤에 켜지 않는다.

 
 다. 스마트폰으로 구본형 선생님 글을 오래 읽지 않고, 책을 아예 빌려 본다.

 
 라. 과거 밤에 하던 습관들을 요가, 책읽기로 대체 한다.

 
 마. 일주일 단위 계획을 세운다 해야 할 일을 만들어 일찍 자야하는 이유를 분명히 한다.

 

 하루를 개편하기 위해 하는 일임을 잊지 말자!

 

 
3. 왜 엑셀 공부와 재활운동을 해야하는가

 
 가. 두 활동 모두 하고 싶은 일이고 성과가 뚜렷하게 나오기 때문에 지킬 확률이 높음.

 
 나. 엑셀의 경우 어딜가도 쓰임, 특히 계리에서는 중요함. 취업에 있어서 급한 일은 아니지만 급한 일만 하다보면

 
       정작 중요한 일을 항상 못함, 회사에서 알바 시 시킨 일만 하다보면 정작 내 실력을 늘리기 위한 시간을 못 낸

 
       경우가 많았음, 엑셀만 잘 해도 업무 시간 단축과 일 잘한다는 소리 듣기 쉽다는걸 깨닳음 엑셀의 기능은 무궁무진함.

 
 다. 재활 운동 또한 많은 시간을 집중해서 적어도 3달이상 투자해야 효과가 나옴, 그리고 어깨가 아프면 운동을 제대로

 
       못하고 체력이 금방 약해짐, 나중에 회사생활을 위해서라도 꼭 필요함.

 

 
목표를 달성했을 때 내 삶에서 일어날 긍정적인 변화 묘사

 1. 엑셀 관련

 
  가. 회사에서 나만의 무기를 만들기 위한 하나의 강력한 tool 이 되어 줄 것임.

 
  나. 엑셀을 잘 하는, 꾸준히 해온 내 모습에서 자신감을 얻을 수 있음. 빠른 잡무 처리 및 반복적인 업무를 재밌게 할 수 있음!

 

  다. 단군의 후예 축소판으로 1000시간(1년 조금 넘게) 실행 후 노력에 대한 성과 확인 가능! 이로 단군의 후예 10000시간 법칙에

       내가 정말 필살기로 만들고 싶은 걸 시작!

      

 
2. 재활 관련

 
  가. 건강한 몸을 통해 긍정적인 마음, 자신감을 더 갖게 될 수 있음.

 
  나. 꾸준한 건강관리를 위한 초석이 되어 줄 것임.

 
  다. 좋아진 내 몸 보면 좋겠지.

 
3. 아침 기상 습관으로 하루 개편 성공 시 내가 원하는 삶을 사는 초석이 됨.


 

목표 달성 시 나에게 줄 보상

 미루지 않고 여행을 떠난다. 한 3박 4일 정도 산, 바다가 있는 곳

IP *.77.214.44

댓글 339 건
프로필 이미지
2014.09.21 20:40:41 *.47.47.81

엑셀을 잘 해야 한다는건 알지만 실질적으로 잘 하는 분들은 많이 못 봤어요.

엑셀은 그 누구보다 강력한 필살기가 될 꺼에요.


저한테 요가는 호흡하는 시간이 제일 좋던데... ^^

프로필 이미지
2014.09.21 20:58:23 *.77.214.44

꼭 제 필살기로 만들겠습니다!

스트레칭 조금씩 해주시면 좋습니다!ㅎㅎ

프로필 이미지
2014.09.22 07:55:32 *.225.9.66

일차 / 날짜 : 1일차 / 9월 22일 (월)

취침 / 기상시간 : 오전 2시 30분/ 오전 5시 00분
수면/ 활동시간: 2시간 30분/  7시 15분 ~ 7시 50분

게 잔 이유: 농협생명자소서 작성, 완성 못함. 보증보험은 못 씀

 

아래는 16개 금액 중 6개 금액을 합쳐서 13971847 나오는 6개 금액과 금액의 순서를 찾는 것.

데이터

538346
919490
1326799
1386380
2442050
2442050
2442686
2442686
2612717
3000000
3000000
3664029
4000745
5000000
6106714
6305060

너무 VBA 익숙하지 않은게 티남. 더 간단히 세련되게 코딩 다시 해 볼 것.

 

 

 

Sub 단추2_Click()
Dim vsdata(15) As Variant, vsumf As Variant
Dim rt As Range

Set rt = Range(Range("a1"), Range("a1").End(xlDown))

For Each c In rt
   vsdata(c.Row - 1) = c

Next

For i = 0 To 10
   For j = i + 1 To 11
      For k = j + 1 To 12
         For l = k + 1 To 13
            For m = l + 1 To 14
               For n = m + 1 To 15
                 
                  vsumf = vsdata(i) + vsdata(j) + vsdata(k) + vsdata(l) + vsdata(m) + vsdata(n)
                  If vsumf = 13971847 Then Debug.Print vsdata(i); vsdata(j); vsdata(k); vsdata(l); vsdata(m); vsdata(n); i; j; k; l; m; n
              
               Next
            Next
           
         Next
  
      Next
  
   Next
Next

 


End Sub

몰입도 4

만족도 2.5 금요일 업무시간에 했던거 복습한건데 아직 코딩이 미숙함. 수정해 볼 것. 이제 급한거 빨리 하자. 우선순위도 좀 있어야지

프로필 이미지
2014.09.22 18:22:27 *.230.195.61

출사표가 단단하니, 이번 200일도 단단하겠군요.

응원합니다. 석찬님의 자신감.

프로필 이미지
2014.09.23 02:47:57 *.77.214.44

일차 / 날짜 : 2일차 / 9월 23일 (화)

취침 / 기상시간 : 오후 10시 00분/ 오전 2시 30분
수면/ 활동시간: 4시간 30분/  무, 농협생명 자소서 썼음.

게 잔 이유: -

숙면 에 대해: 밤 늦게 밥 먹은게 소화가 안되서 더부룩함. 다시 밤에 먹는 걸 줄여서 숙면을 하도록

 

프로필 이미지
2014.09.23 21:57:56 *.77.214.44
프로필 이미지
2014.09.23 22:27:38 *.115.225.225

어부님 화이팅 ㅎㅎ 이름이 특이하네요 

프로필 이미지
2014.09.25 05:39:07 *.77.214.44

일차 / 날짜 : 4일차 / 9월 25일 (목)

취침 / 기상시간 : 오후 10시 45분/ 오전 5시 25분
수면/ 활동시간: 6시간 40분/ 6시 7분 ~8시 30분

게 잔 이유: -

숙면 에 대해: 저녁 안 먹고 잤더니 속이 편했음, 그런데 추워서 푹 못잠. 나는 추위를 많이 타니까 이제 옷을 껴입고, 이불 두꺼운 걸로 바꾸고 숙면하겠다.

 

 

내가 정확히 알아야 할 부분.

1. 찾기 기능을 이용한 코딩. 

2. range에서 대괄호 쓰는 법.

3. 변수 선언에 대해서. 변수 이름 짓는 것.

4. 지역창이랑 조사식 창 이용 방법. 그리고 디버깅 하는 절차.

5. row, rows 차이.

6. 특정 범위의 값을 배열로 받기.

 

1. 찾기 기능

찾기 기능 쓸 때 찾을 위치를 해당 범위의 첫 번째 칸부터 찾게 세팅. 그러기 위해 After 에 해당 범위의 마지막 셀을 선택하면 됨.

예로 Set rf = [A1: D9]

rf.Find(What:="수학", After:=rf(rf.count), ~~ 

그리고 찾는 걸로 반복문 돌릴 때 주소 받는 것 다시 복습 할 것.

 

 

2. Set rf = [A1: D9]

Range("B7:B20").Select   '콜론을 이용, 범위잡음 =[B7:B20]=Range("B7", "B20")

Range(Range("B7"), Range("B6").End(xlDown)).Select
'위에 것보다는 아래것을 주로 사용, Rows.Count=시트의 맨 마지막행
Range(Range("B7"), Cells(Rows.Count, "B").End(xlUp)).Select

 

3. 변수 이름 짓는 것.

Boolean  b  Dim bLine As Boolean
Integer  i  Dim iNum As Integer
Long  n  Dim nClr As Long
Single  sl  Dim slDon As Single
Double  dl  Dim dlDon As Double
String  sr  Dim srInp As String
Date  dt  Dim dtX As Date  Date에는 시간 포함
          ti  Dim tiX As Date
Range  c  Dim cd As Range 하나의 셀
            r  Dim rs As Range 셀 범위
Worksheet s  Dim ss As Worksheet
Workbook wb  Dim wbs As Workbook b는 Boolean이 사용
Variant  v  Dim vg

 

 '동적배열의 사용.

 

Sub 배열2()  
   Dim asr교통수단() As String
   '이런저런 코딩…
   ReDim asr교통수단(5)   '배열크기(저장공간) 재설정
   asr교통수단(0) = "자동차"
   asr교통수단(1) = "배"
   asr교통수단(2) = "자전거"
   asr교통수단(3) = "기차"
   asr교통수단(4) = "우주선"
   asr교통수단(5) = "비행기"
   MsgBox asr교통수단(5)
   ReDim Preserve asr교통수단(9)   '대입된 값은 그대로 두고 배열 크기만 수정
   'Preserve로 기존 배열 크기를 확장 또는 축소
   'Preserve 없이 사용하면 모든 요소값을 모두 빈문자열로 초기화
   MsgBox asr교통수단(7)
End Sub

중복 된 값에서 첫 번째 값에만 특정 값 넣기. 하려고 했던 것 다시 해볼 것.

 

몰입도 2.5

만족도 2.5

 

생활 패턴이 바껴서 그런가. 적응 중.

프로필 이미지
2014.09.25 06:00:46 *.77.214.44
프로필 이미지
2014.09.27 05:43:16 *.77.214.44

일차 / 날짜 : 6일차 / 9월 27일 (토)

취침 / 기상시간 : 오후 11시 00분/ 오전 5시 25분
수면/ 활동시간: 6시간 25분/ 5시 45분 ~ 7시 52분

게 잔 이유: 10시 반에 누웠는데 잠이 금방 안 왔음. 낮에 졸아서 그런 듯.

숙면 에 대해: 저녁 먹는 시간을 빨리 해야 함. 어제도 손해보험협회 원서내러 나갔다가 들어오니 저녁을 9시에 먹게 됨.

 

ch37 다른 사람의 코드 분석방법(디버깅)

001 정의된 이름으로부터 시트 알아내기

 

Sub 종목검색()
Dim c As Range
Dim sr상호 As String

sr상호 = ActiveCell.Offset(1, 0).Value

1 For Each c In Range("na회사목록")
    If c = sr상호 Then
       Range("종목코드") = c.Offset(0, -1)
       Exit For    ' for 문 빠져나가는 거.
    End If
  Next
End Sub

 

"na회사목록" 정의 된 이름을 알기 위해서

직접실행창에 ?Range("na회사목록").worksheet.Name

worksheet에 parent 입력해도 되지만 자동 완성기능은 없음.

 

002 셀로부터 시트나 통합 문서알아내기

Sub 아래로_끝셀_받기()
Dim cStart As Range
Dim cEnd As Range
Dim sht As Worksheet

Set cStart = Worksheets(1).Range("B7")
1 Set cEnd = cStart.End(xlDown)
MsgBox cEnd.Worksheet.Name
2 Set sht = cEnd.Parent
End Sub

 

cEnd의 시트 선택

직접실행창에 cend.Parent.select

 

cEnd의 통합문서 선택

직접실행창에 cend.worksheet.Parent.select

or cend.Parent.Parent.select

 

783p 수식분석

수식에서 큰 따옴표 ""는 매크로에서 큰 따옴표 네번 입력

 

Sub 수식분석()
Dim rx As Range, c As Range
Set rx = [a2:g5]
With rx.Columns(rx.Columns.Count) 'g column
   i = 2
   adr = .Cells(i).Offset(, -6).Address(0, 0) '찾을 값
   '여기서 아래 .Cells(i)는 G3셀이 됩니다
.Cells(i) = "=IF(" & adr & "="""","""",VLOOKUP(" & adr & ",품목표,6,0))"
2  '=IF(A3="","",VLOOKUP(A3,품목표,6,0)) '윗줄의 실제 수식내용
End With
End Sub

 

코딩시 수식은 매크로 기록 후 수정하는 것이 편함. 783p 참고.

 

 

004 배열 자료가 어떻게 담겼는지 확인

 

Sub 배열분석법()
sr = "77,88,80,55,59,44,111,144"
1 a = Split(sr, ",")  Split으로 배열 담는 법
MsgBox a(1)
End Sub

 

지역창에서 확인 하는 방법도 있지만, 지역창은 모든 변수를 다 표기하므로

알고 싶은 변수만 확인 할 때는 지역창에서 f8롤 알고자 하는 변수의 라인까지 실행 후

알고자 하는 변수에 커서를 두고 shitf+f9

 

row vs rows

row 활용구문. 해당 변수의 행 값

roE = cs(0).End(xlDown).Row

 

rows 활용구문

가장 마지막 행 표현 할 때 rows.count 많이 사용

Range([b4], Cells(Rows.Count, "b").End(xlUp)).Select ,

 

'레인지의 행개수 표현시
Debug.Print Range("B7:B11").Rows.Count

 

'범위에 두번째 행 

Range("c7:g11").Rows(2).Select  

 

특정 범위의 값을 배열로 넣는 것(다시 봐 볼 것)

 

Sub 단추2_Click()
Dim vsdata(15) As Variant, vsumf As Variant
Dim rt As Range

Set rt = Range(Range("a1"), Range("a1").End(xlDown))

For Each c In rt
   vsdata(c.Row - 1) = c

 

배열의 구성원의 합을 application.sum 해서 합치는 것 다시 알아볼 것.

 

몰입도 3.5

만족도 2.5 

 직접 코딩을 거의 못한 날은 만족도 3을 넘길 수 없다. 그래도 모르는 거 넘어가지 않고 다 본건 좋았음. 직접 실행까지 다 해 볼 것.

오늘 한 부분 내일 다시 다 코딩에 적용해 보자.

프로필 이미지
2014.09.27 08:29:29 *.77.214.44

갑자기 생각난 건데. 어렸을 때부터 물고기 잡고 보는 걸 좋아했던게 물고기에 대한 욕망으로 남아있지 않나 생각이 든다.

아직도 그물로 물고기 잡으러 가고 싶은 걸 보면 물고기에 대한 욕망이 있는 듯 하다.

EBS 에서 민물고기를 전문적으로 잡으시면서 생태관람도 하게 하는 분을 봤었는데

한 번 만나보고 싶다는 생각을 했다. 이것도 욕망리스트??

 

프로필 이미지
2014.09.28 07:41:23 *.77.214.44

일차 / 날짜 : 7일차 / 9월 28일 (일)

취침 / 기상시간 : 오후 11시 00분/ 오전 5시 25분
수면/ 활동시간: 6시간 25분/ 6시 20분 ~ 8시 00분

게 잔 이유: TV

숙면 에 대해: 잘 때 좀 추웠음, 옷을 더 껴입고 자야.

 

 

배열 합계 

Application.Sum(vsdata(i), vsdata(j), vsdata(k), vsdata(l), vsdata(m), vsdata(n))

Application.Sum(vsdata(15))

 

단축키

ctrl + f8 현재 커서 까지 실행

ctrl + f9 현재 커서로 실행문 되돌리기

shift + f9

 

변수 선언 관련- range 값을 다른 변수로 받을 때 어떨 때는 .value를 쓰고 어떨 때는 .value 를 안쓸까?

결론은 variant로 변수 선언하면 .value를 안써도 되고, string으로 쓰면 .value를 써서 받음.

그래서 이전 코딩한걸 vsdata(15) As String 로 선언 후 확인해 봤음. 해보니    vsdata(c.Row - 1) = c.Value 가 먹힘.

그런데 문제는 vsdata(15)가 문자로 선언 되어서

vsumf = vsdata(i) + vsdata(j) + vsdata(k) + vsdata(l) + vsdata(m) + vsdata(n)
이게 숫자 합이 안나오고 각 배열의 값을 단순히 연결해버림.

 

Sub Sheet3_단추1_Click()
Dim vsdata(15) As String, vsumf As Variant
Dim rt As Range

Set rt = Range(Range("a1"), Range("a1").End(xlDown))

For Each c In rt
   vsdata(c.Row - 1) = c.Value

Next

For i = 0 To 10
   For j = i + 1 To 11
      For k = j + 1 To 12
         For l = k + 1 To 13
            For m = l + 1 To 14
               For n = m + 1 To 15
                 
                  vsumf = vsdata(i) + vsdata(j) + vsdata(k) + vsdata(l) + vsdata(m) + vsdata(n)
                  If vsumf = 13971847 Then Debug.Print vsdata(i); vsdata(j); vsdata(k); vsdata(l); vsdata(m); vsdata(n); i; j; k; l; m; n; Application.Sum(vsdata(15));
              
               Next
            Next
           
         Next
  
      Next
  
   Next
Next


End Sub

 

삭제 관련 매크로 기록 보기

delete 누르면

Selection.ClearContents

 

art e a a 누르면

Selection.Clear

 

148p clear contents, 병합 셀에서의 문제

[c2:cd2]가 병합되어 있다면 range("c1:c4").ClearContents 쓰면 에러남.

그럴 땐 range("c1:c4")="" 이렇게 처리.

 

 

찾기 기능을 이용한 코딩, 자꾸 까먹는데 그냥 일단 사용폼을 외우자.

Sub Sheet9_단추1_Click()
Dim cd As Range, cd2 As Range, cf As Range, sr As String, c As Range, rf As Range
Set cd = Range("h3")
cd.EntireColumn.ClearContents
Range(Range("c3"), Range("c30000").End(xlUp)).Copy cd
cd.CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlNo
Set cd2 = Range("e3")
cd2.Resize(30000, 2).ClearContents
cd.CurrentRegion.Cut cd2
Set cd2 = Range("e3")

Set rf = Columns("c").Cells ' 열 하나 set, 그래야 찾기 할 때 이 변수를 계속 이용. 첫 행부터 찾는 것도 가능.
For Each c In cd2.CurrentRegion
   Set cf = rf.Find(What:=c.Value, After:=rf(rf.Count), LookIn:=xlFormulas, LookAt _ ' 여기서 set을 다시 이용.
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                    False, SearchFormat:=False)
   adrFirst = cf.Address   ' 여기서 찾기의 무한 루프를 끊기 위한 방법. 찾은 셀의 주소를 받는다.
   Do
      sr = cf.Offset(, -1).Value   '성명
      c.Offset(, 1).Value = c.Offset(, 1).Value & "," & sr
      Set cf = rf.FindNext(cf)    ' 다음 찾기 기능! 여기서 cf로 set을 해 놓은 것이 두가지로 쓰인다. 하나는 주소. 하나는 다음찾기.
   Loop While cf.Address <> adrFirst
   c.Offset(, 1).Value = Mid(c.Offset(, 1).Value, 2)
Next
'ActiveSheet.Range("$H$3:$H$7").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub

몰입도 3.5

만족도 2

코딩을 조금씩이라도 직접 해봐야 된다. 좀 더 몰입할 수 있도록.

프로필 이미지
2014.09.29 06:04:59 *.77.214.44

일차 / 날짜 : 8일차 / 9월 29일 (월)

취침 / 기상시간 : 오후 11시 45분/ 오전 5시 25분
수면/ 활동시간: 5시간 40분/ 6시 00분 ~ 8시 00분

게 잔 이유: 컴퓨터 딴 짓. 안 좋은 습관들이 다시 나타나고 있음. 자소서를 쓴다는 핑계로 컴퓨터 딴 짓이 늘어남. 자소서 초안을 손으로 쓸것.

숙면 에 대해: 잠드는 시간이 불규칙적이다 보니 푹 못자는거 같음.

 

찾기기능 사용한 매크로 복습, 직접 다시 코딩해봤다는데 의의.

 

Sub 매크로1()
'
' 매크로1 매크로
'

'

Dim cs As Range, css As Range, rf As Range, adrfst As String, adrnst As String


Set cs = [c1]
Set css = cs(3, 3)


Columns("E:G").ClearContents
Range(cs.End(xlDown), Cells(Rows.Count, "c").End(xlUp)).Copy css
css.CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlNo
   
For Each c In css.CurrentRegion
   Set rf = Columns("C:C").Cells
   Set cf = rf.Find(What:=c, After:=rf(rf.Count), LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, MatchByte:=False, SearchFormat:=False)
  
   adrfst = cf.Address
  
  
   Do
     
      Set cf = rf.FindNext(cf)
      adrnst = cf.Address
      c.Offset(, 1) = c.Offset(, 1) & ", " & cf.Offset(, -1)
  
   Loop While adrfst <> adrnst
  
   c.Offset(, 1) = VBA.Mid(c.Offset(, 1).Value, 3)
  
Next
End Sub

의문점은 분명히 코딩 중에   Loop While adrfst <> adrnst 이게 안 먹혔었는데

또 갑자기 되네. 뭐가 문제였는지 모르겠음.

문자의 비교에서 단순히 연산자를 쓸 수 없는 줄 알았는데.

뭐를 모르는지 모를 때의 답답함. 코딩 또 하다보면 나오겠지.

 

우노싸이트 보다가 재밌는거 발견. 앞으로 문제 꾸준히 풀어볼 수 있겠다. 

 

01
이름짓기의 활용|Power Of Naming
이름짓기, Naming은 VBA를 하던
손으로 메뉴의 기능만 다루던 기본적으로 잘 활용하여야 하는 기능이다


Evaluate의 응용
아래의 그림과 같이 B열에 34,12,43,55 등과 같이 숫자를 콤마로
구분해 놓은 정보가 들어있다
이것을 콤마를 전부 +로 바꾸어서 계산하는 수식을 만들기!!
물론 VBA사용하지 않는다

힌트는 수식에 이름을 지어 넣어서 활용한다

 

몰입도 4

만족도 3.5

내일은 찾기 기능 다른 예제 만들어서 해 볼것.

프로필 이미지
2014.09.29 11:17:01 *.77.214.44
프로필 이미지
2014.09.30 08:51:17 *.77.214.44

일차 / 날짜 : 9일차 / 9월 30일 (화)

취침 / 기상시간 : 오후 11시 30분/ 오전 8시 00분
수면/ 활동시간: 8시간 30분/ 무, 위기다. 출석하고 다시 잠들었다.

게 잔 이유: 자소서 작성을 미리 준비하지 않아 준비가 늘 미흡하다. 그래서 마감기간까지 억지로 쓰는 중이다. 안 좋은 습관이다.

                          취업시즌으로 인해 하루를 개혁하는데 위기가 오고 있다. 좀 더 간절해야 된다.

숙면 에 대해: 잠드는 시간이 불규칙적이다 보니 푹 못자는거 같음

 

현대해상 자소서 작성, 오늘 중으로 제발.

그리고 단군의 후예 그냥 새벽에 일어나는거만 하지 말고, 생각했던 대로.

 

미침에 대하여

 

나는 어떨 때 한가지 일에 몰입하고 열정적이게 될 까.

그동안 한가지 일에 몰입했던 적은 중학교 오래달리기, 고등학교 수험생활, 대학교 동아리 시절 상모돌리기, 군 제대 후 전공공부.

 

일단 조금은 관심있어하는 일에서 다른 사람들이 잘 하는 것을 보고 경쟁심에 발동이 걸릴 때 자극받고

열심히 하기 시작한다. 경쟁심이야 말로 초기에 열정을 쏟게 만드는데 늘 핵심이었다.

 

 그리고 내가 잘 하는 것에 다른 사람들로부터 주목을 받을 때 아무래도 더 힘이 났던 듯 했다.

 

 

 이런 외부의 자극을 바탕으로 일정시간과 집중력을 바탕으로 노력을 쏟아 부울 때

비로서 혼자서도 집중하고 몰입할 수 있었던 듯하다. 위 몰입 경험에서 하기 싫고 힘들었던 경우도 많았지만 그래도 

매일 노력을 할 때 몰입이 가능했다. 이것 또한 중요하다.

 

노력을 지속적으로 쏟아 부울 때 열정이 지속된다.

프로필 이미지
2014.09.30 12:26:44 *.236.3.225

노력을 지속적으로 쏟아 부울 때 열정이 지속된다! 저도 명심 ㅎㅎ

요즘 시즌이 시즌인만큼 엄청 정신없으실 것 같아요- 자극받으려고 몰래몰래 눈팅하고 있습니다! 부족장님 홧팅이요~*

프로필 이미지
2014.09.30 22:35:20 *.7.58.56
응원 감사합니다! 함께 오래가면 좋겠어요 ㅎㅎ
프로필 이미지
2014.09.30 12:28:05 *.242.48.1

VBA를 해 본지 너무 오래되서 너무 낯서네요.

6개의 loop는 프로그램에서 최고 안 좋다는...

VBA의 한계로 인해 그렇겠지만요..


패턴만 익숙해지면 별 어려움없이 하실 수 있어요.

저도 그랬으니..^^

프로필 이미지
2014.09.30 22:37:16 *.7.58.56
조언 감사합니다! 저도 실력이 팍팍 늘거라 믿고 열심히 해보려구요!
프로필 이미지
2014.10.01 08:24:20 *.77.214.44

일차 / 날짜 : 10일차 / 10월 1일 (수)

취침 / 기상시간 : 오전 12시 15분/ 오전 5시 25분
수면/ 활동시간: 5시간 10분/ 6시 ~ 7시,

게 잔 이유: 스터디 끝나고 늦게 들어옴

숙면 에 대해

 

찾기 기능 간단 복습

Sub 찾기_매크로2()


Dim cd As Range, ca As Range, ra As Range

Set ra = Columns("a").Cells
Set cd = [d1]
Set ca = [a1]

For Each c In Range(cd, cd.End(xlDown))

Set rb = ra.Find(What:=c.Value, After:=ra(ra.Count), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, MatchByte:=False, SearchFormat:=False)

rb.Offset(, 1) = c.Offset(, 1)

Next

 

End Sub

7시에 아침식사로 활동 중간에 끊김. 매크로 작동이 안되는 이유를 몰라서 시간 많이 씀.

 버스 타고 가면서 지난거 좀 봐야.

 

몰입도 3.5

만족도 2.5

프로필 이미지
2014.10.01 15:56:26 *.194.94.215
프로필 이미지
2014.10.02 19:33:48 *.77.214.44
프로필 이미지
2014.10.03 05:57:18 *.77.214.44

일차 / 날짜 : 12일차 / 10월 3일 (금)

취침 / 기상시간 : 오후 10시 30분/ 오전 5시 25분

수면/ 활동시간: 6시간 55분/ 오전 6시 ~ 8시 30분

게 잔 이유: `

숙면 에 대해: 저녁을 역시 좀 더 일찍 먹어야 숙면에 도움이 될 듯.

 

 변수 선언 관련

 

 변수를 무조건 선언하도록 하려면, 메뉴에 도구-> 옵션-> 편집기-> `변수 선언 요구` 체크
그러면 새 모듈 삽입시, 모듈 맨 위에 `Option Explicit`이 생김.
그리고 변수 선언 없이 코딩하고 실행하면 바로 컴파일 오류 뜸

 

 

 

`Function문: 리턴값 있음 (함수의 의미) 
[Public | Private | Friend] [Static] Function name [(arglist)] [As type] 
[statements] 
[name = expression] 
[Exit Function] 
[statements] 
[name = expression] 
End Function 
 [As type]은 프로시저의 리턴 자료형으로서 생략하면 Variant로 인식
 [name = expression]은 등호(=) 우측값을 좌측에 대입
 
 Function fSum(i, j) As Long
 fSum = i + j
 End Function
 
 Sub fSum_tst()
 MsgBox fSum(4, 5)
 End Sub

Sub문: 리턴값 없음 
[Private | Public | Friend] [Static] Sub name [(arglist)] 
[statements] '문장 
[Exit Sub] 'sub문 강제종료 
[statements] '문장 
End Sub 
 arglist는 인수로서 콤마로 구분되어 여러 인수를 입력할 수 있음
 인수가 있는 sub문은 단독 실행은 안되고 다른 프로시저에서 불러줘야 실행됨
 
 Sub sbLine(r As Range) '실선
 r.Borders.Color = vbRed
 End Sub
 
 Sub sLine_test()
 Call sbLine(Selection) '또는 아래와 같이
 'sbLine Selection
 End Sub

sub문과 function문 차이

sub문에서 인수가 있을 때는 단독으로 쓰지 못하고 call 을 이용해서 사용.

function은 그 함수의 이름을 바로 사용

 

결재방법수 다른 것 count 하는 매크로

 

 

Sub 결제방법_개수()
   Dim nc As New Collection

   On Error Resume Next ' 동일값을 collection에 넣을 때 에러가 나는데 그걸 넘어가게 만들어줌.
   For Each c In [A2:A5000]
      nc.Add c.Value, c ' 인수 두개로 받는거 같은데 아직 정확한 형식은 모르겠음.
   Next
   [d5] = nc.Count

End Sub

 

Sub Range__문1_goProc(): Application.Goto "Range__문1": End Sub

 

실행코드 문 보는 프로시저.

goto 사용. 프로시저문은 큰 따옴표사용해서 표현.

줄바꾸지 않고 쓸 때는 : 사용

 

몰입도 2.5

만족도 2

 

2시간을 계속 못 앉아있는다. 직접 코딩을 안하니까

집중력이 떨어지는 듯 하다. 기존 수업들었던걸 아직도 다 못 봤다는건

현재 새벽활동에 문제가 있다는 거다. 몰입도가 많이 떨어져있다.

 

컴활1급 시험이랑 우노 싸이트를 이용해서

몰입도를 다시 올려야겠다.
 

vlookup 에러- 찾는 문자에 와일드카드(~)가 들어간 경우 해결법.

 

품명 구분 처리
AL LWT 접점 ABN/S/H/L 30~250 C DEF

 

AL LWT 접점 ABN/S/H/L 30~250 이걸 찾아서 DEF를 반환하는 VLOOKUP을 하는데 에러가 남.

이유는 ~가 와일드카드문자라 VLOOKUP에서 찾을 때 실제 찾기 할 때처럼 와일드카드문자가 먹힘.

그래서 해결법은 VLOOKUP(SUBSTITUTE(B70,"~","~~"),$B$63:$D$67,3,0)

실제 와일드카드문자(~) 이게 먹도록 substititute를 이용하여 실제 ~ 이게 먹도록 ~~ 로 대체

 

우노싸이트는 이런거 찾으면서 문제 풀어보는게 재밌음.  

 

 

프로필 이미지
2014.10.03 13:00:55 *.77.214.44
프로필 이미지
2014.10.03 21:42:18 *.77.214.44
프로필 이미지
2014.10.04 06:15:16 *.77.214.44

일차 / 날짜 : 13일차 / 10월 4일 (토)

취침 / 기상시간 : 오전 12시 10분/ 오전 5시 25분

수면/ 활동시간: 5시간 15분/ 오전 6시 10분 ~ 8시 00분

게 잔 이유: 인터넷 딴 짓, 10시 ~ 11시 반 사이에 무조건 잠자리에 들어야 한다.

숙면 에 대해: 가족이랑 저녁을 따로 먹어야겠다. 가족과 식사를 못하는 건 아쉽지만 지금은 그게 더 나을 때다.

 

디버깅

On Error문 복습

On Error Resume Next: 이 문 다음에 실행되는 줄 부터는 에러가 나도 에러 표시 없이 건너띄고 진행.

On Error GoTo 0: 오류 창이 다시 뜨도록 설정하는 문. 위 문과 쌍을 이룸.

On Error Go to 레이블: 오류가 나면 특정 레이블로 분기하는 것.

 

Sub 디버그하기3()
On Error Resume Next
Sheets("tt").Delete
Sheets("xxx").Delete ' xxx시트는 없지만 그냥 에러 표시 없이 넘어감.
On Error GoTo 0
Sheets("yy").Delete 'yy시트가 없어서 에러남.
End Sub

 

 

Sub 디버그하기2()
On Error GoTo e
Sheets("tt").Delete
Sheets("xxx").Delete
e:    ' 숫자일 때는 :를 안 써도 됨. 하지만 영어로 시작할 때는 : 로 마무리.
If Err.Number Then MsgBox Err.Description
End Sub

 

비교연산자

Is : 개체 비교 연산자

같은 형의 2 개체를 비교할 때 Is 사용 , 개체 변수는 참조의 의미. 변수로 받아 오는 것을 생각.

두개의 변수의 관계를 파악. 관계는 두 변수가 연결되어있는지, 그리고 value가 같은지.

 

Sub s연산_비교_개체2()
Set c = Range("A1")
Set c3 = Range("A1")
MsgBox c3 Is c 'False
End Sub
Sub s연산_비교_개체3()
Sheets("연산자2").Select
Set c = Range("A1")
Set ct = c 'c는 그대로 두고 ct에 넘김
For i = 1 To 3
   ct.Value = i
   Set ct = ct(2) '다음 아래셀이 ct, (2) =.cells(2)
Next
MsgBox ct Is c 'False
End Sub

 

몰입도 2.5

만족도 1.5

 

코딩을 직접 안해봤음. 공부의 진전이 별로 없음.

 

힘들 때 다시 읽어보면 좋은 글.

마지막 편지

 

사랑에 대해

사랑의 기술

사랑을 배워야 한다  

프로필 이미지
2014.10.04 20:13:13 *.77.214.44
프로필 이미지
2014.10.05 06:31:57 *.77.214.44
프로필 이미지
2014.10.05 07:48:28 *.77.214.44

일차 / 날짜 : 14일차 / 10월 5일 (일)

취침 / 기상시간 : 오후 11시 00분/ 오전 5시 25분

수면/ 활동시간: 6시간 25분/ 오전 6시 40분 ~ 8시 30분

게 잔 이유: 잠이 안 왔음.

숙면 에 대해: `코 막힘. 꿈을 자주 꿈. 수면 패턴이 일정치 않아서 그런 듯. 

 

비교 연산자

텍스트 비교

 

? 한 문자
* 0개 이상의 문자
# 한 숫자 (0~9)
[charlist] charlist 내의 한 문자
[!charlist] charlist 앞에 ! 있으면 Not의 의미
※ Like 연산자는 기본적으로 대소문자를 구별함 
 Sub 문자열_비교()
 MsgBox "서대문구" Like "서*구"    ' True
 MsgBox "우" Like "[가-힣]"    ' True
 MsgBox "장" Like "[!가-힣]"    ' False
 MsgBox 2 Like "[2-9]"    ' True
 MsgBox "2" Like "[2-9]"    ' True
 MsgBox "나2라" Like "나#라"    ' True
 MsgBox "aM5b" Like "a[L-P]#[!c-e]"    ' True
 End Sub

 

논리연산자  
And (피연산자가 둘다 참[True]일때만, 참이며 3개라면 모두 True일 때 참)  
result = 식1 And 식2  
MsgBox 3 > 2 And 4 < 7 'True 리턴  
  
Or (피연산자가 둘중 하나만 참[True]일때, 참이며 3개라면 하나 이상만 True일 때 참)  
result = 식1 Or 식2  
MsgBox 3 > 2 Or 9 < 7 'True 리턴  
  
Not (반대)  
result = Not 식  
MsgBox Not (2 > 7) 'True 리턴  
  
Xor (피연산자가 하나는 True 다른 하나는 False일때, 참이며 3개라면 하나만 True일 때 참)  
result = 식1 Xor 식2  
MsgBox 3 > 2 Xor 9 < 7 'True 리턴  
  
Eqv (두 피연산자가 서로 같을때, 참이며 3개라면 모두 True이거나 False일 때 참)  
result = 식1 Eqv 식2  
MsgBox 3 < 2 Eqv 9 < 7 'True 리턴  
  
Imp (첫 피연산자가 참, 두번째는 거짓일때만 False, 즉 순서가 관여)  
result = 식1 Imp 식2  
MsgBox 3 > 2 Imp 9 < 7 'False 리턴  

 

Range 복습

Sub Range__문6()
'레인지.SpecialCells(특별범위)
'시트.UsedRange(시트에서 사용된범위)
'Application.Intersect(교차범위, Application.은 생략가능)
'레인지.Areas(다중영역 선택범위)

Dim s As Worksheet, r As Range, r입고 As Range, r입고2 As Range, ss As Worksheet
Dim rx As Range

Set s = ActiveSheet
Set r = Range("M3").CurrentRegion
Set r입고 = r.Resize(, 1).Offset(, 2)
r입고.Select
r입고.SpecialCells(xlCellTypeBlanks).Select
Set r입고2 = Selection

s.UsedRange.Select
s.UsedRange.SpecialCells(xlCellTypeLastCell).Select

Set rx = Intersect(r입고, [p16])
Debug.Print rx Is Nothing
Debug.Print Intersect(r입고2, [p16]) Is Nothing

r입고.SpecialCells(xlCellTypeConstants).Select
MsgBox Selection.Areas.Count

Set ss = Sheets("연산자")
ss.Range("f6:f9").Copy s.Range("J14") '전체복사
'값만 복사
'ss.Range("f6:f9").Copy
's.Range("J14").PasteSpecial xlPasteValues
End Sub

 

input box

 크게 두 가지로 나뉨
1) VBA.InputBox: 보통, VBA.은 생략하며 텍스트를 결과로 리턴
2) Application.InputBox은 여러 형태(수식, 숫자, 텍스트, 논리값, Range, 오류값, 배열)를 결과로 받을 수 있음

Sub inputbox__inputbox2()
Dim inp As String
inp = InputBox("6자리 연월을 입력하세요", , Year(Date) & Format(Month(Date), "00"))
If inp = "" Then Exit Sub
'입력 오류 검사
If Len(inp) <> 6 Then MsgBox "length must be 6 digit": Exit Sub
If Val(Left(inp, 4)) < 2000 Or Val(Left(inp, 4)) > 2030 Then MsgBox "2000<= x <=2030": Exit Sub ' val = value
If Val(Right(inp, 2)) < 1 Or Val(Right(inp, 2)) > 12 Then MsgBox "01<= x <=12": Exit Sub
End Sub
 

몰입도 3.5

만족도 3

 

새벽활동하고 다시 자는 습관이 생겼다.

속이 안좋다는 핑계로 눕다가 꼭 잠이 든다.

지난 주에 술마시고 나서 속이 많이 안좋아진듯 하다.

요즘 운동을 안해서 그런지, 취업에 대한 스트레스 때문인지

피로가 빨리 느껴진다.

 

다시 건강에 신경써서 컨디션을 올리자. 이제 원서 쓰는 바쁜 텀 한번 남았는데

제발 내가 최선을 다하길.

프로필 이미지
2014.10.05 23:27:35 *.77.214.44
프로필 이미지
2014.10.06 11:35:48 *.77.214.44
프로필 이미지
2014.10.07 06:04:19 *.77.214.44
프로필 이미지
2014.10.07 12:53:13 *.242.48.1

길을 잃었으니.. 꿈에 나오겠죠...


내가 취업할 때는 형식적인 자소서여서 요새 취업 준비하시는 분들은 어떻게 쓰는지 모르겠네요.

최근에 지인이 구직 활동을 하면서 이런 말을 했어요.


그 회사에 입사 하려고 모든 걸 쏳아 부어서 녹초가 됐지만 시원하다고..

떨어져도 미련 없다고...


같은 작업을 반복해서 힘들겠지만... 후회하지 않았으면 해요.. 미련 없을 정도로.. ^^

프로필 이미지
2014.10.07 07:27:21 *.77.214.44

일차 / 날짜 : 16일차 / 10월 7일 (화)

취침 / 기상시간 : 오후 10시 15분/ 오전 5시 25분

수면/ 활동시간: 7시간 10분/ 오전 6시 10분 ~ 7시 40분, 식사 후 8시 20분 ~ 8시 50분

게 잔 이유:

숙면에 대해: 꿈을 자주 꿈. 푹 못자는 듯. 운동을 다시 시작해야 함.

 

Part1 매크로 소개 및 기초

29p 반복작업 자동화

 

Sub 공백문자_지우기()   'B,F열에 공백문자 제거
Sheets(Array("1", "2", "3", "4", "5")).Select ' 여러시트선택, array 안에는 시트 이름.
Range("B3:B68,F3:F68").Select
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart
Sheets("1").Activate
End Sub

 

매크로 기록 창에서 매크로 저장 위치는 3개(현재 통합문서, 새통합문서, 개인용 매크로 통합문서),

개인용 매크로 통합문서에서 저장 시 앞으로 저장할 때 기본 세팅이 개인용 매크로 통합문서로 되어있는 것 체크.

개인용 매크로 통합문서는 애드인으로 대체 사용하므로 신경 쓰지 않아도 됨.

 

72p

개체 찾아보기 복습, F2 키 이용. 특정 단어의 계층을 알고 싶을 때 사용하거나 정확히 단어가 기억이 안날 때,

이 창의 검색 란에 그 일부 문자만 입력하고 찾음.

 

82p 디버깅 중

다음 문 표시: 행별로 실행 중 노란 줄로 화면 이동하는 것. 팝업키 누르고 다음문 표시.

 

 

우노 엑셀 베이비 71

research 창 활용. 검색할 셀을 art 누르고 마우스 왼쪽 클릭.

토요일 도 일하는 회사의 networkday 계산하기.

핵심은 row indirect 용법과 배열 수식.

 

몰입도 4
만족도 4

 

이제 매크로 책 진도나가는 것과 우노사이트 병행 시작.

 

우노사이트는 확실이 이전 공부했던 내용을 복습도 하게 되고 문제도 풀어 볼 수 있어서 몰입도가 좋음.

매크로 공부와 병행 계속 하는게 유리.

 

 

프로필 이미지
2014.10.07 08:55:31 *.77.214.44

내가 공부하는 패턴을 관찰해보면, 스스로 내가 잘 모른다고 생각이 들면 무조건 다시 보게 되는 습관이 있다.

 

그 습관과 관련해서 초등학교 때 멜로디언 시험 보면서 음악선생님한테 혼났던게 생각났다.

틀리면 그냥 넘어가고 다음꺼 처야지 틀린 부분 다시 계속 연주한다고. 시험 중에는 그러면 안되는데

연습할 때 처럼 똑같이 했었다.

 

이런 나의 기질도 장단점이 있는데, 한번 공부하면 제대로 하려는 습관이 있지만,

대충 공부하게 되면 또 다시 여러번 보게 되어 시간 효율이 떨어 질때도 있다.

 

그리고 급할 때가 좀 문제인데 빨리 일단 제출해야 되는데 좀더 완벽하게 하려다가

기한을 놓칠 때도 많았다.

 

기본적으로 꾸준히 공부하는 엑셀은 한번 볼때 시간이 걸리더라도 제대로 보고

급한 것들(예로 자소서)은 꾸준히 준비해 놓는 부분을 따로 시간을 써서(나침반 정리 등) 심적인 부담을 덜고

얼른 처리해야겠다.

 

계속 나한테 맞는 방법을 찾아가는게 중요.

 

프로필 이미지
2014.10.08 21:52:39 *.77.214.44

일차 / 날짜 : 17일차 / 10월 8일 (수)

취침 / 기상시간 : 오전 12시 15분/ 오전 5시 25분

수면/ 활동시간: 5시간 10분/ 오후 9시 ~ 9시 40분, 일어나서는 동부생명 자소서 작성.

게 잔 이유: 스터디 끝나고 집에오니 11시 40분.

숙면에 대해: 확실히 저녁을 일찍 먹으면 잠을 푹 잠.

 

collection add 사용 관련

컬렉션.Add item, [key], [before], [after]

1인수 item은 추가될 구성원이며 2인수 key는 구성원에 접근할 고유키로 꼭 텍스트형

아래 프로시저에서는  a열에 결제방법이 텍스트이므로, 이 줄이 정상 실행되지만

만일 숫자라면 컬렉션에 추가되지 않습니다. 따라서 nc.Add c.Value, Cstr(c) 이렇게 키를 Cstr를 이용해서

문자형으로 변환.

 

IFF

 

Sub 중복_고유한_결제방법_개수세기()
1 Dim nc As New Collection, c As Range

2 On Error Resume Next '4번줄에서 중복추가 에러 무시
3 For Each c In frCo([a2])
4   nc.Add c, c '컬렉션에 c 추가 / nc.Add c, CStr(c)' 
  Next
5 [d7] = nc.Count
6 MsgBox "첫번째 추가한 항목: " & nc(1)
End Sub

 

Function frCo(c) As Range 'c부터 c아래쪽 마지막 셀까지 범위
Set cx = c.Parent.Cells(Rows.Count, c.Column).End(xlUp)
Set frCo = IIf(cx.Row < c.Row, c, c.Parent.Range(c, cx)) ' 엑셀함수에서  if 와 동일.
  
End Function

 

몰입도 3

만족도 2.5 시간 투여가 적었음. 그래도 바빠도 매일 조금씩이라도 하려고 노력하자.

프로필 이미지
2014.10.09 08:41:37 *.77.214.44

일차 / 날짜 : 18일차 / 10월 9일 (목)

취침 / 기상시간 : 오후 11시 15분/ 오전 5시 25분

수면/ 활동시간: 6시간 10분/  오전 6시 ~ 7시 50분

게 잔 이유: 인터넷 딴 짓. 집에 있다보니 안 좋은 습관들이 안 사라짐. 다시 전면전을 치뤄서 습관을 바꾸자. 독서와 운동으로.

숙면에 대해: 따뜻하게 입고 자는게 숙면에 도움이 됨.

 

collection add 이용하는 것 일단 복습.

 

Sub 고유항목_세기()

Dim nc As New Collection

On Error Resume Next

For Each c In Range([a2], [a2].End(xlDown))
   nc.Add c, c.Value
  
Next
   [d2] = nc.Count

End Sub


Sub 고유항목추출()

Dim nc As New Collection
Dim cb, ch, rtbl As Range

Set cb = [b4]
Set rtbl = cb.CurrentRegion.Resize(cb.CurrentRegion.Rows.Count - 1).Offset(1)
[h5].CurrentRegion.Clear

On Error Resume Next
For Each c In rtbl
   If c.Value <> "" Then nc.Add c, c
Next

ReDim a(nc.Count - 1, 0)
For i = 0 To UBound(a): a(i, 0) = nc(i + 1): Next

'ReDim a(nc.Count - 1)
'For i = 0 To UBound(a): a(i) = nc(i + 1): Next


[h5].Resize(nc.Count) = a

End Sub

 

 

아직 모르겠음.

Sub 한폴더의_여러_통합문서_열기()
1 pat = ThisWorkbook.Path & "\매크로임시\"
2 srfile = Dir(pat & "*.xlsm") '파일명 리턴
3 Do Until srfile = ""
4   Workbooks.Open pat & srfile '파일 열기
5   ActiveWorkbook.Sheets(1).[a1] = 7
6   ActiveWorkbook.Close 1 '파일 저장후 닫기
7   srfile = Dir
8 Loop
End Sub

 

몰입도 3.5
만족도 3

 

기본을 충실히 쌓아가자. 조급해하진 않지만 또 여유롭게는 하지 말자.

 

프로필 이미지
2014.10.09 10:10:37 *.77.214.44

collection사용하면서 배열에 대해 몰랐던 부분 엑셀장인님 답변 참고. 그래도 모르는걸 바로 물어볼 사람이 있는게 다행이다.

 

그렇게는....아래같이 하면 됩니다.

[h5].Resize(nc.Count) = WorksheetFunction.Transpose(a)


1차원 배열 전체를 한 행에 받는 것은 Transpose 없이도 되지만,,,,지금같이 한 열에 넣으려면 이 Transpose가 필요합니다.

1차원 배열에서는 쌓일때 행 단위로 받아지거든요....


2차원 배열로 할때는 a(행, 열)이라서 Transpose 없이 가능하고요

지금 예에서 1차에 값을 받고 2차를 0으로 a(nc.Count - 1, 0) 이렇게 하면 Transpose 가 필요없는것이죠

즉, 배열변수 a의 n행 1열로 값이 저장되기 때문에 열단위 셀에 부을 때 자연스럽게 되는 겁니다.


문법이 그런거죠......만일,,어부님이,,


ReDim a(0, nc.Count - 1)

이렇게 한다면 이렇게 하는 경우는 없지만,,행열을 바꾸는 건데......그러면 아래 같이 2차의 상한값까지 돌도록 하고,,,

For i = 0 To UBound(a, 2)

다음과 같이 Transpose로 다시 뒤집어야 합니다

[h5].Resize(nc.Count) = WorksheetFunction.Transpose(a)

프로필 이미지
2014.10.09 20:46:50 *.77.214.44
프로필 이미지
2014.10.14 09:50:57 *.242.48.1

너무 솔직하다.... ^^

프로필 이미지
2014.10.10 08:38:07 *.77.214.44

일차 / 날짜 : 19일차 / 10월 10일 (금)

취침 / 기상시간 : 오전 1시 15분/ 오전 5시 25분

수면/ 활동시간: 4시간 15분/  오전 6시 20분 ~ 8시 20분

게 잔 이유: 인터넷 딴 짓. 불면. 저녁 5시에 1시간 자버려서 그런 듯하다.

숙면에 대해: 낮잠 자는 시간을 30분 내로 줄여야겠다.

 

Sub 고유값만_배열_뿌리기()

Dim ca As Range, nc As New Collection

Set ca = Sheets("Sheet1").Range("a1")

On Error Resume Next
For Each c In ca.CurrentRegion
   If IsError(c) = 0 Then
   nc.Add c, CStr(c)
   End If
Next

On Error GoTo 0

ReDim a(nc.Count - 1)

For i = 0 To UBound(a)
   a(i) = nc(i + 1)
Next
Sheets("Sheet1").[d1].CurrentRegion.Clear
Sheets("Sheet1").[d1].Resize(nc.Count) = Application.Transpose(a)

End Sub

 

활성 셀에 특정 셀의 값 또는 수식 넣기

ActiveCell.Formula = Range("B1")

B1 셀의 결과 값을 활성 셀에 넣는것

 

FormulaR1C1 vs Formula 차이(389p)

ActiveCell.Formula = Range("B1").formula


Formula대신 FormulaR1C1을 사용할 경우 수식이 상대적으로 복사되는 개념
가령 b1셀에 수식이 =A1이고(A1 셀 값은 1) 활성셀이 B7이라면
B7 셀에는 =a7(A7 셀 값은 7)이 들어가게 된다.

ActiveCell.Formula = Range("b1").Formula => 결과 값은 1
ActiveCell.Formula = Range("b1").FormulaR1C1 => 결과 값은 7

Formula

 

Sub 특정_엑셀파일열지않고_수식으로_가져오기()

'With [sheet2!a3:a7]
'   pat = ThisWorkbook.Path '이 매크로 파일의 경로
'   fp = "'" & pat & "\[z통합macro.xlsm]Sheet1'!B3:B7"
'   .Formula = "=" & fp
'   .Value = .Value '값만 남기기
'
'End With

 

'닫힌 파일의 B열 자료를 1행에 가져오기
With [sheet2!a1:e1]
   pat = ThisWorkbook.Path '이 매크로 파일의 경로
   fp = "'" & pat & "\[z통합macro.xlsm]Sheet1'!B3:B7"
3   .FormulaArray = "=TRANSPOSE(" & fp & ")"   'transpose 안의 큰 따옴표 사용 다시 알아볼 것
   .Value = .Value   '값만 남기기
End With

 

End Sub

 

몰입도 4

만족도 3.5

 

우노 엑셀베이비 68

indirect row address 이용. 우노사이트 이용 매일 하자. 재밌으니까.

 

프로필 이미지
2014.10.11 14:17:21 *.77.214.44

일차 / 날짜 : 20일차 / 10월 11일 (토)

취침 / 기상시간 : 오전 2시 45분/ 오전 11시 30분

수면/ 활동시간: 9시간 0분/  오후 1시 30분 ~ 오후 2시

게 잔 이유: 불면. 잠들었지만 모기 때문에 여러번 깸. 잔거 같지가 않음. 

숙면에 대해: 다시 패턴을 찾아야겠지

 

우노사이트 간단히. 컨트롤양식 삽입과 셀 연결. 엑셀프로그래밍은 논리값으로 시작한다는 우노의 한 말씀.

 

문득 든 생각은 습관이 정말 그 사람이라는 것.
회사생활에서 사소해 보이는 잘못 된 습관 때문에 욕먹는 사람을 많이 봐왔다.

일상생활에서도 사소한 안 좋은 습관들이 일을 그르칠 때도 많고, 나도 모르게 해 왔던 좋은 습관들이
오랜 시간이 지나서 큰 힘을 발휘할 때도 있다는 것을 알게 된다.

내가 생각하는 좋은 습관들로 하루를 채울수 있도록 다시 노력해보자.
잘못된 습관 다시 봐보고 다시 좋은 습관으로 바꿀 수 있도록!

 

 

 

프로필 이미지
2014.10.11 16:24:24 *.77.214.44

계리 업무의 적성에 대해
단순반복적인 업무가 나에게 맞는가?

1945비행기게임 원코인 클리어하려고 총알 날라오는걸 외운적이 있다. 대학 방학내내.
그리고 반복 업무를 빨리하는 매크로에 관심이 있다. 반복적인걸 빠르게 처리하는데 관심이 있기에 반복 업무에 대해 부담이 없다고 생각한다.


사트 도형회전문제 풀다가 틀린그림찾기하는 느낌이나서 위와 같은 생각이 떠올랐다.

프로필 이미지
2014.10.13 06:07:27 *.77.214.44

일차 / 날짜 : 21일차 / 10월 12일 (일)

취침 / 기상시간 : 오전 2시 00분/ 오전 5시 00분

수면/ 활동시간: 3시간 0분/  무, 사트시험 보고 옴.

게 잔 이유: 불면. 낮잠이 원인.

숙면에 대해: 다시 패턴을 찾아야겠지

 

사트 시험을 보고 왔다. 입구에서 누가 나한테 인사를 했는데 알고보니 계리사 시험 같이 준비했던 스터디원이었다.

계리사 시험에 붙고 삼성생명에 입사해서 지원을 나왔던 것이었다. 간만에 봐서 반갑기도 하고, 그냥 무덤덤한 느낌도 들었다.

 

피곤해서 무덤덤하게 느껴졌는지도 모르겠다. 결국 사트 시험을 3시간 밖에 못자고 쳤다.

계리 시험도 2시간 자고 치고. 결국 중요한 날에 컨디션을 올리려면 그 전에 잘 해놔야 된다는 것.

 

일찍 잠들고 일찍 일어나는게 100일이면 습관이 될 줄 알았는데

무슨 일이 생기거나 의지가 약해지면 다시 원래대로 늦게 자고 불규칙적으로

일어나려는 안 좋은 습관으로 돌아가려 한다.

 

출사표를 잊지 않고 있으니 다시 한번 더. 나만의 필살기 vba 만들기!

프로필 이미지
2014.10.13 08:44:56 *.77.214.44

일차 / 날짜 : 22일차 / 10월 13일 (월)

취침 / 기상시간 : 오후 10시 30분/ 오전 5시 25분

수면/ 활동시간: 6시간 55분/  6시 10분 ~ 8시 40분

게 잔 이유: -

숙면에 대해: 어제 피곤해서 그런지 푹 잤음. 다시 패턴 찾기 시작!

 

 특정 엑셀 파일을 열지 않고 수식으로 특정 셀 값 가져오기 복습

 

Sub 다른파일_값_가져오기()

pat = ThisWorkbook.Path
fp = "'" & pat & "\[z통합macro.xlsm]Sheet1'!b3" 

' 여기서 b3 을 [b3]으로 표현 하면  .Formula = "=" & fp 이 구문에서 에러남. 이유는 모르겠음. 그리고 sheet 명까지 작은 따옴표로 감싸는 것 잊지 말고.
 

With [Sheet1!a3:a7]

      .Formula = "=" & fp  ' formula 용법이 헷갈림. 매크로 기록하면 이런식 ActiveCell.FormulaR1C1 = "=[z통합macro.xlsm]Sheet1!R2C2" 변수(fp)로 받을 때와 구분을 해야 됨. vb 언어에서 = 의 용법을 기억하면 쉬울 듯.
      .Value = .Value


End With
End Sub

Sub 다른파일_값_가져오기2()

pat = ThisWorkbook.Path
fp = "'" & pat & "\[z통합macro.xlsm]Sheet1'!b3:b7"

' transpose 로 갖고 오려면  fp변수 선언을 b3에서 b7까지 해야.
 

With [Sheet1!a1:e1]

      .FormulaArray = "=transpose(" & fp & ")"

'여기서 transpose 용법을 잘 모르겠음. 장인카페에 질문남겼음.


      .Value = .Value


End With
End Sub

 

몰입도 3.5

만족도 2.5

투자한시간은 많았는데 뭔가 많이 막혔음. 급한 것도 이제 하자.

 

프로필 이미지
2014.10.13 22:10:59 *.77.214.44

카페 답변

.FormulaArray = "=transpose(" & fp & ")"
이 줄에 F9키로 중단점 잡으시고.....실행<F5>뒤

 "=transpose(" & fp & ")"
을 직접실행창에 찍어서... 받아서
다음 시트의 Sheet1!a1:e1 에....넣어보세요.. 배열식 형태로요..


transpose 엑셀 워크시트 함수를 이용한거죠....

 

 

난 "랑 & 사용을 물어봤는데.. 잘 모르겠넹

프로필 이미지
2014.10.13 12:54:22 *.194.163.246
프로필 이미지
2014.10.15 06:49:57 *.77.214.44
프로필 이미지
2014.10.15 06:53:48 *.77.214.44

일차 / 날짜: 24일차 / 10월 15일 (수)

취침 / 기상시간: 오전 12시 35분/ 오전 5시 25분

수면/ 활동시간: 5시간 분/ 오전 6시~오전 6시 50분, 어제 단군일지 작성, 6시 50분 ~ 8시 컴활 관련 알아보기. 9시 30분 ~ 11시 컴활 필기 1회 풀기, 11시 ~ 12시 컴활 풀어본 것 체점하는 매크로 짜기.

늦게 잔 이유: 취업 스터디 끝나고 집에 들어오니 12시.

숙면에 대해: 중간에 깬다. 어제 학교에서 먹은 김치볶음밥이 너무 매워서 배탈남. 속이 다시 안 좋아졌다.

 

일요일 농협 인적성. 농협은 어찌보면 나에게 주어진 마지막 좋은 기회이다. 이건 진짜 잡아야 된다.

인적성이랑 논술 준비 철저히. 계획 세워서.

 

컴활 필기 공부 시작하자. 토요일이 필기 시험이니 할 수 있다. 이번주 새벽은 컴활 필기 준비다.

컴활 상시시험 보니까 매주 볼 수 있었네 이런. 컴활은 일단 재낀다. 진짜 급한거 부터.

 

오늘 매크로 짜본건 기존에 했더 내용 복습 차원에서 좋았다. 역시 직접 짜보는게 중요하다.

 

몰입도 4.5

만족도 4

프로필 이미지
2014.10.15 16:47:58 *.77.214.44

취업스터디 중에 나온 말이 기억에 많이 남는다.

면접에서 중요한건 자신감. 자신의 삶을 한번 되돌아보고 자신감을 갖는게 중요하다고.

 

100일 일지에 써놨던 나의 목소리를 들어라.

http://comic.naver.com/webtoon/detail.nhn?titleId=514917&no=36&weekday=tue

 

덧글 입력박스
유동형 덧글모듈

VR Left
번호 제목 글쓴이 날짜 조회 수
159 [단군13기_천복부족_출사표]일신우일신 - 망하고 망해도... [56] yoon55 2014.09.22 9625
158 [단군13기_천복부족_출사표_조이] 내가 가진 모든 힘을... [40] 조이 2014.09.21 9638
157 [단군13기_천복부족_출사표] 책으로 역사의 흐름을 알... [81] 까말 2014.09.21 9989
156 [단군13기_천복부족_출사표] 천복의 생활화 [43] molly 2014.09.21 9556
155 [단군13기_천복부족_출사표] 더 늦기전에 채워야하는건... [36] Norway 2014.09.21 9572
154 [단군 13기_천복부족_출사표]보기 좋은 것 말고, 진짜... [43] riffey 2014.09.21 9363
153 [단군13기_천복부족_출사표] 啐啄同機(줄탁동기) [50] 눈사람 2014.09.21 9495
» [단군13기_천복부족_출사표] VBA 보조필살기 만들기 ... [339] 어 부 2014.09.21 21612
151 [단군13기_천복부족_출사표] 주체적으로 내가 원하는 ... [120] 멍멍 2014.09.21 10250
150 [단군13기_천복부족_출사표] 나를 위한 시간 [24] KOKARU 2014.09.21 9272
149 [단군 12기_천복부족_출사표] 존재했으나 보이지 않았... [47] 미련곰탱이 2014.05.19 9437
148 [단군 12기_천복부족_출사표] 새벽이 탄생시킨 유아대... [120] 봄꽃 2014.05.19 10274
147 ( 단군12기 천복부족 출사표) 하루, 나를 세운다. [76] Norway 2014.05.19 9976
146 [단군 12기_천복부족_출사표] 매일매일 정성을 다해 ... [36] 박지선 2014.05.18 9280
145 [단군 12기_천복부족_출사표] 나의 하루는 22시간이다... [101] Will(김인성) 2014.05.18 10201
144 [단군 12기_천복부족_출사표] 충만한 하루를 위하여 ... [83] 이주희(Judy) 2014.05.18 10067
143 [단군 12기 천복부족- 출사표-] 천복 발견! [100] 삐리 2014.05.18 10146
142 [단군12기_천복부족_출사표] 내 삶의 주인공으로 우뚝... [96] 김랑 2014.05.18 9423
141 [단군12기_천복부족_출사표] 변화시킬 수 있는 유일한... [113] 글쓴이 2014.05.17 10027
140 [단군12기_천복부족_출사표] 즐겁게 [110] mag. 2014.05.14 10176