블로그 이미지
이비그치면

태그목록

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

예를 들어 8:55부터 10:00까지 10초단위로 작성한 모듈내의 특정 procedure를 

아래의 예제에서는 첫번째 쉬트(Sheet1)에 있는 버튼이 클릭되었을 때 지정된  매크로를

실행시키는 방법이다




Public Sub runbtn()
    Application.Run ("Sheet1.CommandButton1_Click")
End Sub

Sub setTimer()
    '
    '--- 08:55분부터 10:00까지 10초단위로 실행하도록 타이머 세팅
    Dim nSetCnt As Integer

    dTime = TimeValue("08:55:00")

    nMax = (60 * 60 + 60 * 5) / 10

    For nSetCnt = 0 To nMax
        Application.OnTime dTime, "Sheet1.runbtn"
        dTime = dTime + TimeValue("00:00:10")
    Next

End Sub

Public Sub CommandButton1_Click()
    Debug.Print "실행시각 : " + CStr(Now())
End Sub


엑셀 홀수열(한줄 건너 한줄) 삭제

2015. 3. 14. 15:17 | Posted by 이비그치면

= mod(row(2), 2)

자동filter 후 전체삭제

MS Office Documents(MS WORD, MS Excel etc.)에서 VBA를 이용하여

한자, 일본어, 한글 추출

unicode 와 정규식(Regular Expression) 사용


Sub test()
Dim RegEx As Object
Set RegEx = CreateObject("vbscript.regexp")
    
'-- 한자 추출
RegEx.Pattern = "[\u2E80-\u2EFF\u3400-\u4DBF\u4E00-\u9FBF\uF900-\uFAFF\u20000-\u2A6DF\u2F800-\u2FA1F]+"
RegEx.IgnoreCase = True
RegEx.Global = True

sStr = "태초(太初)에 하나님이 천지(天地)를 창조(創造)하시니라"

Set matches = RegEx.Execute(sStr)

For Each mch In matches
    Debug.Print mch.Value
Next

'-- 한글 추출
RegEx.Pattern = "[\uAC00-\uD7AF]+"
Set matches = RegEx.Execute(sStr)

For Each mch In matches
    Debug.Print mch.Value
Next

'-- 일어 추출
RegEx.Pattern = "[\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF\u8EA1-\u8EFE\uFF61-\uFF9F]+"
sStr = "はじめに神は天と地とを創造された"

Set matches = RegEx.Execute(sStr)

For Each mch In matches
    Debug.Print mch.Value
Next

End Sub
太初
天地
創造
태초
에
하나님이
천지
를
창조
하시니라
はじめに
は
と
とを
された

예전에 올렸던 포스팅인데 요청하신 분이 있어 약간 변경하여 올립니다


excel_bible.xlsm


변경내용은 아래그림과 같이 성경버젼 과 PPT 슬라이드 가로,세로방향 선택을 추가했습니다



처음이신 분은 아래링크를 먼저 들르셔서 내용을 확인하시기 바랍니다

http://oneone59.tistory.com/entry/%EC%84%B1%EA%B2%BD-%EA%B5%AC%EC%A0%88-PPT-%EC%9E%90%EB%8F%99-%EC%83%9D%EC%84%B1

아래의 그림과 같은 자료가 있다



K111, K222, K333, K444 네개의 품명의 판매자료가 순서대로 나열되어있고 

그림에 보는바와 같이 

세금자료가 별도자료로 되어있는데

그 세금을 좌측의 품명이 바뀔때마다 세금란에 나타내고 싶을 때 

IF 함수와 SUMIF 함수를 사용하여 해결할 수 있습니다


KeyChange.xlsx




잘 익혀두면 유용하게 써먹을 수 있는 엑셀의 기능중에 조건부 서식(Conditional Formatting)이

있다. Excel 2007에서는 그 기능이 많이 추가되고 강화되었다

이번 게시물에서는 셀이 컨트롤의 움직임에 따라 번갈아 highlight되어 마치 셀이 선택되는 

