728x90
목차

1. 참과 거짓 - True와 False

2. 논리 연산자와 논리연산자의 사용

3. 논리 함수들(AND, OR, XOR, NOT)

 

컴퓨터가 판단하는 결과는 딱 두개입니다. 참(1)이냐 거짓(0)이냐 중간은 없습니다. 컴퓨터니까요.

엑셀은 "조건부"라고 해서 판단하는 수식과 함수들이 많습니다.

IF 함수, SUMIF 함수등등 많은 경우 if가 붙어 있죠.(IF와 SWITCH 조건문)

엑셀에서 판단을 담당하는 논리 연산자와 함수들을 알아 보겠습니다.

 

 

320x100

 

1. 참과 거짓 - True와 False

 

엑셀은 TRUE() = TRUE = 0이 아닌 모든 숫자를 참으로 분류하고 FALSE() = FALSE = 0은 거짓으로 분류합니다.

특정한 위치 조건에서 참과 거짓의 성격을 가진 값을 함수로 가지고 있습니다.

 

TRUE() : "참"이라는 뜻을 지닙니다. 이 자체로도 인수가 없는 함수입니다. 그러나 그냥 "TRUE"라고 써도 됩니다. 이 함수는 엑셀과 호환가능한 다른 프로그램과 함께 사용할때 많이 사용됩니다.

FALSE() : "거짓"이라는 뜻을 지닙니다. 이 자체로도 인수가 없는 함수입니다. 그러나 그냥 "FALSE"라고 써도 됩니다. 이 함수는 엑셀과 호환가능한 다른 프로그램과 함께 사용할때 많이 사용됩니다.

 

다만 엑셀과 호환되더라도 다른 프로그램에서도 완전히 같은 방식을쓰지 않기 때문에 "참"과 "거짓"의 의미를 가지는 함수로 지원하는 것입니다.

Tip. 0이 아닌 숫자는 참이고 TRUE()도 참이지만, "TRUE() = 숫자"라고 입력하면 거짓으로 판정됩니다.

 

 

 

 

 

2. 논리 연산자와 논리연산자의 사용

 

엑셀이 지원하는 논리 연산자는 심플합니다.

아래 리스트에 정리했습니다.

 

이름 연산자 설명 사용예시
> 왼쪽이 오른쪽보다 크면 TRUE를 반환 10>1, 참
작음 < 왼쪽이 오른쪽보다 작으면 TRUE를 반환 10<1, 거짓
같거나 큼 >= 왼쪽이 오른쪽보다 같거나 크면 TRUE를 반환 10>=1, 참
같거나 작음 <= 왼쪽이 오른쪽보다 같거나 작으면 TRUE를 반환 10<=15, 참
같다 = 인수가 동일하면 TRUE를 반환 "a"="b", 거짓
다르다 <> 인수가 동일하지 않으면 TRUE를 반환 "a"="b", 참

 

Tip. 함수에 따라서 인수가 연산자를 허용하기도 하고 아닐 수도 있습니다.

예를 들어 IF(logical_test, [value_if_true], [value_if_false]) 함수의 경우 logical_test 자리에 논리를 사용할 수 있습니다.

SUM(range, criteria, [sum_range]) 함수처럼 범위를 다루는 경우 criteria 자리에 하나의 내용으로 입력해야 합니다.

IF 함수의 경우 =IF(10>1,1,0) ← 10>1이라는 연산자를 그냥 입력
SUMIF 함수의 경우 =SUMIF(A2:A8,"<"&A1,C2:C8) ← "<"&A1 라고 &연산자를 사용해서 하나의 값으로 입력

주의사항 정도로 익혀두면 됩니다.

 

 

3. 논리 함수들(AND, OR, XOR, NOT)

 

엑셀에서 다루는 논리 함수들입니다.

주로 여러개의 조건을 같이 사용할 때 유용합니다.

 

AND(logical1, [logical2]) : 인수가 모두 참이면 TRUE를 반환합니다. 하나라고 거짓이면 FALSE를 반환합니다.

OR(logical1, [logical2]) : 인수 중에 하나라도 참이면 TRUE를 반환합니다. 모두 거짓이면 FALSE를 반환합니다.

XOR(logical1, [logical2]) : 인수가 하나라도 거짓이면 TRUE를 반환합니다. 모두 참이면 FALSE를 반환합니다.

NOT(logical) : 인수가 참이면 FALSE를 반환하고, 인수가 거짓이면 TRUE를 반환합니다.

 

AND와 OR은 여러가지 논리연산자를 한번에 사용하도록 해주고 NOT 연산자는 조합으로 사용할 수 있습니다.

이걸 잘 쓰면 IF와 SWITCH(IFS 함수 포함) 다중 구문을 좀 단순화 할 수 있죠.

 

예시)

=IF(AND(A1=A4,B1=B4,NOT(C1=C4)),"합격","불합격") 

 → 이건 A1, A4과 B1, B4이 같으면서 동시에 C1은 C4와 달라야 합격인 조건입니다.

 


잡담.

사실 NOT은 거의 사용하지 않습니다.

