xellstorm
KO
앱 열기

엑셀 몬테카를로 시뮬레이션, 애드인 있어도 없어도

가이드 · 2026년 10월 업데이트

엑셀 모델에서 몬테카를로 시뮬레이션을 돌리는 방법은 세 가지입니다. RAND() 수식과 데이터 표를 쓰는 방법, 애드인, 엑셀 밖에서 엑셀 파일을 실행하는 도구입니다. 어느 쪽이든 불확실한 입력을 범위에서 뽑아 모델을 수천 번 다시 계산하고, 결과를 확률로 읽습니다. 예산을 넘을 확률, 80% 신뢰 수준에서 넘지 않는 비용, 가장 중요한 입력 같은 답이 나옵니다.

숫자 하나 대신 시뮬레이션하는 이유

스프레드시트는 입력 한 세트에 답 하나를 냅니다. 입력이 추정치이면 그 답이 얼마나 빗나갈 수 있는지 알 수 없고, 답도 대개 낙관적입니다. 최빈 비용을 더하면 비용은 줄어들기보다 초과하기 쉽다는 점이 빠지기 때문입니다. 프로젝트 비용 예제에서 기준 추정치(최빈 비용의 합)는 시뮬레이션 결과의 94.2%에서 실제 비용이 이를 넘습니다. 최선, 기준, 최악 케이스로도 해결되지 않습니다. 답이 세 개 나올 뿐, 각각의 확률은 알려 주지 않습니다.

1. 일반 엑셀, 애드인 없이: RAND() 함수와 데이터 표

엑셀에는 시뮬레이션 명령이 없지만, 작은 모델이라면 함수만으로 충분합니다.

  1. 불확실한 입력마다 무작위 추출로 바꿉니다. RAND()는 0과 1 사이의 균등 난수를 반환하고, 역분포 함수가 이를 원하는 범위의 값으로 바꿔 줍니다(수식은 아래 참고).
  2. 계산을 반복합니다. 한 열에 시행 번호 1부터 5,000까지를 넣고, 그 옆 열에서 첫 번호보다 한 행 위에 출력 셀을 가리키는 참조를 둡니다. 그 행부터 아래로 두 열을 선택하고 데이터 › 가상 분석 › 데이터 표를 선택한 다음, 열 입력 셀에 같은 시트의 빈 셀 아무거나 입력합니다. 행마다 엑셀 파일이 다시 계산되므로 행마다 새로운 난수가 뽑힙니다.
  3. 열을 요약합니다. AVERAGE, PERCENTILE.INC, COUNTIF(시행 횟수로 나눔)로 평균, P80, 목표 초과 확률을 구하고, 히스토그램 차트로 분포 모양을 봅니다.
엑셀 수식으로 난수 추출
입력수식
정규 분포(평균, 표준편차)=NORM.INV(RAND(), mean, sd)
PERT(최소, 최빈, 최대)=BETA.INV(RAND(), 1+4*(ml-min)/(max-min), 1+4*(max-ml)/(max-min), min, max)
삼각 분포(최소, 최빈, 최대), 추출한 난수는 U에 있음=IF(U<(ml-min)/(max-min), min+SQRT(U*(max-min)*(ml-min)), max-SQRT((1-U)*(max-min)*(max-ml)))
리스크 이벤트(확률 p, 비용 c)=IF(RAND()<p, c, 0)

이 방법도 통하며 배우기에 좋습니다. 한계는 실제 모델에서 드러납니다.

2. 엑셀 애드인

@RISK, Crystal Ball, Analytic Solver, ModelRisk 같은 애드인은 엑셀에 분포 함수(예: 셀에 입력하는 PERT 함수)를 더하고, 시행을 대신 실행하며, 차트, 민감도 분석, 보고서를 만듭니다. 엑셀 안에서 실행되므로 사용자마다 엑셀과 애드인을 설치해야 하는데, 많은 회사에서는 IT 부서에 요청해야 합니다.

3. 엑셀 밖에서 엑셀 파일을 실행하는 도구

세 번째는 자체 계산 엔진으로 .xlsx 파일을 읽어 시행을 직접 실행하는 도구입니다. xellstorm이 브라우저에서 이 방식으로 동작합니다.

세 가지 방법 비교

일반 엑셀엑셀 애드인xellstorm
설치불필요엑셀에 애드인 설치불필요: 브라우저에서 실행
분포수식으로 직접 구성다수, 함수 형태48개, 직접 만든 표 포함
시행 반복데이터 표, 엑셀 파일 전체를 다시 계산내장내장, 대부분의 엑셀 파일에서 바뀌는 부분만 다시 계산
다음에도 같은 숫자아니요, 값으로 붙여넣지 않으면시드를 고정하면시드를 쓰면 CPU 코어 수와 관계없이
상관관계, 민감도, 보고서직접 만든 수식과 차트내장내장

