728x90
목차

1. COPY : 복사하기 

2. 범위.PasteSpecial : 선택하여 붙여넣기

3. XlPasteType 형식 : 어느것을 선택하여 붙여 넣을지

4. XlPasteSpecialOperation 형식 : 연산하여 붙여넣기

 

엑셀은 워드프로세서이기도 하여 복사하여 붙이는 기능이 자주 사용됩니다.
가장 많은 컴퓨터 사용자가 쓰는 기능이 Ctrl + C / Ctrl + V가 아닐가 싶네요
VBA에서도 사용법을 알아두면 편합니다. 복사하여 붙어넣기를 어떻게 하는지 포스팅합니다.
 
 

1. COPY : 복사하기 

 
단일 셀이나 범위를 선택하고 복사를 합니다.
엑셀에서 셀 복사는 특수한 기능입니다.
복사를 하면 셀주위에 점선이 돌고 있고, 값이 클립보드에 들어가게됩니다.

엑셀의 값은 눈에 보이는 글자 뿐 아니라 셀의 색, 글자체등 정보들이 다 들어가기 때문에 양이 좀 됩니다.
이 상황에서 다른기능을 활성화하거나 셀에 글자를 쳐 넣으면 클립보드에 들어간 정보가 사라집니다.
그래서 EXCEL의 COPY는 항상 직후에 붙여넣기가 들어가야 합니다.

Range("B3").Select      ' 복사할 셀을 선택합니다.
Selection.Copy             ' 선택한 셀 복사
Range("B12").Select    ' 붙여넣을 셀 선택
ActiveSheet.Paste        ' 붙여넣기

셀을 선택하여 활성화 시키고 ActiveSheet.Paste 명령어를 통해 붙여 넣습니다.
이게 불편한게 COPY 할때는 Selection 명령어가 들어가는데 Paste는 ActiveSheet의 매개변수로 동작합니다.

 

320x100


 

2. 범위.PasteSpecial : 선택하여 붙여넣기

 
VBA에서는 선택하여 붙여넣기가 더 편합니다.
이 명령어는 옵션이 많은데 기능을 하나씩 보도록 하겠습니다.
 
expression.PasteSpecial (Paste, Operation, SkipBlanks, Transpose)
 

  • Paste : 셀에는 서식, 값, 수식등 다양한 값이 있습니다. 셀의 어떤 값을 붙여 넣을 선택합니다.
    XlPasteType 형식에서 선택하여 입력하며 이 형식은 아래에 추가 설명하겠습니다.
  • Operation : 붙여넣으면서 연산을 수행할지, 어떤 연산을 할지 선택합니다.
  • XlPasteSpecialOperation : 형식에서 선택하여 입력하며 이 형식은 아래에 추가 설명하겠습니다.
  • SkipBlanks : 복사한 셀 중 빈 셀이 있을때 빈 셀을 붙여 넣을지 결정합니다.
    (True : 붙여넣기 하지 않는다., False : 붙여넣는다., 기본값은 False)
  • Transpose : 붙여넣으면서 행열 바꾸기를 수행할 지를 선택합니다.
    (True : 행열을 바꿈, False : 행열을 교체하지 안고 그대로 넣습니다. 기본값은 False)

 
아래 예시는 가장 많이 쓰는 "값만 붙여넣기" 입니다.

 

Sub ex2()

    Range("E3:G4").Select	
    Selection.Copy		'선택한 셀을 카피합니다.
    Range("E8").Select		'복사할 위치를 선택합니다.
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, __
    Transpose:=False
    '값만 선택하여 붙여넣기를 실행합니다.
    
    Application.CutCopyMode = False	'복사한 셀들에서 복사 모드를 취소합니다.
    
End Sub

 

Tip. Application.CutCopyMode = False는 복사하려고 선택된 범위를 취소합니다.
VBA 코드가 길어지거나 종료되고 사용자가 실수로 Enter등을 눌러서 오류가 나는 것을 방지할 수 있습니다.
 

 

3. XlPasteType 형식 : 어느것을 선택하여 붙여 넣을지

 
엑셀 인터페이스에서 선택이 가능한 부분으로 선택하여 붙여넣기를 할 수 있는 여러가지 옵션입니다.
VBA에서 어떻게 쓰는지 알아보겠습니다.

 

 
VBA 선택하여 붙여넣기의 XlPasteType들 ()안은 코드번호입니다.
 

  • xlPasteAll(-4104) : 모든 것을 붙입니다.(이때 열너비 제외합니다.)
  • xlPasteAllExceptBorders(7) : 테두리를 제외한 모든 것을 붙입니다.
  • xlPasteAllMergingConditionalFormats(14) : 모두 붙여넣고 조건부 서식이 병합됩니다.
    모두 붙여넣기로도 조건부 서식이 붙여넣어 집니다.
  • xlPasteAllUsingSourceTheme(13) : 소스테마를 포함하여 모든것이 붙여넣어 집니다.
  • xlPasteColumnWidths(8) : 열너비만 붙여넣습니다. 다른기능에서 열너비는 붙여넣지 않음으로 이건 독립적으로 사용해야 합니다. 내용은 안 붙이지만 서식을 만들때는 빈도가 높습니다.
  • xlPasteComments(-4144) : 메모만 붙여 넣습니다.
  • xlPasteFormats(-4122) : 표현형식이나 글자색 같은 서식만 붙여 넣습니다.
  • xlPasteFormulas(-4123) : 수식만 붙여 넣습니다.
  • xlPasteFormulasAndNumberFormats(11) : 수식과 숫자 서식이 복사 됩니다.
  • xlPasteValidation(6) : 유효성 검사만 붙여 넣습니다.
  • xlPasteValues(-4163) : 값만 붙여넣습니다.
  • xlPasteValuesAndNumberFormats(12) : 값과 숫자서식만을 붙여 넣습니다.

 

 

 

4. XlPasteSpecialOperation 형식 : 연산하여 붙여넣기

 
연산하여 붙여넣기를 실행하고 또 연산을 어떻게 할지 선택합니다.
 

  • xlNone(1) : 계산기능을 수행하지 않고 일반적으로 붙입니다.
  • xlPasteSpecialOperationNone(-4142) : 계산기능을 수행하지 않고 일반적으로 붙입니다.
  • xlPasteSpecialOperationAdd(2) : 문자는 복사되지 않고 숫자는 기존 숫자에 더해집니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 30이 됩니다.
  • xlPasteSpecialOperationSubtract(3) : 문자는 복사되지 않고 숫자는 기존 숫자에 뺍니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 10이 됩니다.
  • xlPasteSpecialOperationDivide(5) : 문자는 복사되지 않고 숫자는 기존 숫자에 나눕니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 2이 됩니다.
  • xlPasteSpecialOperationMultiply(4) : 문자는 복사되지 않고 숫자는 기존 숫자에 곱합니다.
    20이 있는 셀에 10을 복사해서 붙여 넣으면 200이 됩니다.

 