연산자 자체가 =에는 반대되는 <>가 있고 >, <, >=, <=는 서로 반대이기 때문에 그냥 사용하면됩니다.

엑셀의 수식이 서로서로 얽혀서 not이 필요할 정도로 복잡해지는 경우는 거의 없습니다.

그래서 XOR로 2013버전에 추가된 신규함수에 속합니다.

주어진 기능을 다 사용해서 성능을 끌어올릴 수도 있지만 단순하게 활용하는 것도 편의를 위해서 좋습니다.

 

 

반응형
728x90
목차

1. IF 함수

2. 다중 IF문

3. SWITCH 함수

4. IFS 함수

 

엑셀의 논리 함수인 IF와 SWITCH는 논리식을 접수해서 조건부로 동작을 하는 함수입니다.

참과 거짓으로 구성된 논리식은 다양한 상황에 적용 가능합니다.
당연하지만 구조가 잘 잡혀 소스코드로 구성된 것과 비교할 수는 없지만, 엑셀이 접근성이 좋다는 것이 장점이 됩니다.

초보자라면 엑셀 조작과 기능, 기본함수와 IF를 배우면 실전에서 사용가능한 레벨이 됩니다.

논리연산자(=, >, <, >=, <=, <>)와 논리함수들(AND, OR, XOR, NOT)을 사용한 논리함수 IF와 SWITCH에 대해 보시죠.


 

320x100

 

1. IF 함수

 
IF(logical_test, value_if_true, value_if_False) : 논리식(logical_test)이 참이면 value_if_true을 아니면 value_if_False을 반반환한다.
 

  • logical_test : 논리식입니다. True (1)과 False (0)으로 결과가 나오는 논리식이나 숫자(0이 아니면 전부 True)가 사용됩니다. 값을 직접 입력하거나 셀을 참조할 수 있습니다. 문자는 #VALUE 에러를 발생시킵니다.
  • value_if_true : logical_test이 참 / True / 1 혹은 0이 아닌 숫자일때 반환할 값입니다. 문자나 숫자 값을 직접 입력하거나 다른 셀을 참조하거나 연산식이 들어갈 수도 있습니다. 입력하지 않으면 빈칸으로 출력합니다.
  • value_if_False : logical_test이 거짓 / False / 0 일때 반환할 값입니다. 문자나 숫자 값을 직접 입력하거나 다른 셀을 참조하거나 연산식이 들어갈 수도 있습니다. 입력하지 않으면 빈칸으로 출력합니다.

 

예시

IF("a"="b", 10, 0) → a=b가 거짓임 → 결과는 0
IF(10>1, 10, 0) → 10>1은 참임 → 결과는 10
IF(15, "abc", "def") → 15는 숫자로 True로 인식됨 → 결과는 abc

 
엑셀답계 표에서 응용하면 이렇게 됩니다.
기준인 "1500"과 값을 비교해서 크면 "초과" 작으면 "부족"을 출력합니다.
 

 
 

2. 다중 IF문

 
참과 거짓일때 출력하는 [Value_if_True]과 [Value_if_False] 자리에 함수를 입력할 수 있습니다.
이걸 이용하면 IF문은 연속적으로 사용할 수 있는 방법이 있습니다.
 
IF(logical_test, IF(logical_test, value_if_true, value_if_False), value_if_False)
IF(logical_test, value_if_true, IF(logical_test,value_if_true, value_if_False))
 
IF안에 IF를 다시 사용하는 건데 복잡해지는 건 어쩔 수 없지만 그만큼 할 수 있는 일이 많습니다.
능력이 강력하다라고 해야겠네요.

예시

A1 = 10, B1 = 5, C1 = 1
A2 = "A", B2 = "B", C2 = "C"

IF(B1 >3,IF(B1>7,"많음","보통"), "작음") → B1=5는 3보다는 크지만 7보다는 작음 → 결과는 보통
IF(A2="A",IF(B2="B",IF(C2="D","맞았어요","아쉬워요"),"틀렸어요"), "꽝입니다")
→ A2=A는 A이고, B2=B는 B이지만 C2=C는 D가 아님으로 → 결과는 "아쉬워요"

예제가 복잡하지요. 어쩔 수 없습니다. 복잡한 함수니까요.
언어를 배우지 않고도 다중 IF문을 쓰시는게 쉬운건 아닙니다.
제 예시를 복사해서 붙여넣어도 보시고 스스로도 변화를 주시면 고수가 될 것입니다.
 

 
 

3. SWITCH 함수

 
잘하는건 잘 하더라도 역시 다중 IF문은 너무 복잡합니다.
IF와 기능은 다릅니다. IF 쪽이 할 수 있는 일이 더 많아요.
하지만 어떤 경우에는 다중 IF문의 복잡한 피하고 약간 간소화해서 SWITCH를 사용할 수 있습니다.
 