것처럼 보이게 하는 트릭이다

조건부서식(Conditional Formatting)으로 이를 구현할 수 있다

다음 그림과 같이 슬라이드 컨트롤에 의해서 cnt 값이 바뀌고 그에 따라 white, black 쪽 값들이

번갈아가며 선택되도록 하는 것이 과제다



엑셀자료 첨부합니다


조건부서식01.xlsx


1) 끌기로 채우기

    -- 두개의 연속하는 셀에 시작값, 증가된 값을 입력(행, 렬  다 가능함)

    -- 두 셀을 선택 

    -- 우측 하단에 커서 위치하면 나타나는 + 끌기마크를 원하는 셀까지 끌기

               


2) 채우기 --> 계열 선택

    -- 시작 셀(E1)에 초기값 입력

    -- 원하는 범위(E10)까지 지정(Shift 키 누른 상태에서 E10 클릭)

    -- 채우기 -> 계열 선택후 연속데이타 창이 열리면 유형은 선형, 단계값 10 하고 확인

        위와 동일한 결과를 얻을 수 있다



이제 앞에서 설명한 누적 세로막대형 차트와 표식없는 분산형 차트를 결합하여 엑셀쉬트로

만든 체스보드위에서 체스말을 움직이는 방법을 설명하고자 한다

먼저 아래의 엑셀쉬트가 엑셀쉬트로 만들어진 체스보드이다


chess3_board.xlsx


위의 쉬트를 열어보면 다음과 같은 체스보드가 보인다



위의 체스보드는 누적세로막대형의 차트로 만든 것이다

여기에 아래 게시물에서  설명한 체스말을 올려놓고 움직이는 방법을 설명한다

1) 차트영역안에 커서위치하고 오른쪽 마우스버튼 클릭

2) 데이타선택 클릭하여 데이타 원본 선택창이 열리면 추가버튼 클릭

3) 계열 이름과 계열값(여기서좌표값중 하나 선택 예를 들어 wp1, 1.01)을 쉬트에서 선택하여 입력 확인, 확인하여 데이타 원본 선택창을 닫는다

4) wp1 계열의 차트 종류 변경(누적세로막대형 --> 표식없는 분산형 차트)

   -- wp1 계열 선택 

        기존의 차트와 선택하기 어려우면 레이아웃의 좌측 현재영역선택에서 wp1 선택

         디자인으로 가서 좌측의 차트종류 변경 선택(표식없는 분산형 차트 선택)

** 아래 게시물에서의 설명과 동일

5) 차트상에 나타난 wp1의 표식 확인하고 클릭하여 선택

6) 오른쪽 버튼 클릭하여 데이타 계열 서식 선택

    -- 표식옵션--> 기본제공 (형식은 네모꼴, 크기는 28로 지정)

    -- 표식채우기 --> 그림 또는 질감 채우기 --> 파일선택(체스말 화이트폰선택)

    -- 표식선색 선없음으로 선택

    -- 닫기로 나옴

7) 좌표값 수정(wp1의 x, y 값으로)

    -- wp1 선택

    -- 오른쪽 마우스버튼 클릭하여 데이타 선택 --> 데이타 원본 선택

    -- wp1 계열 찾아서 편집 버튼 클릭

    -- 계열이름(wp1), 계열 X값(1.01), 계열 Y값(2.45) 쉬트에서 선택하여 입력

8) 나머지 체스말들도 위에서 설명한 대로 계열추가하고 데이타계열서식 변경

9) 아래에 쉬트를 첨부하니 한번 실습해보실분들은 나머지 조각들을 체스보드위에

    채워보시기 바란다


chess2_board.xlsx





         




다이나믹 차트(동적 차트)는 사용자의 입력에 연동하여 차트의 계열값을 변화시켜 그에 따라

차트의 모양이 변경되는 차트이다

사용자의 입력에 따라(셀에 직접 입력 또는 컨트롤(스크롤 막대등)을 통해 입력) 차트의 모양을