명령어를 직접 넣을 수도 있고 위에 설명에 ()안의 코드를 넣을 수도 있습니다.
코드를 넣으면 짧아집니다. 아래 두줄의 소스는 정확하게 같은 기능을 수행합니다.

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False

Selection.PasteSpecial Paste:=-4104, Operation:=-4142, SkipBlanks:=False, Transpose:=False

 
 

반응형
728x90
목차

1. Send, {Click} - 마우스를 입력해서 클릭하기

2. MouseMove - 마우스 움직이기

3. MouseClick - 마우스 클릭하기

4. MouseClickDrag - 드레그 앤 드롭

5. MouseGetPos - 마우스의 정보를 입력

 

오토핫키는 매크로를 만드는데 최적화 되어있습니다.

매크로를 만들려면 입력 기능을 다루어야 하는데 키보드는 따로 포스팅 했습니다.

오늘은 마우스에 대해서 알아보겠습니다.

마우스를 컨트롤하기 위한 좌표계도 이전에 포스팅 했으니 참고하세요.

 

320x100

 

 

1. Send, {Click} - 마우스를 입력해서 클릭하기

 

Send 기능으로 마우스도 컨트롤 할 수 있습니다.

 

① 기본적인 옵션은 Click입니다.

 

Send, {Click X좌표, Y좌표, 클릭횟수}
Send, {Click 200, 100, 0} ; 커서를 좌표계 (200, 100)으로 옮깁니다.(0번클릭)
Send, {Click 500, 300, 2} ; 커서를 좌표계 (500, 300)으로 옮겨 2번 클릭합니다.

 

② SetMouseDelay, Delay [, Play]

 

SetKeyDelay과는 기능과 사용법이 같지만 마우스동작에만 별도로 작용합니다.

 

SetMouseDelay, Delay [, Play] : 마우스의 각동작에 딜레이를 입력합니다.

 

  • Delay : ㎳ 단위의 대기시간입니다. 마우스를 움직이고 클릭하는 사이에 얼마나 기다릴 것인지 지정합니다.
    -1은 시스템적으로 시간이 없고 0은 가능하면 적게 지연됩니다.
  • Play : Play라고 입력하면 Play모드에 지연시간을 입력할 수 있습니다.
    여기서 입력하지 않으면 SendPlay는 언제나 지연시간이 -1(즉시 실행)입니다.  

 

③ 그외 마우스의 기본적인 기능

 

명령어의 영어단어가 직관적입니다. 설명은 필요없지만 저는 오타가 많아서 복사 붙여넣기로 사용합니다.

 

{WheelDown} - 휠내리기, {WheelUp} - 휠올리기, {WheelLeft} 휠왼쪽, {WheelRight} - 휠오른쪽, {LButton} - 왼쪽클릭, {RButton} - 오른쪽클릭, {MButton} - 휠버튼, {XButton1} - 옵션버튼1, {XButton2} - 옵션버튼2

 

Send, {Click 700, 400, 0} ; 커서를 좌표계 (700, 400)으로 옮깁니다.
Send, {WheelDown down} ; 마우스 휠을 내리는 상태로 고정합니다.
Sleep, 500 ; 500 ㎳ 기다립니다.
Send, {WheelDown up} ; 마우스 휠을 내리는 상태를 멈춥니다.

 

 

2. MouseMove - 마우스 움직이기

 

MouseMove X, Y [, Speed, Relative] : 마우스를 움직입니다.

 

  • X, Y : 마우스를 이동하고 싶은 위치
  • Speed : 마우스의 이동속도, 입력하지 않아도 기본 속도로 움직입니다. 기본 속도도 변경할 수 있습니다.
  • Relative : 생략하면 기본적인 창좌표계를 사용합니다. "R"을 입력하면 상대위치로 변경됩니다.
    지금 위치에서 상하좌우로 X, Y만큼 움직입니다.

 

 

 

3. MouseClick - 마우스 클릭하기

 

MouseClick [WhichButton, X, Y, ClickCount, Speed, DownOrUp, Relative] : 마우스를 이동한 후에 클릭합니다.

 

  • WhichButton : 클릭을 할 버튼입니다. 기본적으로는 Left(왼쪽클릭)입니다.
    Right(오른쪽 클릭), Middle(중간클릭), 그외 추가 옵션 버튼이 있으면, X1, X2라고 입력하면 됩니다.
    WheelUp / WU은 휠을 위로 돌리는 기능을, WheelDown / WD 는 휠을 아래로 합니다.
    WheelLeft (WL) / WheelRight (WR) 휠을 왼쪽, 오른쪽으로 돌립니다.(구형 휠을 가진 마우스가 있기는 하죠)
  • X, Y : 클릭하기 전에 이동할 좌표입니다. CoordMode로 좌표계의 모드를 변경할 수 있고, 기본값은 창좌표계입니다.
  • ClickCount : 마우스를 클릭할 횟수인데 휠을 선택한 경우 휠도 여러번 돌립니다.
  • Speed : 마우스가 움직이는 속도를 결정합니다. 속도의 범위는 0 (순간이동)부터 100 (가장 느림)까지입니다.
    생략하면 기본속도가 적용됩니다.
  • Down / Up : Down(D)은 별도 명령이 있을때까지 누르는 것이고 UP(U)는 마우스를 떼는 명령입니다.
  • Relative : 생략하면 기본적인 창좌표계를 사용합니다. "R"을 입력하면 상대위치로 변경됩니다.
    지금 위치에서 상하좌우로 X, Y만큼 움직입니다.

 

 

4. MouseClickDrag - 드레그 앤 드롭

 

MouseClickDrag WhichButton, X1, Y1, X2, Y2 [, Speed, Relative] : 마우스의 드레그 앤 드롭을 실행합니다.

일단 목표 위치(X1, Y1)로 이동해서 클릭해서 누른채로 다시 (X2, Y2)로 이동한 후에 놓습니다.

 

  • WhichButton : 클릭을 할 버튼입니다. 이 명령에서는 꼭 입력해야 합니다.
    Left(왼쪽), Right(오른쪽 클릭), Middle(중간클릭), 그외 추가 옵션 버튼이 있으면, X1, X2라고 입력하면 됩니다.
  • X1, Y1 : 시작할 위치의 마우스의 좌표입니다. 먼저 이곳으로 이동한 후에 시작합니다.(기본은 창좌표계입니다.)
  • X2, Y2 : 마우스를 클릭한 후에 이동하는 좌표입니다.(기본은 창좌표계입니다.)
  • Speed : 마우스가 움직이는 속도를 결정합니다. 속도의 범위는 0 (순간이동)부터 100 (가장 느림)까지입니다.
    생략하면 기본속도가 적용됩니다.
  • Relative : 생략하면 기본적인 창좌표계를 사용합니다.
    "R"을 입력하면 상대위치로 변경됩니다. 먼저 지금 마우스 커서에서 X1, Y1 만큼 이동합니다.
    그런 후 지정한 마우스 버튼을 클릭한 상태에서 X1, Y1를 기준으로 X2, Y2 만큼 다시 이동합니다.

 

 