SWICH(expression, value1, result1, [default_or_value2, result2]...) : expression이 value1일 경우 result1을 반환하고 value2일 때는 result2를 반환합니다. 다 없을 경우 default를 반환합니다.
 

  • expression : 비교할 대상입니다.
  • value1 : 비교할 값입니다. expression과 완전히 일치하는지 비교합니다.
  • result1 : value1과 같다면 반환할 값입니다.
  • default_or_value2 : expression이 value1과 다른 경우 비교할 값 value 2입니다.
    result 2가 없다면 마지막에 출력할 값이 됩니다.
  • result2 : value2과 같다면 반환할 값입니다.
  • value3, 4, 5 ... / result3, 4, 5 ... : 계속 추가할 수 있습니다. 126개까지 입력 가능합니다.

이게 복잡한 함수는 아닌데 인수를 계속 쓸 수 있는 특성 때문에 설명이 길어집니다.
예시를 사용해서 이어서 설명 드리겠습니다.
아래는 값을 기준표에서 찾아와서 옆의 점수를 출력하게 되어있습니다.
값 → 기준1, 출력1 → 기준2, 출력2 → ... 이런식으로 계속 비교해서 출력합니다.
마지막 까지 못찾을 때를 대비해서 쌍이 없는 숫자인 default를 넣어 둘 수도 있지만 아닐 수도 있습니다.
입력하지 않으면 빈칸으로 출력합니다.
 

 
SWITCH는 같은 숫자만 비교하기 때문에 크거나 작은 값을 조건으로 사용하는 IF문과 비교됩니다.
IF문쪽이 좀더 강력한 기능이기는 하죠.
하지만 사용조건이 맞으면 SWITCH는 입력하기가 쉬워서 필요없다고는 할 수 없습니다.
 
 

4. IFS 함수

 
오피스2019, 혹은 OFFICE365 최신 버전에서 업데이트된 함수입니다.
이름으로 알 수 있듯이 IF함수를 보강한 함수로 다중 IF문을 좀 더 간소하게 사용하기 위해 만들어졌습니다.
다중 IF문이 사용자에게 필요하지만 너무 길다는 단점을 개발진도 인식하는 모양이네요.
 