변경시키려면 데이타 계열값을 변경시켜야 하는데 이것은 보통 특정 셀(cell)에 이름을 붙이고

그 cell 값과 계열값을 함수등을 이용하여 연결시켜 구현한다

아래의 자료를 참고하길 바란다


chess_test01.xlsx


먼저 앞에 올린 게시물에 따라 만들어진 엑셀 차트에 

1) 한 특정 셀(여기서는 M2)을 정해 이름(cnt)을 붙인다

   (수식->이름관리자->새로만들기->이름란에 cnt)

2) 스크롤막대 컨트롤을 붙인다(개발도구->삽입->양식컨트롤->스크롤막대 선택)

    상하좌우 크기를 조절하여 보기좋게 만든다

     스크롤막대 컨트롤을 오른쪽 마우스 버튼 눌러 선택후 컨트롤 서식 선택하면

     

위와 같이 값들을 지정하고 셀연결에 1)에서 정한 이름(cnt)을 입력한다

3) wp1(화이트폰 1)이 움직여갈 y좌표값(x값은 고정)을 셀 M4(2.45), N4(3.45), O4(4.45), 

P4(5.45), Q4(6.45) 5개 셀에 입력한다

4) 마지막으로 D11(현재 wp1의 초기값 2.45인 셀)에 수식 =offset(M4, 0, cnt)를 입력한다

5) 스크롤막대 하단을 클릭하면  화이트폰이 한칸씩 움직이는 것을 확인할 수 있다


-- OFFSET(기준위치(셀), 기준셀로부터의 수직거리, 기준으로부터의 수평거리, 해당셀로부터의 세로크기(열수), 해당셀로부터의 가로사이즈(행수))



여기에서 C1에는 수식 =SUM(OFFSET(A2, 1, 2, 3, 1)) 


-- 표식만 있는 분산형 차트(XY Scattered Chart)   && Dynamic Chart  이용

분산형차트는 X, Y 좌표형 데이타를 나타내기 위한 차트이다

체스조각은 흰편, 검은편 각각 16조각씩으로 구성된다

폰(pawn, 장기의 병 혹은 졸) 8조각     -- wp1,.....,wp8(bp1,....,bp8)

룩(Rook, 장기의 차) 2조각,                -- wr1, wr2(br1, br2)

비숍(Bishop, 장기의 상) 2조각           -- wb1, wb2(bb1, bb2)

나잇(Knight, 장기의 마) 2조각             -- wn1, wn2(bn1, bn2)

퀸(Queen, 룩+비숍) 1조각                  -- wq(bq)

킹(King, 한/초왕)    1조각                  -- wk(bk)


체스판위의 WHITE, BLACK 각 진영의 조각의 위치를 좌표값 x, y로 표시


여기서 먼저 wp1(white pawn)이 1칸씩 전진하는 것을 차트로 구현해보자

-- 표식만 있는 분산형 차트(XY Scattered Chart) 그리기

1) 삽입 --> 차트 --> 분산형 --> 표식만 있는 분산형 선택

2) 차트 영역안으로 커서 이동하여 오른쪽 마우스 버튼 클릭  데이타 선택

3) 데이타원본선택창이 열리면 추가버튼 클릭

   계열이름 wp1 해당셀(B44) 선택

   계열 X값 1.01  해당셀(C44) 선택

   계열 Y값 2.45  해당셀(D44) 선택

   확인하여 창을 닫는다

-- 표식을 화이트 폰 모양으로 바꾼다

1) 체스조각 이미지를 다음 사이트에 가서 구한다(각 조각의 이미지를 적당한 이름으로 저장)

2) 표식을 클릭하여 표식 선택 오른쪽 마우스 버튼 클릭 데이타계열서식 선택 표식옵션을 

    아래와 같이 모양은 네모 크기는 61로 변경

3) 표식채우기로 이동, 그림 또는 질감채우기하여 하단에 나타난 파일 버튼 클릭 위에서 저장한 화이트 폰이미지를 선택한다



4)다음그림과 같이 된다




이전 1 2 3 4 5 다음