5. MouseGetPos - 마우스의 정보를 입력

 

MouseGetPos &OutputVarX, &OutputVarY, &OutputVarWin, &OutputVarControl, Flag : 마우스의 위치의 정보를 얻습니다. 위치정보에는 마우스의 좌표와 마우스 아래에 있는 프로그램의 이름등이 있습니다.

 

  • &OutputVarX, &OutputVarY : 여기 적힌 변수명을 이름으로 X, Y의 좌표를 입력합니다. Coordmode로 좌표계를 변경할 수 있지만 기본 값은 창좌표계입니다.
  • &OutputVarWin : 마우스 아래에 있는 프로그램의 고유 ID를 변수에 입력합니다.
    창이 감지되지 않으면 값을 빈값으로 취급합니다. 활성화 되지 않아도 마우스 커서 아래에 있는 창을 감지합니다.
  • &OutputVarControl :  마우스 아래에 있는 프로그램의 이름(Class NN)을 변수에 입력합니다.
    창이 감지되지 않으면 빈값으로 취급합니다. 활성화 되지 않아도 마우스 커서 아래에 있는 창을 감지합니다.
  • Flag : 고유 ID나 Class NN을 얻는 방법입니다. 생략하면 0(기본값)입니다.
    1 : Class NN - OutputVarControl 알아내는데 다중 문서 인터페이스를 활성화 합니다.
    (컨트롤 안에 컨트롤은 어렵습니다.)
    2 : 콘트롤의 ClassNN이 아니라 콘트롤의 HWND를 OutputVarControl에 저장합니다.
    3 : 옵션 1과 2를 모두 사용합니다.

 

반응형
728x90
목차

1. AUTOHOTKEY의 좌표계

2. CoordMode - 좌표계 지정 명령어

 

평소에는 컴퓨터 상의 좌표를 신경 쓸까 싶습니다.

하지만 메크로 작성을 위해서 마우스나 창의 좌료를 알아야 합니다.

오토핫키의 각종 기능에 관여하는 좌표계에 대해서 알아보겠습니다.

※ WINDOW SPY로 좌표를 보는 방법은 아래 링크를 참고해 주세요

링크 : Auto Hot Key 2.0의 파트너 Window Spy로 마우스 위치, 색상, 프로그램 이름 알아내기

 

320x100

 

 

1. AUTOHOTKEY의 좌표계

 

① 절대좌표계 혹은 스크린 좌표계(Screen Coordinate) - 모니터 전체의 좌표계입니다.

왼쪽 맨위를 (0, 0)으로 합니다.

오른쪽으로 가면 X가 +로 아래로 가면 Y가 +로 숫자가 증가합니다.

따라서 오른쪽 아래가 가장 숫자가 큽니다.(해상도 전체)

 

② 상대좌표계 - 활성화 되어있는 창의 좌표계입니다.

오토핫키에서 상대좌표계(Relative Coordinate)와 창좌표계(Window Coordinate)는 같은 기능을 합니다.

상대적이다는 Relative 는 다른 명령어랑 혼돈이 올 수 있으니 Window 명령어를 권장합니다.

창의 왼쪽 상단을 기준으로 합니다.

창이 움직이면 움직이고, 창 외부로 나가면 음수가 될 수 있습니다.

 

 

③ 클라이언트 좌표계(Client Coordinate) - 클라이언트 영역의 좌표계입니다.

오토핫키에서 클라이언트 영역은 창(WINDOW) 내부의 제목 바와 매뉴창과 테두리를 뺀영역입니다.

실제 사용하는 영역이라고 봐도 됩니다.

 

 

 

2. CoordMode - 좌표계 지정 명령어

 

좌표계를 사용하는 모드를 변경하고, 적용되는 영역을 변경합니다.

 

CoordMode, TargetType [, RelativeTo] : 기능이나 명령어에 좌표계를 지정합니다.

 

TargetType : 좌표계가 어느 기능이나 명령어에 영향을 줄지 결정합니다. 아래값 중 하나를 입력합니다.

 

  • ToolTip: 최상 위에 있는 창을 만드는 명령어 ToolTip(가장 위의 창)에 작용합니다.
  • Pixel: 이미지나 픽셀을 찾고 위치나 색을 지정하는 명령어에 작용합니다. - PixelGetColor, PixelSearch, ImageSearch
  • Mouse: 마우스를 를 움직이거나 클릭하는 명령어에 작용합니다. - MouseGetPos, Click, MouseMove/Click/Drag
  • Caret: 내장 변수인 A_CaretX / A_CaretY에 작용합니다.
  • Menu : 메뉴기능을 마우스 위치에 출력하는 Menu Show에 작용합니다. 

 

RelativeTo : 어떤 좌표계를 사용할지 결정합니다. 기본값은  절대좌표, 스크린좌표계입니다.

각 좌표계에 대한 설명은 위에 한 것과 같습니다.

 

  • Screen : 절대 좌표계 = 스크린 좌표계(Screen Coordinate)입니다. 기본값입니다.
  • Relative : 상대좌표계(Relative Coordinate)입니다. Window와 같습니다.
  • Window : 창좌표계(Window Coordinate)입니다. Relative와 같습니다.
  • Client : 클라이언트 좌표계(Client Coordinate)입니다.

 

CoordMode, ToolTip, Screen ; 툴팁을 절대 화면 좌표에 배치
CoordMode, ToolTip, Window ; 툴팁을 상대 좌표에 배치

 

 

좌표계는 익숙해지면 편해집니다. Window spy라는 보조툴도 제공하니까 금방 적응 될 것입니다.

반응형
728x90
목차

1. Send, {AppsKey} - 메뉴키

2. 브라우져 컨트롤하는 변수들

3. 운영체제의 마스터볼륨 컨트롤

4. 재생 컨트롤 버튼

 

 

Send의 방대한 기능 중 팁이라고 생각되는 기능들을 정리했습니다.

이번 기회에 못다룬 기능 중에 재미있는 건 다른 기회에 다시 다루어 보겠습니다.

 

1. Send, {AppsKey} - 메뉴키

 

키보드의 menu 버튼에 해당합니다.

보통은 여기에 해당하는 기능 자체가 없고 마우스 오른쪽키와 브라우져의 메뉴를 섞어 논 느낌입니다.

 

← 굳이 따지면 이녀석에 가장 가깝습니다.

 