IFS([Something_True1, Value_True1,Something_True2,Value_True2,Something_True3,Value_True3, ... )
Something_True1이 참이면 Value_True1을 아니면 Something_True2를 검사해서 참이면 Value_True2를 반환합니다.
 

  • Something_True1 : 논리식입니다. True (1)과 False (0)으로 결과가 나오는 논리식이나 숫자(0이 아니면 전부 True)가 사용됩니다. 값을 직접 입력하거나 셀을 참조할 수 있습니다. 문자는 #VALUE 에러를 발생시킵니다.
  • Value_True1 : Something_True1 이 참 / True / 1 혹은 0이 아닌 숫자일때 반환할 값입니다. 문자나 숫자 값을 직접 입력하거나 다른 셀을 참조하거나 연산식이 들어갈 수도 있습니다. 입력하지 않으면 빈칸으로 출력합니다.
  • Something_True2 : 논리식입니다. Something_True1이 거짓이여야 동작하고 참이면 아예 검토도 되지 않습니다.
  • Value_True2 : Something_True2가 참 / True / 1 혹은 0이 아닌 숫자일때 반환할 값입니다. 이전에 참이면 아예 실행되지 않습니다.
  • 조건은 계속 뒤로가면서 입력할 수 있으며, 126개까지 입력이 가능합니다.

 
조건이 거짓이면 계속 뒤로 넘어가는 함수입니다.
조건이 126개 정도면 글자수가 단편소설 분량이 나올 것 같습니다. 사람이 쳐서 만드는 경우는 없을 것 같네요.
아래 예시를 보겠습니다.
 

참인지를 검사해서 계속해서 뒤로 넘어가게 됩니다.
=IFS(C3>=4.5,"A+",C3>4,"A",C3>3.5,"B+",C3>3,"B",C3>2.5,"C+",C3>2,"C",C3>1.5,"D+",C3>1,"D",C3>=0,"F")
 
이 함수의 단점 2개를 가지고 있습니다.
 

  1. 모든 조건이 아닐 경우 #N/A 에러가 출력됩니다. 에러 역시 엑셀의 출력값이지만 보기 싫을 수 있습니다.
    그럴 때는 조건을 다 쓰고 마지막에 =IFS(... ,1,"-") 이라고 입력하면 되겠죠. 다 해보고 아니면 "-"를 출력하니까요.
  2. 조건이 많아질 수록 순서나 입력이 틀리면 의도하지 않는 결과가 날 수 있습니다. 이건 어쩌면 이렇게 복잡한 함수를 사용하면서 필연적인 것일 수 있습니다.

 
 

반응형
728x90
목차

1. 함수를 시작하는 연산자

2. 함수의 목록 보는 법

3. 함수의 구성

4. 상대참조와 절대참조

5. 참조의 이동

 

 

엑셀은 스프레스시트 프로그램으로서 글자를 쓰고 문서를 꾸미는 "워드프로세서"라고 하기에는 부족하고,

그렇다고 많은 양의 데이터를 보관, 분류, 사용하는 "데이터베이스"라고 하기에도 애매합니다.

그러나 세계 그 어느 워드프로세서나 데이터 베이스보다 많이 쓰이는 이유는 바로 이 함수기능에 있다 봅니다.

그래서 엑셀을 배울 때 표 형식으로 된 엑셀의 인터페이스에 익숙해지면 바로 함수를 배우게 됩니다.

 

오늘은 엑셀을 처음 배우시고 있는 분이 볼만한 내용을 포스팅 하고자 합니다.

뭐든 처음에는 거부감이 들 수 있지만 엑셀은 많은 사람들이 사용하는 만큼 처음 쓰는 분도 금방 익힐 수 있습니다.

 

320x100

 

1. 함수를 시작하는 연산자  = 

 

엑셀의 네모난 데이터 입력칸에 =을 입력하면 바로 함수가 시작됩니다.

키보드를 움직이거나 셀을 선택하면 참조영역이 움직입니다.

 

 

이 상태에서 사칙연산자 - +(더하기), -(빼기), *(곱하기), /(나누기)를 누르고 다음셀을 선택하면 최초의 함수가 완성됩니다.

함수를 입력하면 셀에는 함수의 결과 값이, 상단의 수식바에 함수내용이 입력됩니다.

F2 혹을 셀을 더블 클릭하면 함수가 참조하고 있는 셀이 시각적으로 표시 됩니다.

 

 

 

2. 함수의 목록 보는 법

 

사칙연산 말고도 엑셀이서 지원하는 함수는 상당히 많습니다.

전부 다 알수도 필요도 없고 자주사용하는 것 위주로 알면 됩니다.

 

 

수식바의 fx 버튼을 누르면 지원하는 함수의 목록을 볼수 있습니다.

설명이 친절하다고는 못해도 잘 나와있습니다.

엑셀을 시작하시는 분이라면 이 창을 한번 들려보기는 바랍니다.

주제별로 함수들이 분류가 되어 있습니다.

 

 

3. 함수의 구성

 

함수는 이름(값) 으로 이루어져 있습니다.

값을 하나 혹은 여러가지로 필수요소와 선택요소로 나누는데 필수요소는 없으면 함수자체가 실행되지 않고,

선택요소는 입력하지 않다고 기본값이 입력되어 있어 사용할 수 있습니다.

각각의 요소는 쉼표를 기준으로 나누어 집니다.

입력은 아래와 같습니다.

함수를 입력하는 동안 아래에 작은 창에서 함수가 동작 중이고 인자의 이름을 표시하여 도와줍니다.

 

ROUND(number, num_digits) : 숫자를 반올림 합니다.

 

  • number  : 반올림 할 숫자입니다.(필수요소)
  • num_digits  : 인수를 반올림할 자리수 입니다.

 

number - 반올림할 숫자는 직접 숫자로 입력해도 되고 다른 셀에서 가져와도 됩니다.

아래 사용 예를 보면 위에는 셀 A3의 값을 따라오거나 2.33333이라는 숫자를 직접 입력했습니다.

 

 

 

4. 상대참조와 절대참조

 

함수의 사용에는 익숙해지는 연습이 필요합니다.

함수의 사용법 중에 값을 입력하는 방법을 더 알아보겠습니다.

SUM 함수로 예로 설명하겠습니다.

 

SUM(number1,[number2],...) : 참조하고 있는 값을 전부 더합니다.

 

  • number1 : 더할 숫자를 입력합니다. 셀이나 셀의 범위 혹은 값이나 값들을 넣을 수 있습니다.
  • number2-255 : 추가 숫자, 셀 참조 또는 추가할 범위(최대 255개)

 

참조하고 있는 셀 값은 복사에서 붙여 넣으면 움직입니다.

아래 그림으로 설명하겠습니다.

위에 있는 셀을 선택하면 붙여 넣으면 붙여 넣는 위치에 따라서 참조하고 있는 셀도 움직입니다.

복사해서 아래 한칸에 붙여넣으면 참조범위도 아래 한칸씩 움직입니다.

이것이 상대참조입니다.

상대참조

이렇게 복사 붙여넣기 따라서 범위를 움직이지 않게 하는 것이 절대 참조입니다.

범위를 선택하고 F4키를 입력하면 절대참조 상태가 됩니다.

연속으로 F4를 클릭하면 행이나 열에만 걸어둘수 있는데 또 범위에 $를 직접 입력해도 같은 효과가 납니다.

 

 

5. 참조의 이동

 

함수에서 값이나 값의 범위를 입력한는 방법은 4가지가 있습니다.

 

엑셀 함수는 값이나 범위 255종류까지 입력이 가능합니다.

한계가 있는 것 같지만 상당히 많은 양으로 다 쓰는 경우는 아주 드믈것 같습니다.

  • 범위입력 : 범위로 입력하면 계산을 계산대로 수행하면서 1 종류로 칩니다.
    가장 쉬운 입력방법이지만 범위는 엑셀 내에서 전부 붙어있어야 합니다.
  • 각 셀의 입력 : 셀을 따로 따로 입력할 수 있습니다. 떨어져있는 셀을 입력할 수 있어 편리합니다.
    각각 한 종류로 칩니다. 범위와 셀을 따로따로 넣을 수도 있습니다.
  • 숫자들의 입력 : 숫자을 직접하나씩 입력합니다. 이 경우 숫자 하나가 한 종류가 됩니다.
  • 배열의 입력 : 중괄호인 {}안에 숫자들을 쓰면 배열이됩니다. 이 배열은 하나의 배열이 한 종류입니다.
    말 장난하는 것 같지만 배열은 고급 함수에서 중요한 존재가 되니 이 기회에 알아만 두세요

각 입력방법


알고 있는 내용을 최대한 포스팅 하고 싶습니다.

이미 아시는 분이 많기는 하지만 초보자를 위한 내용을 다루어 보았습니다.

 

 

반응형
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

 

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"과 같습니다.

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

 

시간 서식 지정하기

 

 

 

 

반응형
728x90
목차

1. 모집단, 표본집단 왜 나누어야 하죠?

2. 표준편차의 활용

3. 표본집단의 표준편차(n-1 방식)의 의미

4. 표본집단의 표준편차(n-1 방식)의 한계와 극복하기

 
 
표준편차의 뜻과 계산에 대해서 지난번에 포스팅 했습니다.
표준편차는 의미는 쉽지만 사용함에 있어 설명을 추가로 필요합니다.
표준편차의 의미와 계산하는 방법은 아래링크를 참고하세요.

 

EXCEL 모집단과 부분집단의 표준편차의 구해보기(STDEV 함수들)

현실에서 데이터는 이론과는 다르게 여러가지 영향을 받아서 분포를 가집니다. 이런 DATA의 분포를 정확하게 분석하는 방법에 대해 설명드리고자 합니다. 1. 표준편차의 뜻 아래 A와 B 그래프로

toast-story.tistory.com

 


오늘은 모집단과 표본집단에 대해서 좀 더 자세히 알아보고 그 활용을 알아보고자 합니다.
두 개의 표준편차 공식이 달라 모집단의 표준편차 계산방식은 (n 방식), 표본집단은 (n-1 방식)이라고 설명하겠습니다.


 

모집단과 표본집단 표준편차 공식

 

※ 이번 포스팅은 이론적인 면도 있지만 제 경험과 의견을 기반으로 함을 미리 알려드립니다.
 

 


 

1. 모집단, 표본집단 왜 나누어야 하죠?

 
모집단은 대상의 모든 데이터이고 표본집단은 데이터의 일부만 조사한 경우입니다.
따라서 표본집단은 모집단의 안에 포함된다고 볼 수 있겠네요.

 

표본집단

 

모집단의 경우에는 데이터를 전수조사한 경우입니다. 모집단이 보통 같지만 오히려 표본집단을 많이 씁니다.
왜냐면 모든 사건이 일어났는데 분석하는 건 늦었을 때가 많기 때문이죠. (그래도 어느정도는 사용합니다.)
비교적 표본집단의 데이터만 얻게 되는 경우가 더 많습니다.
 

  1.  모집단 전체의 데이터를 얻기에는 너무 많고 조사하는데 시간이 많이 필요한 경우
      예) 한국인 모두의 설문조사
  2.  데이터가 시간에 의해 발생하는데 미래의 데이터를 미리 측정할 수 없는 경우
      예) 수요일의 사당역 이용자수 - 다음주 수요일이 항상 존재함으로 지금까지 데이터를 전부라고 할 수 없습니다.
  3.  데이터를 측정하는데 시료가 파괴되는경우
      예) 휴대폰 새로운 모델 액정의 파열강도 - 시료를 전부 검사하고 나면 사용할 다른 시료를 만들어야 합니다.

 