결과 읽는 법

평균
시뮬레이션 결과 전체의 평균입니다. 입력이 한쪽으로 치우쳐 있으면 최빈 입력으로 계산한 결과와 다릅니다.
백분위수(P10, P50, P80, P90)
결과의 10%, 50%, 80%, 90%가 그 값 이하에 머무르는 값입니다. P50은 중앙값이고, P80과 P90은 흔히 쓰는 예산 수준입니다(P 수준 더 알아보기).
목표 조건의 확률
총비용이 예산을 초과하는 것처럼 어떤 조건을 충족하는 결과의 비율입니다.
S커브
결과값에 따른 누적 확률을 그린 곡선입니다. 어떤 백분위수든, 어떤 값 이하로 끝날 확률이든 읽을 수 있습니다.
토네이도 차트
다른 입력은 중앙값에 둔 채 입력 하나를 낮은 백분위수에서 높은 백분위수로 움직일 때 결과가 얼마나 움직이는지 보여 줍니다. 막대가 가장 넓은 입력이 가장 중요한 입력입니다(토네이도 차트).
CVaR(최악 5% 평균)
최악 5% 결과의 평균입니다. 나쁜 경우가 얼마나 자주 일어나는지뿐 아니라 얼마나 나쁜지를 보여 줍니다(최악의 경우로 준비금 산정하기).

시행은 몇 회가 필요할까요?

보고하는 숫자가 더 이상 움직이지 않을 만큼이면 됩니다. 시뮬레이션 평균의 잡음은 시행 횟수의 제곱근에 따라 줄어듭니다. 시행 횟수를 4배로 늘리면 절반이 됩니다. 대개 수천 회로 시작하며, P95처럼 분포 끝에 가까운 백분위수는 평균보다 시행이 더 필요합니다. xellstorm은 평균과 백분위수가 정한 허용 오차 안에서 안정될 때까지 실행할 수 있습니다.

자주 묻는 질문

몬테카를로 시뮬레이션은 시나리오 분석과 같은가요?

아닙니다. 시나리오 분석은 최선, 기준, 최악처럼 고른 몇 가지 경우만 계산하며 각각의 확률은 알려 주지 않습니다. 시뮬레이션은 범위에서 수천 가지 조합을 뽑아 각 결과의 확률을 알려 줍니다.

추정에는 어떤 분포를 써야 하나요?

최소, 최빈, 최대로 주어진 전문가 추정에는 PERT나 삼각 분포를 씁니다. 0 아래로 내려갈 수 없고 오른쪽 꼬리가 긴 양에는 로그정규 분포를 씁니다. 발생하거나 발생하지 않는 이벤트에는 확률과 발생 시 비용을 씁니다. 데이터가 있으면 데이터에 분포를 적합합니다.

엑셀 파일을 고쳐야 하나요?

xellstorm에서는 아닙니다. 분포는 엑셀 파일 안이 아니라 옆에 보관되고, Min / Likely / Max 열처럼 이미 있는 셀에서 숫자를 읽어 올 수 있으며, 수식은 작성한 그대로 유지됩니다. 일반 엑셀이나 애드인에서는 범위가 수식이나 애드인 고유의 정의로 엑셀 파일 안에 저장됩니다.

엑셀에서 PERT 분포는 어떻게 만드나요?

엑셀에는 PERT 함수가 없지만, PERT 분포는 최소에서 최대까지로 조정한 베타 분포이므로 BETA.INV로 추출할 수 있습니다. =BETA.INV(RAND(), 1+4*(ml-min)/(max-min), 1+4*(max-ml)/(max-min), min, max)에서 최소(min), 최빈(ml), 최대(max)는 셀 참조로 바꿉니다. 평균은 (최소 + 4 × 최빈 + 최대) / 6입니다. 엑셀의 PERT 분포에서 삼각 분포와 비교합니다.

애드인 없이 엑셀에서 몬테카를로 시뮬레이션을 실행할 수 있나요?

네. =NORM.INV(RAND(), mean, sd) 같은 수식으로 불확실한 입력을 각각 추출하고, 데이터 표로 모델을 반복한 뒤, AVERAGE, PERCENTILE.INC, COUNTIF로 결과를 요약합니다. 또는 엑셀 파일을 xellstorm에서 열면 애드인도 엑셀도 없이 브라우저에서 시행을 실행합니다.

관련 글

xellstorm은 엑셀 모델을 브라우저에서 몬테카를로 시뮬레이션하는 도구입니다. 애드인은 필요 없고, 엑셀 파일은 내 컴퓨터 밖으로 나가지 않습니다.