파일탐색기를 열고 아무파일을 선택하지 실행시키면 이렇게 마우스 오른쪽 버튼을 누른것과 같습니다.

하지만 파일을 선택하거나 주소를 선택하는 등 어딜 선택하느냐에 또 프로그램에서 메뉴버튼을 지원하는 경우에는 그걸 우선적으로 실행합니다.

 

 

320x100

 

 

2. 브라우져 컨트롤하는 변수들

 

인터넷창의 "뒤로가기", "앞으로가기", "새로 고침"등을 컨트롤합니다.

우선 인터넷 익스플로어, 마이크로 소프트 엣지 같은 윈도우 기본 지원 브라우저 뿐 아니라 크롬, 오페라 같은 외부 브라우져도 작동하는 것을 확인했습니다.

많이 사용하지 않아도 취향에 따라 바로가기 키로 등록할 만한 기능들이라고 생각합니다.

 

  • {Browser_Back} : 브라우저의 "뒤로가기" 버튼
  • {Browser_Forward} : 브라우저의 "앞으로 가기" 버튼
  • {Browser_Refresh} : 브라우저의 "새로고침" 버튼
  • {Browser_Stop} : 브라우저의 "정지" 버튼
  • {Browser_Home} : 브라우저의 홈페이지 버튼

 

Send키와 조합해서 써야 합니다.

Send, {Browser_Home}

 

 

3. 운영체제의 마스터볼륨 컨트롤

 

어차피 AUTO HOT KEY의 운영체제는 Window입니다.

마스터 볼륨을 조정할 수 있는 명령어입니다.

 

  • {Volume_Mute} : 마스터 볼륨 음소거. 음소거 상태에서 한번더 실행하면 음소거 해제.
    보통 SoundSet, +1, , mute와 동등함.
  • {Volume_Down} : 마스터 볼륨을 줄입니다. 연속으로 실행하면 계속 줄입니다. 보통 SoundSet -5와 동등.
  • {Volume_Up} : 마스터 볼륨을 높입니다. 연속으로 실행하면 계속 늘립니다. 보통 SoundSet +5와 동등함.

 

Window 10 같은경우에는 이런 마스터 볼륨 창이 화면에 뜨게 됩니다.

 

 

 

4. 재생 컨트롤 버튼

 

이번에는 동영상 플레이어용 명령어입니다.

요즘에는 음악플레이어 사용하시는 분이 많나 모르겠네요.

윈도우 미디어 플레이어를 포함 각종 동영상 재생 프로그램에 사용할 수 있고,

유튜브를 재생중인 브라우져를 선택하고 실행하면 동작합니다.

 

  • {Media_Next} : 미디어 플레이어에서 다음 목록 재생
  • {Media_Prev} : 미디어 플레이어에서 이전 목록 재생
  • {Media_Stop} : 미디어 플레이어 중지버튼
  • {Media_Play_Pause} : 미디어 플레이어 일시정지/다시 재생

 

브라우져나 동영상 플레이어가 필요한 기능들은 활성화가 안된경우 그냥 실행되지 않습니다.

하지만 프로그램 상태에 따라 예상하지 못한 동작을 할 수 있습니다.

이럴때를 대비해서 논리식등 안전키를 넣어두는게 좋습니다.

그런 기능에 대해서도 기회가 되면 포스팅 하도록 하겠습니다.

 


이외에도 다양한 기능이 있습니다.

필요하다 싶으면 포럼이나 다양한 커뮤니티를 이용해서 검색해서 찾는 버릇을 키웁시다.

직접 잘 짜시는 실력파도 있지만 저같은 저랩은 검색으로 배우는게 실력이 늘더라고요.

 

 

 

반응형
728x90
목차

1. SendRaw : 로우모드

2. SendInput : 빠르게 입력하기

3. SendPlay : 방해금지 입력

4. SendMode : 모드 변경하기

5. SetKeyDelay : 키의 딜레이를 제어

 

 

오토핫키의 Send 명령어는 기본 기능만으로 방대해서 한번에 익히기가 어려울 수 있습니다.

특히나 정말로 Send 만 잘 활용하면 키보드로 하는 모든 상황을 대응할 수 있습니다.

그러나 잘 알면 더욱 도움되는 파생함수들이 있으니까 짚어가도록 하겠습니다.

 

1. SendRaw : 로우모드

 

Send에서는 {enter}는 키보드의 엔터키에 대응됩니다.

하지만 코드를 짜다보면 enter라는 문장이 필요할 수 있습니다.

특수키/조합키가 먹히지 않는 텍스트만 사용하는 것이 로우모드입니다.

Autohotkey 2.0 버전에서는 로우모드일 때는 "{중괄호}"는 필요하지 않습니다.

 

Send, {Raw}enter
SendRaw, ^c 문장을 입력합니다. 
→ 결과 : enter^c 문장을 입력합니다.

 

320x100

 

2. SendInput : 빠르게 입력하기

 

사용법은 Send랑 같습니다. SendInput 명령어는 문장을 빠르게 입력합니다.

문장이 켜지는 동안 다른 프로그램이 실행되거나 해서 오류가 나는 경우를 방지합니다.

운영체제따라 다르지만 대략 5000문자로 제한된다고 합니다.

아래에 보면 Send는 빠르기는 해도 한문자씩 들어가지만 SendInput은 한방에 들어가죠.

 

보이시나요?

 

3. SendPlay : 방해금지 입력

 

사용법은 Send랑 같습니다.

속도는 Send < SendPlay < Sendinput인데 SendPlay는 중간에 끼어드는 키보드 입력을 뒤로 미룹니다.

도움말에서는 가장 발전할 버전이라고 하지만 CapsLock, NumLock, ScrollLock를 켜고 끌수는 없다고 합니다.

그리고 보안프로그램에 따라서 실행되지 않는 경우가 있다고 합니다. - 이건 정확한 제보가 아닐 수 있습니다.

(그저 보안프로그램이 정말 맘에 안듭니다.)

기본적으로는 Send를 쓰는게 가장 좋습니다.

 

 

4. SendMode : 모드 변경하기 

 

SendMode, mode : Send의 사용법을 결정합니다.

 

Event(send의 구버전, 거의 유사합니다.), input, Play를 선택할 수 있습니다.

한번 선택하면 그 아래 사용되는 Send가 mode를 따라 바뀝니다.

 

F2::
sendmode, Input ; 이 아래의 Send는 SendInput과 같습니다.
send, 가나다라마바사
sleep, 500
send, 아자차카파타하
sleep, 500
send, abcdefghijklmnopqrustwzyz

msgbox, 끝났습니다.
return

 

5. SetKeyDelay : 키의 딜레이를 제어

 

위에서 빠르게 입력하는 것을 보았지만 프로그램등 사용환경에 따라서는 키 사용에 딜레이가 있어야 합니다.