가만 생각해보면 거의 모든 경우에는 모집단 이란 건 없는 거나 다름없죠.
미래에 생길 일까지 포함하면 전부 측정하는 것은 불가능합니다.
그래서 표본집단을 분석하는게 도움이 됩니다.
 
 

 

2. 표준편차의 활용

 
아래의 그래프에서 A는 산포가 넓고, B는 산포가 좁습니다.
그래프 안의 빨간 점선이 기준일 때  A그래프의 산포군에서는 점선을 넘는 데이터가 발생하고,
B 그래프에서 가망이 없어 보입니다.(확율이 너무 낮아서 0이나 다름 없든지)
 

산포의 예시

 

 

표준편차를 알면 과거 시점 혹은 다른 곳에서 측정한 데이터를 기반으로 사건이 일어날 확율을 미리 예상 할 수 있습니다.
정규분포에서는 표준편차의 3배가 넘어는 경우 0.3%이하 표준편차의 6배가 넘는 일은 0.0004% 이하로 떨어진다고 합니다.
산포의 모양이 정규분포만 있는건 아니지만 대략적으로 표준편차의 배수로 예상할 수 있습니다.
 

320x100

 
 

 

3. 표본집단의 표준편차(n-1 방식)의 의미

 
모집단의 표준편차(n방식)은 사전적인 의미 그대로 입니다.
중요한건 표본집단의 표준편차인데요. 수학적인 증명은 하지 않고 설명만 드리겠습니다.
 

  1. 아래 그림처럼 커다란 모집단에서 표본집단을 한번 측정한다고 하겠습니다.
  2. 만일 이 표본집단을 여러번 측정한다면 모집단의 크기에 점점 가까워집니다.
  3. 이 상황을 수학적으로 전개하면 표본집단을 무수히 측정했을때 그 값은 n-1 방식에 수렴합니다.
    (적은 수로 실험해도 반복하면 표준편차는n-1방식에 접근합니다.)

 

