1. 개요
Microsoft Excel의 함수 목록과 사용법을 간단하게 정리한 문서.2. 함수
모든 함수를 입력할 때는 =함수명(입력값)으로 입력해야 한다. NOW 함수같이 입력값이 없는 함수도 있지만[1] #NAME? 오류를 뿜어내므로 괄호까지 모두 입력해야 한다.2010 버전에서 VAR.S나 STDEV.S 등 많은 통계 함수가 추가되었고, 2013에서도 SKEW.P 등 몇몇 새로운 통계학 함수들이 추가되었다. 2016부터는 매크로 바이러스로 인해 2010 버전 이전에 쓰던 호환 함수들을 지우기 시작했다. 이 함수들은 실행은 가능하지만 저장하려면 2016 버전에서 지원하는 대체함수로 변경해야 저장된다. 2019에서는 더 많은 하위호환 함수들이 빠졌다. 또한 일부 함수는 언어에 따라서 사용이 불가능하기도 하다.[2] HLOOKUP 함수과 VLOOKUP 함수의 상위호환격함수인 XLOOKUP 함수의 경우 Excel2019버전까지는 사용이 불가능하다.
대부분의 함수들은 리브레오피스, Calc, Google Sheets. Numbers 등 에서도 그대로 호환된다.
2.1. 수학 함수
INT(number(인수))[3] | 인수의 소수점 아래를 버리고 가장 가까운 정수로 내림한다. C언어 등의 floor 함수와 같다. 수학적으로는 최대 정수 함수[4]가 있다. 즉, 인수의 정수 부분을 보여준다. |
PRODUCT((number1(인수1), … number254(인수254)) | 인수들의 곱을 구한다. |
ROUND(number(인수), num_digits(반올림할 자릿수)) | 인수를 자릿수만큼 반올림한다. 0을 입력하면 소숫점 없이 반올림이 된다. 소숫점을 지정할 때에는 num_digits 값이 양수, 백의 자리나 천의 자리 등을 지정할 때에는 음수여야 한다. 특히 컴활 등의 시험문제에서 "십의 자리까지" 와 "십의 자리에서" 는 서로 다른 표현. 전자는 -1, 후자는 -2 를 입력해주자. 이 함수는 일단 인수를 절대값으로 바꿔서 반올림한 뒤 원래 인수가 음수면 그 결과값을 음수로 변환해서 돌려준다. 아래의 ROUNDDOWN과 ROUNDUP도 동일. |
ROUNDDOWN(number(인수), num_digits(내림할 자릿수)) | 인수를 자릿수만큼 내림(버림)한다. |
ROUNDUP(number(인수), num_digits(올림할 자릿수)) | 인수를 자릿수만큼 올림한다. |
SUM(number1(인수1), … number254(인수254)) | 인수들의 합을 구한다. |
SUMIF(Range(참조할 범위), Criteria(조건), sum_range(합을 구할 범위) | 참조된 범위 중에서 조건에 맞는 것만 합을 구할 범위에서 찾아서 합을 구하는 함수이다.[5] |
SUMPRODUCT(array1(곱할 배열), array2(곱할 배열), …) | 배열을 n차원 벡터로 취급하고 내적한다. 예를 들어 (a×b)+(c×d)+(e×f) 일 때, array1 은 a, c, e 가 되고 array2 는 b, d, f 가 된다. 이는 벡터의 내적과 연산법이 같다. 2003 버전까지는 위의 SUMIFS 함수가 포함되지 않았기 때문에, SUMIFS의 기능을 이용하기 위해서는 해당 함수를 이용할 수 있다. |
2.2. 통계 함수
AVERAGE(인수1, 인수2, … 인수254) | 인수의 산술 평균값을 구한다. 예전에는 인수의 개수가 30개까지였지만 지금은 254개로 바뀌었다. |
MEDIAN(인수1, 인수2, … 인수254) | 인수들의 중앙값을 구한다. 셀의 숫자가 24, 12, 57인 경우 중앙값은 12가 아니라 크기 순으로 정렬한 후의 중간 숫자인 '24'가 된다. |
MAX(인수1, 인수2, … 인수254) | 인수들 중에서 최대값을 구한다. 단, 논리값과 텍스트는 제외한다. |
MIN(인수1, 인수2, … 인수254) | 인수들 중에서 최소값을 구한다. 단, 논리값과 텍스트는 제외한다. |
COUNT(인수1, 인수2, … 인수254) | 인수들 중에서 숫자가 있는 인수를 센다. |
COUNTIF(찾으려는 위치, 찾으려는 항목) | 기준을 충족하는 셀의 갯수를 계산한다. (예: 고객 목록에 특정 도시가 표시되는 횟수 계산). 예1) =COUNTIF(A2:A5,"런던") 예2) =COUNTIF(A2:A5,A4) 참조 |
LARGE(범위, K번째) | 범위에서 K번째로 큰 값을 구한다. |
SMALL(범위, K번째) | 범위에서 K번째로 작은 값을 구한다. |
RANK(인수, 범위, 논리값) | 범위 내에서 지정한 수의 순위를 구한다. 논리값이 0이거나 생략되면 내림차순으로, 0이외의 값은 오름차순으로 표시 |
2.2.1. 추론통계학 함수
VAR.S(인수1, 인수2, … 인수254) | 표본 분산(sample variance)은 VAR.S 함수로 구한다. 예전엔 VAR 함수를 썼다. |
VAR.P(인수1, 인수2, … 인수254) | 모 분산(population variance)을 구한다. 예전엔 VARP 함수를 썼다. VAR 함수와 VARP 함수는 아직은 지원되지만 이후 버전에서는 지원이 종료될 수 있다. |
STDEV.S(인수1, 인수2, … 인수254) | 표본 표준 편차(sample standard deviation)는 STDEV.S 함수로 구한다. 이전 버전까지는 STDEV 함수를 썼다. |
STDEV.P(인수1, 인수2, … 인수254) | 모 표준 편차(population standard deviation)는 STDEV.P 함수로 구한다. 예전엔 STDEVP 함수를 썼다. 아직까지는 STDEV 함수와 STDEVP 함수도 지원되지만 이후 버전에서는 지원이 중단될 수 있다. |
NORM.DIST(x,mean,standard_dev,cumulative) | 지정된 평균과 표준 편차를 갖는 정규 분포값을 반환한다. 이 함수는 가설 검정 등 통계의 광범위한 영역에서 응용된다. x는 분포를 구하려는 값이다. mean은 분포의 산술 평균이다. standard_dev는 분포의 표준 편차이다. Cumulative는 함수의 형태를 결정하는 논리값으로서, cumulative가 TRUE이면 NORM.DIST에서 누적 분포 함수가 반환되고 FALSE이면 확률 질량 함수가 반환된다. |
CONFIDENCE.NORM(alpha,standard_dev,size) | 정규 분포를 사용하여 모집단 평균의 신뢰 구간을 반환한다. 신뢰 구간은 값의 범위다. 표본 평균 x는 이 범위의 중심에 있으며 범위는 x ± CONFIDENCE.NORM이다. 예를 들어 x가 우편을 통해 주문한 제품 배달 시간의 표본 평균인 경우 모집단의 평균 범위는 x ± CONFIDENCE.NORM이다. 이 범위에 속하는 임의의 모집단 평균 μ0에 대해 μ0를 기준으로 x보다 먼 표본 평균을 얻을 확률은 alpha보다 크다. 이 범위에서 벗어난 임의의 모집단 평균 μ0에 대해 μ0를 기준으로 x보다 먼 표본 평균을 얻을 확률은 alpha보다 작다. 즉, 모집단 평균이 μ0이라는 가설의 유의 수준 alpha를 적용하여 x, standard_dev, size를 사용하여 양측 검정을 만든다고 가정한다. 그러면 μ0이 신뢰 구간에 포함된 경우 해당 가설이 기각되지 않으며, μ0이 신뢰 구간에 포함되지 않은 경우 해당 가설이 기각된다. 그러나 신뢰 기간을 바탕으로 다음 번 배달 시간이 신뢰 구간에 포함될 확률이 1 – alpha라고 추론할 수는 없다. alpha는 유의 수준, standard_dev는 모 표준 편차, size는 표본 크기이다. |
STANDARDIZE(Number; Mean; StDev) | 확률 변수를 정규화된 값으로 변환한다. Number는 표준화(Standardize)되어야 하는 값이다. Mean은 분포의 수를 의미한다. StDev는 분포의 표준 편차이다. 예) =STANDARDIZE(11;10;1)은 1을 반환한다. 평균이 10이고 표준 편차가 1인 정규 분포에서 값 11은 10이 의미하는 것보다 높고, 표준 정규 분포에서 값 1이 높은 것과 같다. |
NORM.S.DIST(z,cumulative) | 표준 정규 분포(z-분포)를 반환한다. 이 분포의 평균은 0이고 표준 편차는 1이다. 표준 정규 곡선 면적 표 대신 이 함수를 사용한다. z는 분포를 구하려는 값이다. cumulative는 cumulative 함수의 형태를 결정하는 논리값으로서, cumulative가 TRUE이면 누적 분포 함수가 반환되고 FALSE이면 확률 질량 함수가 반환된다. |
Z.TEST(array,x,sigma) | z-검정의 단측 검정 p-값을 반환한다. 가설 모집단 평균 x가 주어진 경우 Z.TEST 함수는 표본 평균이 데이터 집합(배열)의 관측 평균, 즉 관측된 표본 평균보다 클 확률을 반환한다. array는 필수 요소이다. x를 검정할 데이터의 배열 또는 범위다. x도 필수 요소이다. 검정할 값이다. sigma는 선택 요소이다. 모 표준 편차로서, 이를 생략하면 표본 표준 편차가 사용된다. |
T.DIST(x,deg_freedom, cumulative) | 단측(왼쪽) 스튜던트 t-분포값을 반환한다. t-분포는 소표본의 데이터를 가설 검정할 때 사용된다. t-분포의 임계값 표 대신 이 함수를 사용한다. x는 분포를 구하려는 숫자 값이다. deg_freedom은 자유도를 나타내는 정수이다. Cumulative는 함수의 형태를 결정하는 논리값으로서, cumulative가 TRUE이면 T.DIST에서는 누적 분포 함수가 반환되고 FALSE이면 확률 밀도 함수가 반환된다. |
T.DIST.2T(x,deg_freedom) | 양측 스튜던트 t-분포값을 반환한다. x는 분포를 구하려는 숫자 값이다. deg_freedom은 자유도를 나타내는 정수이다. |
T.DIST.RT(x,deg_freedom) | 단측(오른쪽) 스튜던트 t-분포값을 반환한다. x는 분포를 구하려는 숫자 값이다. deg_freedom은 자유도를 나타내는 정수이다. |
T.TEST(array1,array2,tails,type) | 스튜던트 t-검정에 근거한 확률을 반환한다. T.TEST 함수를 사용하여 두 개의 표본이 같은 평균값을 갖는 두 개의 같은 모집단에서 추출한 것인지를 판단할 수 있다. array1은 첫 번째 데이터 집합이다. array2는 두 번째 데이터 집합이다. Tails는 분포가 단측인지 또는 양측인지 지정하는 숫자로서 tails = 1이면 T.TEST에서는 단측 분포를, tails = 2이면 양측 분포를 사용한다. type은 실행할 t-검정의 종류이다. 타입 1은 쌍을 이루는 것(paired t-test)을 의미한다. 타입 2는 두 개의 집단이 동일한 분산을 가지고 있는 것을 의미한다.(등분산 가정 두 집단) 타입 3은 두 개의 집단이 서로 다른 분산을 가진 것을 의미한다.(이분산 가정 두 집단) 예) =T.TEST(A2:A51,B2:B51,2,3) |
CONFIDENCE.T(alpha,standard_dev,size) | 스튜던츠 t-분포를 사용하여 모집단 평균의 신뢰 구간을 반환한다. alpha는 유의 수준, standard_dev는 모 표준 편차, size는 표본 크기이다. |
CHISQ.DIST(x,deg_freedom,cumulative) | 카이-제곱 분포를 반환한다. 카이 제곱 분포는 하루 중 TV를 보는 시간을 백분율로 나타내는 것처럼 표본에서 특정 부분이 차지하는 백분율의 분포를 조사할 때 일반적으로 사용된다. x는 분포를 계산하려는 값이다. deg_freedom은 자유도를 나타내는 숫자다. Cumulative는 함수의 형태를 결정하는 논리값으로서, cumulative가 TRUE이면 CHISQ.DIST에서는 누적 분포 함수가 반환되고 FALSE이면 확률 밀도 함수가 반환된다. |
CHISQ.DIST.RT(x,deg_freedom) | 카이 제곱 분포의 단측(오른쪽) 검정 확률을 반환한다. χ2 분포는 χ2 검정과 연관된다. χ2 검정은 관측값과 기대값을 비교하는 데 사용된다. 예를 들어 유전 실험에서 다음 세대의 식물에서 나타날 색에 대한 가설을 세운 다음 관측 결과를 기대값과 비교하여 가설을 검증할 수 있다. x는 분포를 계산하려는 값이다. deg_freedom은 자유도를 나타내는 숫자다. |
CHISQ.TEST(actual_range,expected_range) | 독립 검증 결과를 반환한다. 즉, CHISQ.TEST에서는 해당 통계 및 적정 자유도에 대한 카이 제곱(χ2) 분포값이 반환된다. χ2 검정(카이-제곱 검정)을 사용하면 실험에 의해 가설이 검증되었는지 확인할 수 있다. actual_range는 기대값과 비교하여 검정할 관측값이 포함된 데이터 범위다. expected_range는 행 합계와 열 합계를 곱한 값의 총합계에 대한 비율이 들어 있는 데이터 범위다. |
F.DIST(x,deg_freedom1,deg_freedom2,cumulative) | F-분포값을 반환한다. 이 함수를 사용하면 두 데이터 집합의 분포도가 서로 다른지 확인할 수 있다. 예를 들어 고등학교에 입학하는 남녀 학생의 성적을 조사하여 남녀 학생의 분포도가 서로 다른지를 알아볼 수 있다. x는 함수를 계산할 값이다. deg_freedom1은 분자의 자유도이다. deg_freedom2은 분모의 자유도이다. Cumulative는 함수의 형태를 결정하는 논리값으로서, cumulative가 TRUE이면 F.DIST에서는 누적 분포 함수가 반환되고 FALSE이면 확률 밀도 함수가 반환된다. |
F.DIST.RT(x,deg_freedom1,deg_freedom2) | 두 데이터 집합에 대한 단측(오른쪽) 검정 F 확률 분포값(분포도)을 반환한다. x는 함수를 계산할 값이다. deg_freedom1은 분자의 자유도이다. deg_freedom2은 분모의 자유도이다. |
F.TEST(array1,array2) | array1과 array2의 분산이 크게 다르지 않은 양측 검증 확률인 F-검정의 결과를 반환한다. 이 함수를 사용하여 두 표본이 다른 분산을 갖는지 확인할 수 있다. 예를 들어 공립 학교와 사립 학교의 시험 성적 분포도가 서로 다른지 확인할 수 있다. array1은 첫 번째 배열 또는 데이터 영역이다. array2는 두 번째 배열 또는 데이터 영역이다. |
INTERCEPT(known_y's, known_x's) | 기존 x 값과 y 값을 사용하여 한 개의 선이 y 축과 교차하는 지점을 계산한다. 절편은 known_x's와 known_y's의 값으로 이루어진 가장 적합한 회귀선을 기반으로 한다. 독립 변수가 0일 때 종속 변수의 값을 확인하려면 INTERCEPT 함수를 사용한다. 예를 들면 데이터가 상온이나 그 이상의 온도에서 측정된 경우 INTERCEPT 함수를 사용하여 0°C에서의 금속의 전기 저항을 예측할 수 있다. known_y's는 관측값이나 데이터의 종속 변수 집합이다. known_x's는 관측값이나 데이터의 독립 변수 집합이다. |
SLOPE(known_y's, known_x's) | known_y's와 known_x's 사이의 데이터 요소에 대한 선형 회귀선의 기울기를 반환한다. 기울기는 선의 두 점 사이의 수직 거리를 수평 거리로 나눈 회귀선의 변화율이다. known_y's는 종속 데이터 요소의 셀 배열 또는 범위다. known_x's는 독립 데이터 요소의 집합이다. Example) =SLOPE(A1:A50;B1:B50) |
STEYX(known_y's, known_x's) | 회귀 분석에서 각각의 x에 대하여 예측한 y 값의 표준 오차를 반환한다. 표준 오차는 각각의 x 값에 대한 y 예측값의 오차량을 나타낸다. known_y's는 종속 데이터 요소의 배열이나 범위다. known_x's는 독립 데이터 요소의 배열이나 범위다. |
PERMUT(Count1; Count2) | 주어진 숫자에 대한 순열(permutation)을 구한다. 참고로 순열은 뽑는 순서가 있고, 조합(combination)은 뽑는 순서가 없다. Count1은 대상의 전체 숫자다. Count2는 뽑는 숫자다. E1) =PERMUT(6;3)은 120을 반환한다. E2) =PERMUT(5;2)은 20을 반환한다. 5개의 카드 중 2개의 카드를 뽑는 순서는 20가지의 다른 가능성이 존재한다. 순열 공식은 nPr = n! / (n-r!)이다. 5P2 = 5! / (5-2)! = 5x4x3x2x1 / 3x2x1 = 5x4 = 20이다. |
PERMUTATIONA(Count1; Count2) | 주어진 숫자에 대한 순열을 구하지만 반복을 허용한다. 즉, 중복 순열을 구한다. Count1은 대상의 전체 숫자다. Count2는 뽑는 숫자다. E1) =PERMUTATIONA(6;3)는 216을 반환한다. 6개의 카드 중 3개의 카드를 뽑는데 다음 카드를 뽑기 전에 이전의 카드를 다시 카드 통에 돌려놓으면 216가지의 다른 경우의 수가 존재한다. E2) =PERMUTATIONA(11;2)은 121을 반환한다. 11개의 전체 대상 중 얼마나 자주 2개의 대상이 뽑히나? |
COMBIN(Count1; Count2) | 주어진 숫자에 대한 조합(combination)을 구한다. Count1은 대상의 전체 숫자다. Count2는 뽑는 숫자다. |
COVARIANCE.P(array1,array2) | 두 데이터 집합의 각 데이터 요소 쌍에 대한 편차의 곱의 평균(모집단 공분산)을 반환한다. 공분산을 사용하면 두 데이터 집합 사이의 관계를 확인할 수 있다. 예를 들어 수입이 높을수록 교육 수준이 높은지 여부를 확인할 수 있다. array1은 첫 번째 정수 셀 범위다. array2는 두 번째 정수 셀 범위다. 예) =COVARIANCE.P(A1:A30;B1:B30) |
COVARIANCE.S(array1,array2) | 두 데이터 집합의 각 데이터 요소 쌍에 대한 편차의 곱의 평균(표본 공분산(共分散))을 반환한다. array1은 첫 번째 정수 셀 범위다. array2는 두 번째 정수 셀 범위다. |
CORREL(Data1; Data2) | 두 데이터 세트의 상관 계수(correlation coefficient)를 반환한다. 상관 계수를 사용하면 두 속성 사이의 관계를 확인할 수 있다. 예를 들면 어떤 지역의 평균 기온과 에어콘 사용 사이의 상관 관계를 알아볼 수 있다. Data1 is the first data set. Data2 is the second data set. Example) =CORREL(A1:A50;B1:B50) calculates the correlation coefficient as a measure of the linear correlation of the two data sets. |
PROB(x_range, prob_range, [lower_limit], [upper_limit]) | 영역 내의 값이 두 한계값 사이에 있을 확률을 반환한다. upper_limit가 정의되지 않으면 x_range의 값이 lower_limit와 같을 확률이 반환된다. x_range는 필수 요소이다. 확률과 관련된 숫자 x 값의 범위다. prob_range도 필수 요소이다. x_range의 값과 관련된 확률의 집합이다. lower_limit는 선택 요소이다. 확률을 계산할 범위의 하한값이다. upper_limit도 선택 요소이다. 확률을 계산할 범위의 상한값이다. |
KURT(Number1; Number2; ...Number30) | 데이터 세트의 첨도(kurtosis)를 반환한다. 최소한 4개의 값이 필요하다. Number1,Number2,...Number30 are numeric arguments or ranges representing a random sample of distribution. Example) =KURT(A1;A2;A3;A4;A5;A6) |
SKEW(Number1; Number2; ...Number30) | 표본(sample) 분포의 왜도(skewness, 왜곡도)를 구한다. 왜곡도란 평균에 대한 분포의 비대칭 정도를 나타낸다. 왜곡도가 양수이면 분포의 비대칭 꼬리가 양의 값 쪽으로 치우치며, 왜곡도가 음수이면 음의 값 쪽으로 치우칩다. Example) =SKEW(A1:A50) |
SKEW.P(number 1, [number 2],…) | 모집단을 기준으로 분포의 왜도를 반환한다. 왜곡도란 평균에 대한 분포의 비대칭 정도를 나타낸다. number 1, number 2,…는 모집단 왜곡도를 구하려는 1~254개의 숫자이거나 숫자가 들어 있는 이름, 배열 또는 참조이다. MS Excel에서는 skew.p 함수를 쓰고, LibreOffice Calc에서는 SKEWP 함수를 쓴다. E1)SKEWP(2;3;1;6;8;5) returns 0.2828158928 E2) SKEWP(A1:A6) returns 0.2828158928, when the range A1:A6 contains {2;3;1;6;8;5} E3) SKEWP(Number1;Number2) returns zero always, if Number1 and Number2 results in two numbers. E4) SKEWP(Number1) returns Err:502 (Invalid argument) if Number1 results in one number, because SKEWP cannot be calculated with one value. |
2.2.2. 엑셀이나 Calc에서 통계 데이터분석 도구 사용
엑셀 2016에선 "파일 → 옵션 → 리본 사용자 지정 → 개발 도구" 하면 화면에 개발 도구가 생긴다. 그리고서 "개발 도구 → Excel 추가 기능 → 분석 도구"를 선택한다.(2010 버전에선 "Excel 추가 기능" 대신 "추가 기능") 그러면 "데이터"에 "데이터 분석"이 생긴다. 그리고 "데이터 분석"에서 z-검정, t-검정, F-검정, 분산 분석, 회귀 분석 등을 한다. 변수들의 입력 범위와 출력할 위치를 지정해주면 된다.리브레오피스 6의 Calc는 "데이터 → 통계"에서 z-test, Paired t-test, 카이 제곱 테스트, F-test, 분산 분석 (ANOVA), 회귀 등을 고르면 된다.
변수 1 범위는 a2:a51처럼 적어주면 되고, 변수 2 범위는 b2:b51처럼 적어주면 된다. 결과는 d1이나 h1처럼 적어주면 된다.
엑셀로 통계 분석하는 방법
2.3. 재무 함수
FV(rate(이자율), nper(전체연도), pmt(저축액), pv(현재가치), type(지급시기)[6]) | 이율에 따르는 만기저축액을 계산한다. 모든 결과값을 양수로 표시하려면 -pmt 처리를 해야 하며, 사용 시 연이율/월이율, 월저축액/연저축액 통일을 하는 것을 잊지 말 것. pv 및 type 는 생략 가능하다. |
PV(rate(이자율), nper(전체연도), pmt(저축액), fv(미래가치), type(지급시기)) | 이율에 따르는 할부금액을 계산한다. 모든 결과값을 양수로 표시하려면 -pmt 처리를 해야 하며, 사용 시 연이율/월이율, 월저축액/연저축액 통일을 하는 것을 잊지 말 것. pv 및 type 는 생략 가능하다. |
PMT(rate(이자율), nper(전체연도), pv(현재가치), fv(미래가치), type(지급시기)) | 이율에 따르는 대출원리금을 계산한다. 모든 결과값을 양수로 표시하려면 -pv 처리를 해야 하며, 사용 시 연이율/월이율, 월저축액/연저축액 통일을 하는 것을 잊지 말 것. fv 및 type 는 생략 가능하다. |
2.4. 날짜/시간 함수
DATE(year(연), month(월), day(일)) | 입력된 연, 월, 일의 날짜를 나타낸다. |
DAY(serial_number(인수)) | 인수에서 날짜를 추출해 낸다.[7] |
HOUR(serial_number(인수)) | 인수에서 시간을 추출해 낸다. |
MINUTE((serial_number(인수)) | 인수에서 분을 추출해 낸다. |
MONTH((serial_number(인수)) | 인수에서 월을 추출해 낸다. |
NOW()[A] | 컴퓨터에 설정된 현재 년, 월, 일, 시, 분, 초를 표시한다. |
SECOND((serial_number(인수)) | 인수에서 초를 추출해 낸다. |
TIME(hour(시), minute(분), second(초)) | 입력된 시, 분, 초를 나타낸다. |
TODAY()[A] | 현재 날짜를 표시한다. 다른 함수와 중첩해서 쓸 게 아니라 그저 현재날짜만을 표시해야 한다면 번거롭게 이 함수 쓰지 말고 간단히 Ctrl+;을 이용하면 된다. |
WEEKDAY(serial_number(인수), return_type[10](유형을 결정하는 숫자)) | 일정 날짜의 요일을 숫자로 출력한다. CHOOSE 함수와 함께 결합해서 사용하기도 한다. |
YEAR(serial_number(인수)) | 인수에서 연도를 추출해 낸다. |
Factor 목록[11] | |
* d, m, y | 각각 두 날짜 사이의 일(day), 개월(month), 햇수(year)를 센다. |
2.5. 텍스트 함수[12]
CONCATENATE(텍스트1, 텍스트2, ...) | 여러 셀에 나뉘어진 텍스트를 한번에 묶어준다. 보통 =A1&B1&C1 ... 의 방식으로 & 를 사용하는 방법도 있지만, 이 함수를 사용하면 나중에 대상 텍스트를 수정할 때 편리하다. =CONCATENATE(A1,B1,C1) |
FIND(텍스트, 셀, 숫자) | 셀에 특정 텍스트의 위치를 숫자로 표현한다. 대소문자를 구분하며, 와일드카드를 사용할 수 없다. |
SEARCH(텍스트, 셀, 숫자) | 셀에 특정 텍스트의 위치를 숫자로 표현한다. 대소문자를 구분하지 않으며, 와일드카드를 사용할 수 있다. |
IFERROR(Value(계산), Value_if_error(오류일 시 산출값)) | 주어진 계산이 오류인지 확인하여, 오류 시 산출할 값을 지정한다. 특히 엑셀의 오류 표기들(#DIV/0! 등)을 깔끔하게 정리할 수 있다. 해당 함수가 없었던 2003 버젼까지는 해당 기능을 이용하기 위해서는 IF와 ISERROR 를 조합하여 사용할 수 밖에 없었다. 2003식으로 정리하면 IF(ISERROR(계산)=TRUE(), Value_if_error(오류일 시 산출값), 계산) 순으로 사용해야 했다. |
IFNA 함수는 2013 버전부터 적용되고, N/A오류만 확인/산출 가능하다. | |
ISBLANK(Value(셀)) | 지정한 셀이 비어 있는 셀일 경우 "TRUE" 를, 뭔가가 입력되어 있을 경우 "FALSE" 를 반환한다. 스페이스바 입력도 탐지한다. |
ISERROR(Value(셀)) | 지정한 셀이 오류가 있는 경우 "TRUE" 를, 오류가 없는 경우 "FALSE" 를 반환한다. 오류 표시 대신 산출할 값을 지정하는 IFERROR 와는 다르므로 주의.[13] |
ISERR(Value) | N/A 오류를 제외한 모든 오류에 대해 위 함수와 같은 기능 제공 |
LEFT(text(텍스트), num_chars(왼쪽 n개)) | 주어진 텍스트의 왼쪽에서부터 n개까지의 글자를 추출해 표시한다. 결과값은 문자로 취급된다. 이게 싫다면 VALUE 함수와 함께 사용해야 한다. |
LEN(text(텍스트)) | 문자열의 길이를 숫자로 추출한다. |
LOWER(text(텍스트)) | 모든 대문자를 소문자로 치환한다. |
MID(text(텍스트), start_num(n번째 글자부터), num_chars(x개까지)) | 문자열의 가운데 부분을 추출해 표시한다. n번째 글자부터 x개만큼을 추출한다. 결과값은 문자로 취급된다. 이게 싫다면 VALUE 함수와 함께 사용해야 한다. |
PROPER(text(텍스트)) | 문자열의 각 어절마다 첫째 글자만을 대문자로 변경하고 나머지는 소문자로 변경한다. |
RIGHT(text(텍스트), num_chars(오른쪽 n개)) | 주어진 텍스트의 오른쪽에서부터 n개까지의 글자를 추출해 표시한다. 결과값은 문자로 취급된다. 이게 싫다면 VALUE 함수와 함께 사용해야 한다. |
SUBSTITUTE(text(텍스트), old_text(대상 텍스트), new_text(바꿀 텍스트), instance_num(n번째 텍스트에 적용)) | 쉽게 말해 광역 치환 함수. 대상이 되는 텍스트를 별도로 지정한 새 텍스트로 바꾼다. 한 셀 내에 대상 텍스트가 여러 개가 있는 상황에서는 instance_num 를 활용할 수 있는데, 모두 바꾸려면 생략하고, 숫자를 입력하면 그만큼 왼쪽에서부터 대상 텍스트를 세어서 선택적으로 적용한다.[14] |
TEXT(value(셀), format_text(서식)) | 주어진 셀의 내용을 서식에 맞게 적용한다. |
TRIM(셀) | 해당 셀의 텍스트 양 끝에 있는 공백을 제외한 텍스트를 추출한다.[15] |
UPPER(text(텍스트)) | 모든 소문자를 대문자로 치환한다. |
VALUE(text(텍스트)) | 시간 등의 문자열을 숫자로 치환한 값을 추출한다. |
2.6. 데이터베이스 함수
DAVERAGE(database(전체 DB), field(DB 내 찾을 열번호), criteria(기준)[16]) | 전체 데이터베이스 내에서 기준에 맞는 자료의 평균을 구한다. |
DCOUNT(database(전체 DB), field(DB 내 찾을 열번호), criteria(기준)) | 전체 데이터베이스 내에서 기준에 맞는 숫자 포함 셀들의 개수를 구한다. |
DCOUNTA(database(전체 DB), field(DB 내 찾을 열번호), criteria(기준)) | 전체 데이터베이스 내에서 비어있는 셀은 무시하고 기준에 맞는 셀들의 개수를 구한다. |
DGET(database(전체 DB), field(DB 내 찾을 열번호), criteria(기준)) | 전체 데이터베이스 내에서 기준에 맞는 자료를 단순 추출한다. |
DSUM(database(전체 DB), field(DB 내 찾을 열번호), criteria(기준)) | 전체 데이터베이스 내에서 기준에 맞는 자료를 합산한다. |
2.7. 찾기/참조 함수
AND(논리1, 논리2, …) | 인수로 포함된 모든 논리가 전부 참일 경우 "TRUE" 를 출력하고, 하나라도 거짓이 있을 경우 "FALSE" 를 출력한다. IF 함수와 함께 쓰면 TRUE/FALSE 표시 대신 다양한 작업을 할 수 있다. |
CHOOSE(Index_num(1 이상 254이하의 정수형), 값1, 값2, ...) | 값[Index_num]를 반환한다. 값의 자료형은 제한이 없지만 Index_num의 값은 1~254로 한정되어 있다는 것에 주의. ITQ 엑셀 함수 문제의 출제 빈도가 높다. |
COLUMN(셀) | 해당 셀의 가로열의 번호를 표시하는 함수. COLUMN() 의 경우, 현재 수식이 있는 셀의 열의 번호가 표시된다. 계산식에 ROW 와 COLUMN 함수를 적절히 사용하면, 각 셀의 주소에 따라 서로 다른 범위의 계산을 편리하게 할 수 있다. |
HLOOKUP(찾을 값, 참조할 표, 출력할 행번호, range_lookup[17]) | 수평 방향으로 참조하는 함수. 주어진 표 외에 다른 작은 표가 하나 더 주어진다. 찾을 값을 참조할 표에서 찾아서, 참조할 표로 지정한 범위 내 출력할 자료가 들어있는 행에서 대응하는 것을 골라 출력한다. VLOOKUP 함수와 다른 점은, 참조할 표가 수평 방향으로 작성되어 있을 때 쓴다는 점이다. |
IF(논리검사, 참일시 출력, 거짓일시 출력) | 논리검사에 들어가는 등식/수식이 참/0이 아닌 경우에는 참일시 출력에 지정한 것을, 거짓/0일경우에는 거짓일시 출력에 지정한 것을 출력. 출력에도 함수가 들어갈 수 있으며, 함수가 아닌 문자가 들어갈 경우엔 프로그래밍상의 이유때문에 큰따옴표로 감싸줘야 한다. |
INDEX(배열, 행위치, 열위치) | 어떤 배열 내의 몇 행 몇 열에 해당하는 대상을 찾아서 출력한다. MATCH 함수와 함께 엮어서 쓰기도 한다. |
INDIRECT(텍스트) | 텍스트로 이루어진 수식 혹은 셀의 주소를 실제 값으로 변형시켜 준다. 일반적으로 ADDRESS 함수를 이용하여 텍스트 혹은 수열로 구성된 셀의 주소를 실제 식으로 변환하여 사용할 때 자주 쓰인다. |
LOOKUP(찾을 값, 참조할 표, result_vector(출력값이 포함된 배열)) | 주어진 표 외에 다른 작은 표가 하나 더 주어진다. 참조할 표가 수직방향인 VLOOKUP, 수평방향인 HLOOKUP 함수와의 차이점은, 참조할 표의 행과 열의 형태에 제약을 받지 않는다는 점이다. |
MATCH(찾을 값, 배열, match_type[18]) | 배열 내에서 찾고자 하는 값이 몇 번째에 위치하는지 찾아서 숫자로 출력한다. INDEX 함수와 함께 엮어서 쓰기도 한다. |
OFFSET(참조, 숫자, 숫자, 숫자, 숫자) | 하나의 셀을 기준으로 지정된 숫자의 범위의 셀(혹은 범위) 의 값을 찾는다. 하나의 기준 셀을 지정하여, 각 열과 행의 거리를 지정하여 값 혹은 다른 함수의 범위로 지정할 수 있어, [19] 동일한 패턴의 양식에 반복적으로 다른 범위를 지정하는 셀의 주소를 입력하는 노가다를 줄여줄 수 있다. |
OR(논리1, 논리2, …) | 인수로 포함된 논리 중에 하나라도 참이 있을 경우 "TRUE" 를 출력하고, 전부 거짓일 경우 "FALSE" 를 출력한다. IF 함수와 함께 쓰면 TRUE/FALSE 표시 대신 다양한 작업을 할 수 있다. |
ROW(셀) | 해당 셀의 세로행의 번호를 표시하는 함수. ROW() 의 경우, 현재 수식이 있는 셀의 행의 번호가 표시된다. 계산식에 ROW 와 COLUMN 함수를 적절히 사용하면, 각 셀의 주소에 따라 서로 다른 범위의 계산을 편리하게 할 수 있다. |
VLOOKUP(찾을 값, 참조할 표, 출력할 열번호, range_lookup) | 수직 방향으로 참조하는 함수. 주어진 표 외에 다른 작은 표가 하나 더 주어진다. 찾을 값을 참조할 표에서 찾아서, 참조할 표로 지정한 범위 내 출력할 자료가 들어있는 열에서 대응하는 것을 골라 출력한다. HLOOKUP 함수와 다른 점은, 참조할 표가 수직 방향으로 작성되어 있을 때 쓴다는 점이다. |
XLOOKUP(찾을 값, 참조 범위, 출력 범위, 일치 유형[20] , 검색 방식[21]) | 참조 범위에서 찾을 값을 찾고 이에 대응하는 출력 범위의 값을 반환한다. 일치 유형과 검색 방식을 이용해 출력값을 조정해줄 수 있다. 기존의 HLOOKUP과 VLOOKUP을 대체할 수 있는 기능을 가졌지만, 엑셀 2019와 오피스 365에서만 지원한다. |
3. 사용자정의 함수
사용자가 직접 함수를 만들어서 쓸 수도 있는데 이 경우에는 비주얼베이직을 활용해서 직접 계산식을 입력해야 한다. 비주얼베이직으로 들어가서[22][23] 모듈을 새로 생성해서 원하는 대로 만들면 된다. 함수를 적용할 때는 함수 마법사로 들어가 사용자 정의를 클릭하면 된다.3.1. 간단한 제작방법(IF문)
이용등급과 할인가를 인수로 받아서 할인가를 정하는 fn할인가 함수.이용등급이 "A"이면 10%, "B"이면 5% 할인된 가격을 할인가로 하면 그 외 등급은 할인 없음
#!syntax basic
If 이용등급 = "A" Then
fn할인가 = 금액 * 0.9
ElseIf 이용등급 = "B" Then
fn할인가 = 금액 * 0.95
Else
fn할인가 = 금액
End If
End Function
3.2. 간단한 제작방법(select case문)
이용등급과 할인가를 인수로 받아서 할인가를 정하는 fn할인가 함수.이용등급이 "A"이면 10%, "B"이면 5% 할인된 가격을 할인가로 하면 그 외 등급은 할인 없음
#!syntax basic
Select case 이용등급
Case "A"
fn할인가 = 금액 * 0.9
Case "B"
fn할인가 = 금액 * 0.95
Case else
fn할인가= 금액
End select
End Function
4. 배열 수식
배열 수식은 위의 함수들을 사용하는 새로운 활용법으로, 만일 컴활 같은 것을 준비한다면 알아두면 좋다.[24] 배열 수식은 수식 입력 후에 Ctrl+Shift+Enter 를 통해 중괄호({,})로 묶어 주어야 하며[25], 그렇지 않으면 오류값이 반환된다. 나머지는 일반적인 수식을 만드는 것과 동일하다. 여기서는 가장 기초적이고 단순한 형태의 몇몇 배열 수식만 살펴본다.- 배열 수식으로 개수 구하는 방법
- 조건이 1개일 경우
- =SUM(IF(조건, 1)) : 조건을 만족하면 1로 처리하여 합산한다.
- =SUM((조건)*1) : 조건 불만족시 0, 만족시 1로 처리.
- =COUNT(IF(조건, 1)) : 단, COUNT 함수는 조건 불만족(0) 케이스도 합산한다.[26]
- 조건이 2개일 경우
- =SUM(IF(조건1, IF(조건2, 1)))
- =SUM((조건1)*(조건2))
- =COUNT(IF((조건1)*(조건2), 1))
- 배열 수식으로 합계 구하는 방법
- 조건이 1개일 경우
- =SUM((조건)*구할 범위) : 조건을 만족하는 셀만 추려서 합산한다.
- =SUM(IF(조건, 구할 범위))
- 조건이 2개일 경우
- =SUM((조건1)*(조건2)*구할 범위)
- =SUM(IF((조건1)*(조건2), 구할 범위))
- 배열 수식과 match 함수로 다중 조건을 만족시키는 셀을 찾는 방법
- 조건이 1개일 경우(일반 match, 배열 수식 사용 안함)
- =MATCH(찾을 값, 배열, match_type)
- 조건이 2개 이상일 경우(배열 수식 사용)
- =MATCH(찾을 값1&찾을 값2&찾을 값3,배열1&배열2&배열3,match_type) [27]
4.1. 행렬 연산
배열 수식을 통하여 엑셀에서 행렬연산이 가능하다. 먼저 행렬 연산이 결과를 출력할 셀을 다중 선택한 후, 수식을 입력한 뒤에 배열 수식을 입력할 때 처럼 Ctrl+Shift+Enter키를 통해 수식을 묶어주면 된다. 일부만 선택한 경우 해당 셀에 나올 값만 연산이 된다. 아래 함수들은 사실상 배열 수식으로만 사용이 가능하다.TRANSPOSE(array) | 전치행렬을 계산한다.[28] |
MDETERM(array) | 행렬식을 계산한다. 입력한 행렬이 정사각행렬이 아닌 등 계산 불가능한 연산 시 전체 범위에서 오류가 출력된다. |
MMULT(array1, array2) | 두 행렬을 곱한다. 계산 불가능한 연산 시 전체 범위에서 오류가 출력된다. |
MINVERSE(array) | 역행렬을 구한다. 역행렬의 없는 경우에는 오류가 출력된다. |
5. 둘러보기
[1] NOW 함수를 예로 들면, =NOW()[2] 대표적인 예로 WON 함수는 한국어 엑셀에서는 작동하지만, 영어나 일본어 등 다른 언어 엑셀에서는 작동하지 않으며, YEN 함수는 일본어 엑셀에서 작동하지만 한국어 엑셀에서는 작동하지 않는다.[3] INTeger part of의 준말[4] 대한민국과 일본 한정으로 '가우스 기호'라고 부르지만, 정식 명칭은 최대 정수 함수가 맞다.[5] 예를 들어 '삼성전자' 스마트폰들의 '판매액' 총합을 구하는 경우, SUMIF(제조사 열 데이터,"삼성전자",판매액 열 데이터)와 같은 식으로 입력하면 된다.(이것은 일종의 의사코드이고 실제 작업에서는 당연히 셀을 알맞게 선택해서 입력해야 한다.)[6] 1: 월초지급, 0 또는 생략: 월말에 지급[7] MS 엑셀은 1을 날짜로 표시하면 1900-01-01로 본다. 엑셀에서 날짜/시간 형식을 인수로 받는 함수의 경우 이 형식 데이터를 입력한 기존의 셀을 인수로 선택하면 함수 내에서는 날짜/시간에 해당하는 일련번호(Serial Number)로 인식한다. 따라서 DAY(1900-01-01), MONTH(1900-01-01), HOUR(06:00)과 같은 식으로는 입력할 수 없고 인수로 날짜/시간 형식 데이터 셀을 직접 선택해야만 한다.[A] 인수가 없다.[A] 인수가 없다.[10] 일요일(1)에서 토요일(7)까지의 유형은 1을, 월요일(1)부터 일요일(7)까지의 유형은 2를, 월요일(0)에서 일요일(6)까지의 유형은 3을 입력하면 된다. 주로 쓰는건 2번 유형이다.[11] 다른 셀에서 불러올 경우에는 상관없으나 직접 수식에 입력할 경우에는 따옴표가 필요하다[12] 'IS'로 시작하는 정보 함수는 TRUE(1)/FALSE(0) 논리값을 반환하는 특성상 단독으로 쓰이는 경우는 거의 없고 절대다수가 IF 등 논리 함수와 연계돼서 쓰인다.[13] 보통 이 경우는 IFERROR 함수가 없었던 2003 버전 워크시트에서 사용하기 위해 IF 함수와 중첩하는 경우가 대부분[14] 예를 들어 셀 내용이 wikiwiki, 여기서 "i" 를 "o" 로 바꾸고자 하며, instance_num 값이 3일 경우, 결과값은 wikiwoki 가 된다. 만일 생략할 경우는 wokowoko 가 된다.[15] 셀에서 "NAMU" 와 "NAMU " 의 차이점을 알기가 상당히 어려운 데다가, 다른 시트에서 데이터를 가져오는 경우나 텍스트 파일을 엑셀로 가져오는 경우 종종 숫자나 텍스트 앞뒤로 공백이 붙어서 숫자임에도 텍스트로 표기되는 경우가 많다. 수천개 데이터에서 이런거 한 두개가 어디에 있는지 찾을려면...[16] 별도로 지정해 줘야 한다. 조건부 필터링 기능을 생각해 보면 쉽다.[17] "TRUE"는 유사 일치로, 쉽게 설명하자면 찾을 값이 참조할 표에 없을 때 쓴다. 성적 따라 수우미양가를 구분하듯이, 사전에 정해진 등급을 표에 적용하는 방식. "FALSE"는 정확히 일치로, 찾을 값이 참조할 표에 정확히 전부 다 들어있을 때 쓴다. 각 제품별로 단가표를 적어놓은 경우 등에 쓰인다.[18] "0"은 정렬되지 않은 배열에서 정확히 일치하는 값을 찾는다. 여러 개가 검색되었을 경우 첫째 것을 출력한다. "1"은 오름차순으로 정렬된 배열에서 작거나 같은 값 중 가장 큰 값을 찾는다. "-1"은 내림차순으로 정렬된 배열에서 크거나 같은 값 중 가장 작은 값을 찾는다.[19] 예: SUM(B3:C7) → SUM(OFFSET(A1,2,1,5,2)) : A1 셀에서 아래로 2칸, 오른쪽으로 1칸을 이동한 셀(B3)을 시작점으로 하여, 가로 2칸 세로 5칸의 범위에 있는 숫자의 합을 구함.[20] 0은 정확히 일치하는 값만 반환하며 일치하는 값이 없을 경우 #N/A 반환, -1은 일치하는 값이 없을 때 그보다 적으면서 가장 가까운 값 반환, 1은 일치하는 값이 없을 때 그보다 많으면서 가장 가까운 값 반환, 2는 와일드카드 옵션이다.[21] 1은 오름차순, -1는 내림차순, 2는 데이터가 정렬되었다고 가정한 오름차순, -2는 데이터가 정렬되었다고 가정한 내림차순이다. 즉 ±2의 경우 데이터가 정렬되어 있지 않으면 잘못된 값을 반환할 수 있다.[22] "개발 도구" 탭에 있다. 만일 이 탭이 없다면, 옵션으로 들어가서 개발 도구 탭을 표시하게 하자. 또는 엑셀 시트에서 단축키 Alt + F11를 동시에 누르면 Visual Basic Editor가 실행된다. 엑셀 뿐만이 아닌 파워포인트, MS 액세스, MS 워드 또한 같은 기능을 제공한다.[23] 사용자 정의 함수를 작성 후 저장할 시 기존 Excel 통합 문서 확장자(.xlsx)로 저장할 수 없다는 것에 주의. 저장 시 파일 형식을 Excel 매크로 사용 통합 문서 형식(.xlsm)으로 변경해주어야 작성한 사용자 정의 함수를 저장할 수 있다.[24] 2급에서는 잘 나오지 않으나 1급은 필수다.[25] 반드시 위의 단축키로. 직접 입력하는 경우 에러가 발생한다.[26] 무슨 소리냐면, COUNT함수는 숫자의 개수를 세기 때문에 일반적인 IF함수를 쓸 때처럼 IF(조건, 참일 때 값, 거짓일 때 값)이라고 IF(조건, 1, 0)으로 쓰면 원하는 결과가 안나온다는 얘기다. 때문에 0은 생략해야만 한다.[27] 예를 들어 A1:A5, B1:B5, C1:C5의 범위에서 각각 D1, D2, D3의 값을 갖는 셀의 순서를 찾을때, =MATCH(D1&D2&D3,A1:A5&B1:B5&C1:C5,0)을 배열 수식으로 넣으면 된다. INDEX 함수와 혼합하여 사용할 수도 있다.[28] m × n 행렬을 전치시키면 n × m의 범위를 잡아야 정확한 전치행렬을 연산이 가능하며, 더 적은 범위를 입력했을 경우에는 일부만 반환된다. 더 큰 범위를 설정했을 경우에는 오류를 출력하거나 값이 반복되어 나온다.