그걸 지원하는 것이 SetKeyDelay입니다.

SendInput은 한순간에 입력을 하는 모드라서 이 딜레이를 무시합니다.

 

SetKeyDelay , [Delay, PressDuration, Play] : 키의 딜레이를 입력합니다.

 

  • Delay : 키와 키간의 지연시간입니다. -1을 입력하면 전혀 없고, 양수는 ㎳ 단위로 받아들입니다.
  • PressDuration : 키가 눌려져서 때질때까지의 지연시간입니다. -1을 입력하면 전혀 없습니다.
    눌렸다 때는 시간이기 때문에 그냥 타이핑을 봐서는 알 방법이 없습니다.
    사용 환경 소프트웨어(게임등)의 요구조건에 따라 입력해 줍니다.
  • Play : Play라고 입력하면 Play 모드에 지연시간을 입력할 수 있습니다. 여기서 입력하지 않으면 SendPlay는 언제나 지연시간이 -1(즉시 실행)입니다.  

 

 

 

반응형
728x90
목차

1. SEND 명령어

2. 조합키

3. Down과 UP

4. 자주 사용하는 특수키들

5. 그외 특수키들

 

우리가 컴퓨터를 사용해서 하는 일은 대표적으로 입력과 출력 2개가 있습니다.

입력은 거의 모든 경우에 마우스와 키보드로 이루어집니다.

그 중 하나인 키보드 입력에 대해서 알아보겠습니다.

 

1. SEND 명령어

 

SEND, {keys} : 키를 입력합니다.

예) Send, {a} - a를 입력합니다. / Send, {a 20} - a를 20번 입력합니다.

엄청 단순한 사용법이지만 우리가 키보드를 사용하는 방식 다양함으로 여러가지 기능을 지원합니다.

 

※ 기타 : Send 키는 실제로 키보드를 누른것과 같은 동작을 함으로 노딜레이로 실행하면 버그가 나기 쉽습니다.

Sleep 숫자(㎳ 단위의 대기시간을 가집니다.)를 이용해서 딜레이를 주는 요령을 들입시다.

 

 

 

2. 조합키

 

`과 함께 사용해서 키보드의 기능으로 인식되는 조합이 있습니다.

 

  • `n, `r : enter키로 인식합니다.
  • `t : Tap으로 인식합니다.
  • `b : 백스페이스로 인식합니다.

 

아시겠지만 AUTO HOT KEY에서 종종 쓰는 ` 키는 보통 키보드에서 1 왼쪽 ESC 아래에 있는 키입니다.

저는 가끔 다른 키랑 혼돈합니다. 점이라 잘 보이지 않으니 코딩할 때 주의하세요.

 

 

 

3. Down과 UP

 

명령어라기보단느 키 뒤에 위치하여 상태를 제어합니다.

가장 간단한 누르고 있거나 때는 동작을 보여줍니다.

 

DOWN : 키보드를 누르고 있는다.

UP : 눌렀던 키보드를 땐다.

 

아래의 예시는 a를 1000 ㎳ 동안 누르고 있다가 때는 것입니다.

그런데 키를 누르고 있어도 연속으로 aaaaaa... 으로 입력되지 않습니다.

그건 물리적인 우리가 사용하는 키보드의 기능이기 때문입니다.

그리고 한영키에 따라서 한글로 들어갈 수도 있습니다.

 

Send {a down}
Sleep, 1000
Send, {a up}

 

Down을 눌렀다가 UP으로 해지하지 않으면 큰 오류가 날수도 있습니다.

꼭 DOWN을 썻으면 UP으로 정리하는 버릇을 들여야겠습니다.

 

320x100

 

 

4. 자주 사용하는 특수키들

 

가장 자주 쓰는 특수키를 모았습니다.

일반키들은 키보드가 입력되지만 특수키들은 그냥 특수키로 실행됩니다.

예를 들어 Send, {abc} → abc를 입력하지만, Send, {enter} → 키보드의 enter키를 누른 것과 같습니다.

 

    • {F1~F24} : 키보드의 F1~F24, 우리 키보드에는 보통 F12까지 있죠.
    • {Enter} : 키보드의 Enter
    • {Escape} or {Esc}  : 키보드의 ESC
    • {Space} : 키보드의 스페이스, 빈칸이 있어도 스페이스가 됨
    • {Tab} : 키보드의 Tap
    • {Backspace} or {BS} : 키보드의 백스페이스
    • {Delete} or {Del} : 키보드의 Delete 키
    • {Control} or {Ctrl} : 키보드의 Ctrl 키
    • {LControl} or {LCtrl} / {RControl} or {RCtrl} : 왼쪽 Ctrl 키와 오른쪽 Ctrl 키
    • {Alt} : 키보드의 Alt 키
    • {LAlt} / {RAlt} : 왼쪽 Alt 키와 오른쪽 Alt 키
    • {LWin} / {RWin} : 키보드의 왼쪽 오른쪽 WINDOW키
    • {UP} {DOWN} {LEFT} {RIGHT} : 키보드의 방향키 ↑ ↓ ← → 키

 

예시를 들어보겠습니다.

5개의 글자를 선택해서 복사하고 아래에 붙여 넣는 기능입니다.

이런 간단한 작업도 메크로로 짜려면 약간 주눅이 듭니다.(중간에 시간을 1초씩 넣다보니 느리네요)

하지만 한번 짜두면 계속 쓸 수 있는게 메크로의 장점이니 반복된 작업에 사용할 수 있습니다.

 

F2:: Send, {shift down}
Sleep, 1000
Send, {right 5}
Sleep, 1000
Send, {shift up}
Sleep, 1000
Send, {ctrl down}
Sleep, 1000
Send, {c}
Sleep, 1000
Send, {right}
sleep, 1000
Send, {enter 2}
Sleep, 1000
Send, {v}
Send, {ctrl up}
msgbox, 끝났습니다.
return

뭐든 메크로가 작동되면 기분은 좋습니다.

 

5. 그외 특수키들

 

위에 자주쓰는걸 보셨으면 예상이 되겠지만 키보드에 있는 명칭을 거의 그대로 사용합니다.

