# 가상 분석

## Content

SpreadJS 디자이너는 **가상 분석(What-If Analysis)** 기능인 **목표값 찾기(Goal Seek)** 와 **데이터 테이블(Data Table)** 을 지원합니다.
이 기능들은 리본 메뉴의 **데이터(Data)** 탭에서 사용할 수 있습니다.
![image-20260421.9cf460.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260421.9cf460-20260604.3d25a0.png?width=800)

## 목표값 찾기

목표값 찾기는 특정 수식 결과를 얻기 위해 필요한 입력값을 계산합니다.

### 목표값 찾기 대화 상자 열기

1. **데이터 → 가상 분석 → 목표값 찾기**로 이동합니다.
2. **목표값 찾기** 대화 상자가 표시됩니다.

![image-20260326.eb2f6e.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260326.eb2f6e-20260604.40b473.png?width=400)

### 목표값 찾기 구성

대화 상자에서 다음 항목을 지정합니다.

* 수식 셀(Set cell): 결과를 제어하려는 수식 셀
* 목표값(To value): 원하는 결과 값
* 변경할 셀(By changing cell): 조정할 입력 셀
* 최대 반복 횟수(Maximum iterations): 계산 시도 최대 횟수
* 허용 오차(Tolerance): 계산 결과와 목표값 간 허용 가능한 차이

**확인(OK)** 을 클릭하여 실행을 시작합니다.

### 목표값 찾기 실행

목표값 찾기가 시작되면:

* 시스템이 변경할 셀의 값을 반복적으로 업데이트합니다.
* **목표값 찾기 상태(Goal Seek Status)** 창에 진행 상황이 표시됩니다.
* 계산 중 중간 결과를 확인할 수 있습니다.

결과가 지정된 허용 오차 범위 내에 도달하면:

* 결과 대화 상자가 표시됩니다.

이후 다음 중 하나를 선택할 수 있습니다.

* **확인(OK)** – 최종 값을 워크시트에 적용합니다. 이 작업은 실행 취소를 지원합니다.
* **취소(Cancel)** – 과정 중 수행된 모든 변경 사항을 되돌립니다.

![Done-20260421.904558.gif](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/Done-20260421.904558-20260604.0c3945.gif?width=800)

## 데이터 테이블

데이터 테이블은 여러 입력값을 사용하여 수식을 평가하고 해당 결과를 반환합니다.

### 데이터 테이블 대화 상자 열기

1. 워크시트에서 대상 범위를 선택합니다.
2. **데이터 → 가상 분석 → 데이터 테이블**로 이동합니다.
3. **데이터 테이블** 대화 상자가 표시됩니다.

![image-20260326.49fe99.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260326.49fe99-20260604.b0d8a8.png?width=400)

### 데이터 테이블 구성

대화 상자에서 다음 항목을 지정합니다.

* 행 입력 셀(Row input cell)
* 열 입력 셀(Column input cell)

최소 하나의 입력 셀은 반드시 지정해야 합니다.
**확인(OK)** 을 클릭하여 적용합니다.
확인 후:

* 선택한 범위에 `SJS.TABLE` 수식이 삽입됩니다.
* 결과가 자동으로 계산됩니다.

![goalSeek-20260421.2ba2a5.gif](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/goalSeek-20260421.2ba2a5-20260604.ddd118.gif?width=800)

### 데이터 테이블 실행

계산 중에는 상태 표시줄에 데이터 테이블 계산 진행률이 표시됩니다.
계산이 완료될 때까지 완료 비율을 확인할 수 있습니다.
![image-20260421.eaad9e.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260421.eaad9e-20260604.e67a0d.png?width=400)

### 부분 계산 모드

성능 최적화를 위해 디자이너는 데이터 테이블용 **부분 계산(Partial Calculation)** 모드를 지원합니다.
이 기능을 활성화하면:

* 종속 값이 변경되더라도 `SJS.TABLE` 수식이 자동으로 다시 계산되지 않습니다.
* 사용자는 **계산(Calculate)** 버튼을 클릭하여 수동으로 다시 계산해야 합니다.

이 모드는 대규모 데이터 테이블 작업 시 권장됩니다.
![partialCalc-20260421.e59f83.gif](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/partialCalc-20260421.e59f83-20260604.3abeee.gif?width=800)

## 참고 항목

* [가상 분석](/spreadjs/docs/v19/features/what-if-analysis)
* [부분 모드](/spreadjs/docs/v19/features/formulas/calculation-mode#partial-mode)