n-1 방식

 
"n-1 방식 - 표본집단 표준편차는 집단의 일부로 전체 표준편차를 예상한 것"입니다.
 

모집단과 표본집단

 

 

즉, 표본집단의 표준편차 공식으로 우리는 아직 측정하지 않은 다른 데이터가 존재할 확율을 구할 수 있습니다.
제품이라면 기대성능의 확율, 선거의 후보당선이나 주식의 변화를 예상하는데 사용됩니다.
(공정의 식스시그마, 주식의 볼린저 밴드 등에서 사용되는 기법입니다.)
 
 

 4. 표본집단의 표준편차(n-1 방식)의 한계와 극복하기

 
툭하면 일기예보는 안맞고 아무리 전문가라도 주식은 다 틀립니다.
이제 표준편차라는 강력한 도구가 있는데 어째서 한계가 있을까를 알아야 합니다.
예측은 예측일 뿐이라는 편안한 표현으로 넘기지 말고 원인을 공부해서 대책을 세워 봅시다.
 


① 데이터가 집단을 대표할 수 없을때
 
예를 들어 출퇴근 시간에 대해서 조사를 해 보겠다고 하겠습니다.
하기를 보면 표본집단이 하나의 요소(교통수단) 쏠려 전혀 집단을 대표하지를 못합니다.
 

중심이 치우친 신뢰성이 없는 데이터

 


② 극복하기 위해 데이터의 대표성을 확보하기
 
이런 경우에는 데이터를 조사할 때 오른쪽처럼 되도록 강제로 유도할 필요가 있습니다.
유도하려면 인자를 잘 알고 있어야 할 것입니다.
자동차를 타는 사람과 자건거를 타는 사람들을 똑같은 수로 모으면 데이터의 대표성이 향상됩니다.
 

중심을 확보하여 적은 수로도 신뢰성 있는 데이터

 


③ 데이터는 결국 많을 수록 믿을 만합니다.
 
위는 극단적이고 살짝 현실적으로 생각해 보겠습니다.
보통의 경우 현상이란 통제가 어려운 인자 여러개가 작용한 결과입니다.
따라서 우리는 표본집단이 충분히 제어되는지 알기 어렵습니다.
그럴때는 오른쪽 처럼 많이 조사 집단을 크게 하는 것이 답이 될때가 많습니다.
무식하다고 생각하실지 모르지만 이런 경우에는 양으로 밀어 붙이는게 현장에서 가장 잘 쓰는 방법입니다.
 

조사의 횟수를 늘리는 것이 결국 답

 


④ 표준편차를 사용할 수 없을 때 - 데이터가 불연속 적일때
 
인자의 데이터가 불연속 적인 경우가 있습니다.
이런 경우에는 표준편차의 적용이 어렵습니다.
 

이런걸 예상해서 미리 준비하기는 어렵습니다

 

예를 들어 습도는 어느이상 포화되면 이슬이 맺이게 됩니다.
정밀한 화학 실험에서는 포화 전후가 완전히 다른 양상을 보이게 될 것입니다.
그 외에도 일반적인 사물이 깨지는 현상, 얼거나 기화되어 상이 변할 때 등등 연속적이지 않은 현상이 있습니다.
사실 이런 경우에도 여러가지 해결방안이 있습니다.
구간을 나누거나 다른 지표를 사용해서 대체 하거나 하는 방법으로 컨트롤 합니다.
이건 여러분야에서 연구됩니다. 주식에서  갑작스러운 적대적 M&A, 날씨에서는 가까운 곳에서
화산 폭발처럼 갑작스러운 현상들을 예측하려 노력하는 사람들이 있습니다.
불연속적인 데이터를 관리하는 정규적이지도 않고 요령과 감이 필요하며 내용도 너무 깁니다.
다음에 기회가 된다면 소개하고 싶네요.
 


⑤ 표준편차를 사용할 수 없을 때 - 예상을 뛰어 넘을 때
 
예상을 뛰어넘을 때라고 말할수도 있고 비선형성이 너무 심할때 라고 표현할 수 있습니다.
현실에서는 정규분포에서 벗어난 인자가 그 동안 관측되지 않았지만 오늘 처음 일어난 인자가 존재합니다.
그 인자가 너무 비선형적이라면 예측이 지극히 어렵습니다.
아래 그래프의 빨간 박스영역을 관측하고 그 외의 영역을 예상하는 건 거의 불가능 할 것입니다.

이런 경우도 이론만 따지면 수학적으로는 대응이 가능합니다.
하지만 현실적으로 예상해서 움직이기가 어려운 케이스라고 볼수 있습니다.
(시물레이션 모델이 우수하다면 알아낼지도 모르죠.)
 
 

 