어려울 것 전혀 없고 많기만 하지만 쭈욱 적어 내려가 볼테니 사용하실 꺼면 참고하세요.

 

  • {Insert} or {Ins} : 키보드의 Insert 키
  • {End} : 키보드의 End 키
  • {PgUp} / {PgDn} : 키보드의 Page up과 Page down 키
  • {CapsLock} : 키보드의 Caps Lock
  • {ScrollLock} : 키보드의 ScrollLock
  • {NumLock} : 키보드의 NumLock
  • {Numpad0} - {Numpad9} : 숫자패드의 숫자들
  • {NumpadDot} : 숫자패드의  .(점)
  • {NumpadEnter} : 숫자패드의 Enter
  • {NumpadMult} : 숫자패드의 * (곱하기)
  • {NumpadDiv} : 숫자패드의 / (나누기)
  • {NumpadAdd} : 숫자패드의 + (더하기)
  • {NumpadSub} : 숫자패드의 - (빼기)
  • {NumpadDel} : 숫자패드의 Del
  • {NumpadIns} : 숫자패드의 ins
  • {NumpadClear} : 숫자패드의 Clear키
  • {NumpadUp} {NumpadDown} {NumpadLeft} {NumpadRight} : 숫자 패드의  ↑ ↓ ← → 키
  • {NumpadHome} : 숫자패드의 Home 키
  • {NumpadEnd} : 숫자패드의 End
  • {NumpadPgUp} {NumpadPgDn} : 숫자패드의 Page up과 Page Down

 

숫자패드 키는 키보드마다 구성이 약간씩 다르지만 이경우 모두 들어갑니다.

프로그램이나 상황에 따라 본 키보드와 숫자패드가 구별되는 상황에서 쓰시면 됩니다.

 

 

반응형
728x90
목차

1. 산술 연산자

2. 논리 연산자

3. 내장 함수 연산자

 

오토핫키에서도 여러가지 연산자를 특별한 부가 기능없이 지원합니다.

쉽고 빠르게 익힌다는 타이틀에 맞게 생각나는 연산자가 대부분 있습니다.

비트연산자등은 심화로 가야 공부할 기회가 있을 것 같습니다. 자주쓰는 연산자를 정리합니다.

 

320x100

 

1. 산술 연산자

 

사칙연산과 숫자의 값을 바꾸는 연산자입니다.

변수에 값을 입력하는 등 여러가지 방식으로 사용됩니다.

 

연산자 설명 사용법
+ 더한다 5 + 7, 결과 12
- 뺀다 5 - 7, 결과 -2
* 곱한다 5 * 7, 결과 35
/ 나눈다 5 / 7, 결과 0.7142857143
** 거듭제곱 5 ** 3, 5*5*5와 같음, 결과 125
// 몫을 구합니다. 10 // 3, 결과 3
mod(자수 / 모수) 자수를 모수로 나눈 나머지를 구한다. mod(10, 3), 결과 1
++ 값을 1 증가시킨다 a++, a := a+1과 같음
-- 값을 1 감소시킨다 a--, a := a-1과 같음
+= 값을 더해서 대입한다. a += 5, a := a+5와 같음
-= 값을 빼서 대입한다. a -= 5, a := a-5와 같음
*= 값을 곱해서 대입한다. a *= 5, a := a*5와 같음
/= 값을 나누어 대입한다. a /= 5, a := a/5와 같음
-(단항) 음수를 적용한다. -(3 * 5), -1 * (3 * 5)와 같음

 

 

 

2. 논리 연산자

 

비교하거나 판단하는 성격이 있는 연산자입니다.

주로 같거나 말거나 크거나 작거나 하는 것을 비교합니다.

하지만 상황이 다양함으로 연산자도 다양합니다.

결과로 TRUE(1)와 FALSE(0)을 반환하거나 연산과정에서 TRUE(1)과 FLASE(0)를 사용합니다.

 

연산자 설명 사용법
>      <
>=    <=
큰지 작은지, 크거나 같은지 작거나 같은지 검사합니다. 5 > 7, 거짓으로 FALSE(0)을 반환
= 같은지 아닌지를 검사합니다. 대소문자를 구별안합니다. "A"="a", 참으로 TRUE(1)을 반환
== 같은지 아닌지를 검사합니다. 대소문자를 구별합니다. "A"=="a", 거짓으로 FALSE(0)을 반환
<>    != 값이 다르면 참, 같으면 거짓을 반환합니다. "a"!="b", 거짓으로 TRUE(1)을 반환
!== 값이 다르면 참, 같으면 거짓을 반환합니다. 대소문자를 구별합니다. "a"!=="A", 거짓으로 TRUE(1)을 반환
And
&&
(명제1) and (명제2), 두 명제가 모두 참이여야 참으로 반환합니다. 3 = 3 and "a"="b", 하나만 참으로
FALSE(0) 반환
OR
||
(명제1) or (명제2), 두 명제중 하나만 참이어도 참으로 반환합니다. 3 = 3 or "a"="b", 하나는 참으로
TRUE(1) 반환
NOT 참을 거짓으로 거짓을 참으로 바꿉니다. NOT(3 = 3 or "a"="b") 참이나 반전되
FALSE(0) 반환
?: 참이냐 거짓이냐 따라서 결과가 다름. A := (논리) ? "a" : "b"
논리가 참이면 A에 "a"를 대입, 거짓이면 "b"를 대입
var := 5 > 7 ? "a" : "b"
거짓임으로 var에는 "b"가 대입된다.

 

3. 내장 함수 연산자

 

오토핫키에서 지원하는 내장함수입니다. 하지만 사용법이 연산자와 같아 연산자로 분류하여 여기로 가져왔습니다.

사용빈도가 높은 내장함수입니다.

 

연산자 설명 사용법
Round(수, 자리수) 반올림합니다. Round(3.14258, 3), 결과 3.142
Ceil(수) 정수가 되도록 올림합니다. Ceil(4.1111), 결과 5
Floor(수) 정수가 되도록 내림합니다. Floor(2.985), 결과 2
ABS(수) 절대값(양수)가 됩니다. ABS(-12), 결과 12

 

단순해보이고 사칙연산처럼 절대 놓치지 않겠다 하는 부분도 있지만,

논리연산자 부분은 가끔 코드를 가볍게 할 수도 있는 것을 놓치고는 합니다.

가끔 이렇게 정리를 해서 숙지해두면 좀더 효율적인 코딩이 가능할 것입니다.

 

반응형
728x90

 

VBA는 엑셀의 자체 내장 프로그램이라 엑셀의 시스템의 영향을 강력하게 받습니다.

정확하게는 엑셀을 활용하는 것이 VBA의 존재이유라고 할 수 있죠.

오늘은 셀을 이동하고 선택하는 코드들에 대해서 알아보겠습니다.

 

 

 

1. RANGE(셀주소)

 

 - 셀의 주소 혹은 범위를 나타냅니다.

RANGE("A1") 혹은 RANGE("A1:A10") 형식으로 ""(따움표) 안에 주소 이름을 넣습니다.

주소를 텍스트로 입력하는 방식입니다.

텍스트 형식의 변수로 바로 사용할 수 있습니다. 아래의 아주 간단한 예시를 보겠습니다.

 

Sub cell_ex()

    A = "A1:D10"    '범위
    Worksheets("sheet1").Range(A).Select '범위를 선택하라

End Sub

 

결과는 아래와 같습니다. - A1:A10을 선택했습니다.

 

선택하기

 

 

 

 

2. CELLS(행번호, 열번호)

 

 - CELLS(행번호, 열번호), 셀의 위치값을 숫자로 넣어 셀을 선택한다.

처음의 행이고 두번째가 열입니다.(X, Y) 좌표계가 익숙한 저는 가끔 헷갈리기도 함니다.

행번호는 왼쪽의 바의 번호 그대로고 열번호는 ABC순서대로 번호로 메겨집니다.

 

예) CELLS(3, 2) → B3, CELLS(5, 3) → C5 가 됩니다.

 

 

 

두개의 명령어를 비교하면 RANGE("셀주소")  ← 셀주소가 TEXT 형식이라서 연산이 안됩니다.

A1+1라고 입력하면 에러가 발생합니다. 하지만 (B2:C10)처럼 범위를 입력하기는 쉽습니다.

CELLS 값을 숫자로 넣기 때문에 CELLS(X + 3, Y + 2) 처럼 연산을 통해 이동할 수 있습니다.

하지만 CELLS는 범위를 넣는 기능이 지원되지 않습니다.

그래서 이런 것들이 가능하도록 필수적인 옵션 명령어 OFFSET과 RESIZE에 대해서 알아 보도록 하겠습니다.

 

 

 

3. OFFSET(행번호, 열번호)

 

 - 셀을 행번호와 열번호만큼 이동해 줍니다.

B2에 있는 칸을 E3로 입력해 봅시다. 행과 열이 가로세로만 구별되면 금방 익숙해집니다.

행번호와 열번호가 숫자로 들어가니 사칙연산도 가능하고 편리합니다.

Sub cell_ex()

    Worksheets("sheet1").Range("B2").Select                 'B2를 선택합니다.
    Worksheets("sheet1").Range("B2").Offset(0, 0).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Range("B2").Offset(2, 3).Select    'B2에서 행 2개 열 3개 이동해서 E4가 됩니다.

    Worksheets("sheet1").Cells(2, 2).Select                 'B2를 선택합니다.
    Worksheets("sheet1").Cells(2, 2).Offset(0, 0).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Cells(2, 2).Offset(2, 3).Select    'B2에서 행 2개 열 3개 이동해서 E4가 됩니다.

End Sub

 

 

이동경로

 

320x100

 

 

 

4. RESIZE(행번호, 열번호)

 

 - 주어진 셀에서 행번호와 열번호만큼의 범위를 지정합니다.

주의할 점은 RESIZE는 크기에 관한거라 1이 최소입니다.

0이나 음수를 지정하면 에러가 납니다.

Sub cell_ex()

    Worksheets("sheet1").Range("B2").Select                 'B2를 선택합니다.
    Worksheets("sheet1").Range("B2").Resize(1, 1).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Range("B2").Resize(2, 3).Select    'B2에서 행 2개 열 3개만큼을 선택합니다.

    Worksheets("sheet1").Cells(2, 2).Select                 'B2를 선택합니다.
    Worksheets("sheet1").Cells(2, 2).Resize(1, 1).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Cells(2, 2).Resize(2, 3).Select    'B2에서 행 2개 열 3개만큼을 선택합니다.
End Sub

 

 

범위선택

 

 

 

5. OFFSET과 RESIZE

 

이 두개는 같이 사용할 수 있습니다.

이동 후에 범위를 선택할 수 도 있지만 반대로 할 수도 있습니다.

자유도가 상당히 높습니다. 

Sub cell_ex()

    Worksheets("sheet1").Range("B2").Offset(2, 3).Resize(3, 2).Select
    Worksheets("sheet1").Cells(2, 2).Offset(2, 3).Resize(3, 2).Select
    
End Sub

 

 

여기까지를 익히면 셀의 이동은 자유자재입니다.

셀만 이동한다고 뭐가 되는건 아니지만 VBA의 기초가 되는 시작점이니 다루어 보았습니다.

그외에도 이동에 도움이 되는 옵션은 조금씩 더 있습니다.

하지만 오늘 기능으로 일단 다 구현이 가능할 것입니다.

필요에 따라서 다음에 모아서 다루어 보도록 하겠습니다.

반응형
728x90

 

데이터보면 그 양이 많고 적은지 알기 어려울 때가 있습니다.
순위를 알면 이 값들이 얼마나 크고 작은지 짐작할 수있습니다.
RANK 함수를 통해서 순위를 어떻게 뽑고 또 중복된 순위를 처리하는 방법을 알아 보겠습니다.
 

 
 

1. RANK 함수 사용하기

 
목록에서 순위를 뽑아주는 함수로 RANK, RANK.EQ, RANK.AVG 3개의 함수로 구성되어있습니다.
RANK는 RANK.EQ와 같은 함수입니다.
각각 크게 사용법이 다르지 않기 때문에 한번에 알아보겠습니다.
 
RANK.EQ(number,ref,[order]) : 주어진 리스트에서 순위를 구합니다. RANK와 같은 함수입니다.
 

  • number : 순위를 구하려는 수입니다.
  • ref : 순위를 확인하려는 리스트입니다. 숫자 목록의 배열 또는 참조입니다. 숫자 이외의 값은 무시됩니다.
  • order : 오름차순으로 순위를 볼지 내림차수로 볼지 결정합니다. 0 - 내림차수, 1 - 오름차수
  • 이 함수는 동일한 숫자가 있을때는 모두 같은 순위를 정수로 반환합니다.

 
RANK.AVG(number,ref,[order]) : 주어진 리스트에서 순위를 구합니다. 
 

  • number : 순위를 구하려는 수입니다.
  • ref : 순위를 확인하려는 리스트입니다. 숫자 목록의 배열 또는 참조입니다. 숫자 이외의 값은 무시됩니다.
  • order : 오름차순으로 순위를 볼지 내림차수로 볼지 결정합니다. 0 - 내림차수, 1 - 오름차수
  • 이 함수는 동일한 숫자가 있을때는 순위의 평균을 반환하여 소수점이 될 수 있습니다.

 
RANK.EQ와 RANK.AVE는 기본적으로 같은 기능과 용법을 가지고 있습니다.
차이는 리스트에서 동일한 중복된 숫자를 처리하는 방법인데요.
EQ는 모두 같은 자연수가 반환되니 이해하기 쉽습니다.
AVG는 바로 등수의 평균을 반영합니다. 2개 있을때는 ().5가 됩니다.
두 함수는 숫자가 같으면 등수가 모두 같다는 점은 동일합니다.

 

같은 수 일 때는 반환하는 방식이 다릅니다.

 

320x100

 
 

2. 중복된 순위를 없애는 방법

 
순위를 겹치지 않게 만들고 싶습니다. 문제가 되는 경우가 있습니다.
이럴때는 엑셀에서는 딱히 깔끔한 방법이 없습니다.
COUNTIF 함수를 사용해야 하고 조금 복잡하게 사용해야 하는데 방법을 소개하겠습니다.
(COUNTIF를 소개하는 링크)
 