4. 데이터는 얼마나 확보를 해야 하나요?

 
우리는 산포와 예측에 대해 고민하보면 결국 이 질문에 도달합니다.
통계학적으로 n>=30개 이면 유의미한 데이터를 얻을 수 있다고 합니다.
하지만 현실적으로 여러 인자들에 의해 표본집단에 대해 보장을 할 수 없어 30개로 부족합니다.
그렇다고 무작정 많이 하라는 것은 아닙니다. 가능한 인자를 제어하는 게 중요합니다.
예로 기계(인자)가 여러 대 일 경우 3대 이상을, 다수의 사람들이 만드는 패턴이라면 최소 주말과 평일을 나누어서 데이터를 수집해야 합니다.
최대한 다양한 데이터를 얻는 것이 미래의 사고를 예방할 수 있습니다.
 
그러나 도무지 비용적인 한계가 있는 경우가 있습니다.
그럴 때는 이론과 모델링을 통해서 피해를 최소화하며 검증해야 하겠죠.
가능하기는 하지만 통계를 통해 미래를 예측하는 것은 어렵습니다. 저 역시 현실의 비용과 시간한계속에서 시험의 양과 인자를 제어하는 건 항상 시행착오가 있습니다.
 


여기까지 표준편차의 통계적인 활용과 한계에 대해서 설명드렸습니다.
늘 안타까운게 기술 개발 현장에서 개인적은 생각은 교육을 많이 받는 사무직 직원들은 정말 통계값을 잘 활용하지만,
비교적 현장 관리자들은 공식만 보고 겁을 먹고 공부도 잘 하지 않는 것 같습니다.
현실적으로 통계학이론으로 한계가 있는 점은 많지만 그래도 잘 알고 활용한다면 강력한 툴이됩니다.
한 사람이라도 도움이 되기를 바라며 포스팅 해 보았습니다.
 

반응형
728x90
목차

1. 표준편차의 뜻

2. 표준편차의 공식(모집단, 표본집단)

3. 엑셀로 계산하기

 

현실에서 데이터는 이론과는 다르게 여러가지 영향을 받아서 분포를 가집니다.

이런 DATA의 분포를 정확하게 분석하는 방법에 대해 설명드리고자 합니다.

 

 

 

1. 표준편차의 뜻

 

아래 A와 B 그래프로 먼저 설명을 하겠습니다.

A는 중앙의 평균 선에서 데이터들이 넓게 퍼져 있으며 B는 데이터들이 비교적 평균에 몰려 있습니다.

A는 산포가 크다. B는 산포가 작다고 표현합니다.

데이터를 볼 때 평균을 기준으로 산포의 크기를 나타내는 수가 표준편차입니다.

 

표준편차가 크고 / 작은 경우

 

 

 

 

2. 표준편차의 공식(모집단, 표본집단)

 

각 값들이 "평균에서 데이터가 얼마나 떨어져 있는지" = "평균과 데이터의 거리가 얼마인지"입니다.

평균과 데이터의 거리들의 평균을 분산이라고 하고 공식으로 정리하면 아래와 같습니다.

 

 

분산에 제곱근을 취한 형태가 바로 표준편차입니다.

따라서 표준편차는 평균과 값들의 거리와 관련이 있는 값입니다.

 

 

표준편차를 보는 방법은 모집단과 표본집단이 있는데 공식에서는 n과 n-1인 것만 차이가 납니다.

그외는 동일하니 앞으로 모집단(n 방식), 표본집단(n-1 방식)이라고 부르겠습니다.

 

① 모집단(n 방식)은 대상의 모든 값을 입력했을때 사용하고

② 표본집단(n-1 방식)은 대상 중 일부만 본 경우에 사용합니다.

 

 

 

얼핏 대상의 데이터 전체를 볼 때 사용하는 모집단(n 방식) 방식을 많이 사용할 것 같지만 사실 표본집단(n-1 방식)을 많이 사용합니다.

데이터 전체를 모두 알고 있는 경우에는 사실 분석할 의미가 없는 경우가 많습니다.

우선 이 정도만 정리하고 다음 포스팅에서 이 의미에 대해서 자세히 다루어 보겠습니다.

 

320x100

 

 

 

3. 엑셀로 계산하기

 

엑셀에서는 STDEV 함수를 통해서 이 표준편차를 쉽게 구할 수 있습니다.

표준편차는 표본집단과 모집단 방식으로 나누어 집니다.

 

STDEV(number1,[number2],...) = STDEV.S(number1,[number2],...) = .STDEVA(number1,[number2],...)

 

  • 표본집단의 표준편차를 구합니다.(n-1 방식)
  • number : 범위나 숫자를 입력할 수 있습니다. 여러 개의 범위나 숫자들을 입력할 때는 255개까지 가능합니다.
  • 이 3함수 버전에 따라 없을 수도 있지만 정확하게 같은 함수입니다.
  • 구버전에는 STDEV 함수만 있었지만 모집단(n 방식)과 표본집단(n-1 방식)을 구별하기 위해서 추가되었습니다.

 