=COUNTIF($C$7:C17,C17) - 범위에 앞쪽에는 절대참조 뒤에는 상대참조를 한 후에 아래로 채웁니다.
그럼 "리스트에서 선택할 셀 위에서 같은 값을 샘" 함수가 되게 됩니다.
즉, 처음 만나는 값은 무조건 1이고 똑같은 값을 다시만나면 2, 3 순으로 늘어나게 됩니다.
 

 

 
이걸 이용하면 순위를 고유함수로 사용할 수 있습니다.
RANK의 결과에 이 COUNTIF의 값을 더하고 1을 빼면 됩니다.(countif는 최소가 1임으로)
이런 방식을 사용하면 중복되는 등수가 없어 집니다.
 

 

중복된 순위 없애기

 

 
두 함수를 나누지 않고, 한칸에 모두 사용할 수도 있습니다.
이런 함수는 상당히 길어지지만 나누어 생각하면 이해할 수 있습니다.
=RANK.EQ(C17,$C$7:$C$23) + COUNTIF($C$7:C17,C17) -1
중복까지 제어하면 랭크함수의 마스터가 됩니다. 연습해 봅시다.
 
 
 

반응형
728x90

 

엑셀을 숫자로 되어있는 시간의 형태로 표현할 수 있습니다.

날짜를 지원하는 서식은 여기 포스팅했습니다. - 날짜서식과 날짜를 지원하는 함수(TODAY, DATE, YEAR, MONTH, DAY)

이어서 시간 서식에서는 값이 시간 분 초로 표시되며 이를 이용해서 연산과 함수기능을 지원합니다.

기본적으로는 셀에 HH:MM:SS 형식으로 입력하면 자동으로 시간서식으로 변환됩니다.

 

 

1. 시간 표시형식

 

시간 서식을 선택하는 법은 빠르게 상단의 "표시형식" 매뉴를 사용해도 됩니다.

셀을 선택하고 셀서식에서 표시형식의 시간을 선택하면 됩니다.

셀서식에서는 여러가지 형식을 지원하는데 24시간 방식이나, PM/AM 방식으로 선택할 수 있습니다.

시간 서식 설정하기

 

 

 

2. 시간 형식에 대해서

 

날짜 표시는 정수 1~2958465를 1900년 1월 1일 부터 9999년 12월31일까지를 표현합니다.

시간 표시의 최소단위는 초이고 시간은 하루가 86400초인데 이걸 소수점으로 표현합니다.

1초가 1/86400 = 0.0000115740740740741으로 시간을 표현합니다.

시간만 입력하면 1900년 1월 0일이라는 가상의 날짜가 됩니다.

하지만 날짜는 정수 시간은 소수점임으로 두가지 정보를 다 표현하는 것이 가능합니다.

예를 들어 2022-12-28 13:07:24은 숫자로는 44923.5468055556가 됩니다.

날짜와 시간을 모두 표현할 수 있는 머리가 좋은 방식이라고 생각합니다.

 

320x100

 

 

 

3. 시간 형식의 함수

 

시간 서식을 통해서 시간 함수들을 사용할 수 있습니다.

엑셀의 시간 함수들은 강력하다고는 하기 어렵고 기초적인 기능만을 제공합니다.

 

now() : 시스템의 지금 날짜와 시간을 가져옵니다. ()안은 비어있어야 합니다.

 

TIME(hour, minute, second) : 시간을 입력하는 함수입니다.

 

  • hour  : 시간을 나타내는 0에서 32767 사이의 숫자입니다. 23보다 큰 값은 24로 나눈 나머지가 시간으로 처리됩니다.예를 들어 TIME(27,0,0)은 TIME(3,0,0)이 되고 이 값은 0.125 또는 오전 3:00입니다.
  • minute : 분을 나타내는 0에서 32767 사이의 숫자입니다. 59보다 큰 값은 시간과 분으로 변환됩니다. 
    예를 들어 TIME(0,750,0)은 TIME(12,30,0)이며 이 값은 0.520833 또는 오후 12:30입니다.
  • second : 초를 나타내는 0에서 32767 사이의 숫자입니다. 59보다 큰 값은 시간, 분, 초로 변환됩니다.
    예를 들어 TIME(0,0,2000)은 TIME(0,33,22)이 되고 이 값은 0.023148 또는 오전 12:33:20입니다.

 

HOUR(serial_number) : 시간 값에서 "시"를 추출합니다.

 

  • serial_number : 시를 계산할 시간 값입니다. 기본적으로 시간서식을 입력된 셀을 선택합니다.
    따옴표로 묶은 텍스트 문자열를 직접 입력 할 수 있고, (예: "6:45 PM")
    시간을 소수섬 형식으로 입력 할 수 있습니다.(6:45 PM을 나타내는 0.78125)

 

MINUTE(serial_number) : 시간 값에서 "분"을 추출합니다.

 

  • serial_number :분을 계산할 시간 값입니다. 기본적으로 시간서식을 입력된 셀을 선택합니다.
    따옴표로 묶은 텍스트 문자열를 직접 입력 할 수 있고, (예: "6:45 PM")
    시간을 소수섬 형식으로 입력 할 수 있습니다.(6:45 PM을 나타내는 0.78125)

 

SECOND(serial_number) : 시간 값에서 "초"를 추출합니다.

 

  • serial_number :분을 계산할 시간 값입니다. 기본적으로 시간서식을 입력된 셀을 선택합니다.
    따옴표로 묶은 텍스트 문자열를 직접 입력 할 수 있고, (예: "6:45 PM")
    시간을 소수섬 형식으로 입력 할 수 있습니다.(6:45 PM을 나타내는 0.78125)

 

시간의 계산

 

시간은 정수가 아니라 소수점입니다. 따라서 (시간)+1은 24시간을 더하는 거라 값이 변하지 않습니다.

소수를 직접 더하면 되지만 0.5(12시간)등이 아니면 직관적으로 알기 어렵습니다.

따라서 시간을 입결한 셀끼리 연산하거나 time 함수를 사용합니다.

셀끼리 연산하거나 TIME 함수 활용하기

 

 

 

4. 시간 서식을 사용할 때 주의 할 점

 

서식을 입력할 때는 text 함수를 사용하거나 셀서식에서 사용자지정으로 선택할 수 있습니다.

이 때 시간의 "분"을 의미하는 "mm"은 날짜의 "월"을 의미하는 "mm"과 같습니다.

이때 분과 월을 구별하는 것은 시간과 함께 쓰는지 연도와 함께 쓰는지를 보고 구별합니다.

 

시간 서식 지정하기

 

 

 

 

반응형

+ Recent posts