STDEV.P(number1,[number2],...) = .STDEVP(number1,[number2],...)

 

  • 모집단의 표준편차를 구합니다.(n 방식)
  • number : 범위나 숫자를 입력할 수 있습니다. 여러 개의 범위나 숫자들을 입력할 때는 255개까지 가능합니다.
  • 이 2함수 버전에 따라 없을 수도 있지만 정확하게 같은 함수입니다.

 

사실 계산하는데는 함수만 뚝 집어넣으면 되는 표준편차라 엑셀의 스킬과는 상관없습니다.

굳이 별도로 포스팅한 이유는 개인적으로 많이 사용하고 중요하게 생각하기 때문입니다.

모집단과 표본집단의 표준편차의 활용법에 대해서 다음 포스팅을 통해서 설명하고자 합니다.

 

https://toast-story.tistory.com/28

 

모집단과 표본집단의 표준편차와 산포 분석하고 활용하기

목차 1. 모집단, 표본집단 왜 나누어야 하죠? 2. 표준편차의 활용 3. 표본집단의 표준편차(n-1 방식)의 의미 4. 표본집단의 표준편차(n-1 방식)의 한계와 극복하기 표준편차의 뜻과 계산에 대해서 지

toast-story.tistory.com

 

 

 

 

 

반응형
728x90

 

 

가격이나 갯수를 데이터를 분석할 때 가장 기본적인 분석은 합계를 구하는 것입니다.

엑셀을 배운다면 첫날 배우게 되는 SUM 함수는 그래서 자세한 내용은 넘어가는 경우가 많습니다.

기능을 좀 구체적으로 정리하고 파생함수인 SUMIF에 대해서 알아보겠습니다.

기본적으로 "="으로 시작해서 셀의 사칙연산을 입력할 수 있는데 이걸 쉽게 하는게 SUM입니다.

 

 

 

 

1. SUM 함수

 

SUM(value) : 입력된 모든 값들의 합을 구합니다. 셀이나 범위 혹은 숫자를 입력할 수 있습니다.

 

sum
좌우는 같은 같은 결과입니다.

 

범위는 넣는 것에 관해서 엑셀 도움말에서는 아래와 같이 설명합니다.

 

=SUM(A2:A6)은 =A2+A3+A4+A5+A6보다 입력 오류가 발생할 가능성이 낮습니다.

 

함수는 장점이 하나 더 있는데 범위 내에 문자 있는 경우 자동으로 배제 한다는 것입니다.

그런데 텍스트를 넣으면 오류가 나서 실수로 입력한 데이터를 발견하는게 좋을 수 도 있습니다.

상황에 따라서 선택이 될 수 있습니다.

 

 

SUM 함수는 SUM(A1:A10,D1:D10,20,21,"5",True) 이런식으로 입력하면 모든 숫자를 다 더합니다.

"5"는 숫자 5로 서식이 자동변환되며 TRUE = 1로 쳐서 더합니다.

쉼표를 이용한 다양한 범위는 20개까지 입력할 수 있습니다.

 

320x100

 

 

 

2. SUMIF 함수

 

단순히 덧셈을 수행하는 것이 아닌 조건을 가지고 합연산을 수행합니다.

규칙을 입력하는 방법을 알면 쉽게 사용할 수 있습니다.

 

SUMIF(range, criteria, [sum_range]) : 지정한 조건을 충족하는 범위값을 합산합니다.

  • range : 검사조건을 수용할 범위입니다. crieria의 조건을 검사합니다.
  • criteria : 검사 조건입니다. 특정 값과 같거나(=), 크고 작은(>, <) 논리 연산자를 수행합니다.
  • [sum_range] : 합계 연산을 실행할 범위입니다.(합을 구할 데이터들), 비워두면 range와 같은것으로 계산합니다.

 

왼쪽의 표에서 과일의 종류별로 합산하는 표가 오른쪽에 있습니다.

range인 이름 B4:B29 범위에서 Criteria의 종류가 같은 것을 고릅니다.

그럼 엑셀이 sum_range에서 같은 위치를 찾아서 더합니다.

따라서 range와 sum_range는 동일한 행 혹은 열 구성을 가져야 오류가 없이 계산이 됩니다.

 

 

숫자범위를 가지고 합을 연산하는 방법도 있습니다.

2월 3일 이전의 합계를 계산하도록 하는데 조건을 쌍따움표를 사용해서 입력해야 합니다.

"<="&조건 : & 연사자를 이용해서 논리연산자와 조건을 연결해야 작동합니다.

range의 날짜범위 B4:B29에서 G4날짜보다 작은 날짜만 더 합니다.

이 때도 조건에 맞는 행의 sum_range의 같은 행을 찾아서 더합니다.

 

적용 결과

 

 


 

SUM함수 같은 경우 많은 분들이 이미 많이 사용하고 있습니다.

그래도 정확한 사용법은 한번 알아보면 좋습니다.

연산식은 응용을 하면 사용법이 다양해 지고 효율적으로 문서를 작성할 수 있습니다.

문서가 도움이 되었으면 좋겠습니다.

 

 

 

반응형

+ Recent posts