# 수식 계산

수식은 =로 시작하는 문자열을 계산해 셀에 결과를 표시합니다. 예를 들어 =SUM(A1:A3)은 원본 열 정의의 첫 번째 열과 원본 데이터의 첫 세 행을 참조합니다.

Canonical: https://grid.syidax.com/ko/docs/features/formulas/

<a id="understand"></a>

## 동작 원리와 선택 기준

A1 좌표는 정렬 후 화면 순서가 아닙니다. 사용자가 표를 정렬하거나 열을 이동하더라도 원본 데이터 순서와 columnDefs 순서를 기준으로 수식을 해석한다는 점을 구분하세요.

이 기능을 제품에서 사용하려면 Pro 패키지와 유효한 라이선스가 필요합니다. 설정 이름이 같더라도 Community에서 Pro 기능이 활성화되는 것은 아닙니다.

코드의 grid는 설치와 연결 장에서 준비한 Grid 요소입니다. 예제마다 필요한 데이터·설정을 확인하고, 코드에서 소개하는 앱 함수와 서버 주소는 프로젝트에 맞게 구현하세요.

- [설치와 연결 · 공통 예제 데이터](https://grid.syidax.com/ko/docs/guides/getting-started.md)

<a id="example-1"></a>

## 예제 1. 단가와 수량으로 금액 계산

수식 위치를 이해하기 쉬운 세 개의 열로 시작합니다.

```javascript
grid.columnDefs = [
  { field: 'quantity', headerName: '수량', editable: true, editor: 'number' },
  { field: 'price', headerName: '단가', editable: true, editor: 'number' },
  { field: 'amount', headerName: '금액' },
];
grid.rowData = [{ id: 'a', quantity: 3, price: 100, amount: '=A1*B1' }];
grid.formulas = true;
```

결과 확인: 금액에 300이 보입니다. 수량을 수정하면 의존하는 금액이 다시 계산됩니다.

<a id="example-2"></a>

## 예제 2. 결과와 수식 원문 비교

계산이 예상과 다를 때 수식 원문과 편집 바를 표시합니다.

```javascript
grid.showFormulas = true;
grid.formulaBar = true;
```

결과 확인: 수식 셀에 =A1*B1이 보입니다. 검토가 끝나면 showFormulas를 false로 돌려 결과를 표시합니다.

<a id="example-3"></a>

## 예제 3. 여러 시트와 동적 배열 검토

여러 Grid를 워크북으로 연결한 경우 getWorkbookPropagationState()와 getWorkbookSnapshotReport()로 연결 및 전파 상태를 확인합니다. 동적 배열은 applySpillFormula()의 전용 입력 계약과 충돌 결과를 확인한 뒤 사용합니다.

결과 확인: 배열 결과가 차지할 영역에 기존 값이 있으면 전체 결과를 억지로 덮어쓰지 않습니다. 거절·충돌·그려지지 않은 셀 보고서를 구분해 사용자에게 안내합니다.

<a id="pitfalls"></a>

## 조합할 때와 문제를 해결할 때

수식 문자열과 계산 결과는 별개입니다. 저장·복사·파일 출력 시 어느 쪽이 필요한지 먼저 정하고 결과를 확인하세요.

모든 Excel 함수가 지원된다고 가정하지 마세요. 함수명과 오류 결과를 실제 사용하는 수식으로 확인하고 순환 참조를 피합니다.

<a id="related-api"></a>

## 이 기능에 사용하는 API

- [formulas](https://grid.syidax.com/ko/docs/options/formulas.md) — =로 시작하는 셀 문자열을 수식으로 계산합니다. A1 참조는 화면 정렬 순서가 아닌 원본 열·행 순서를 기준으로 합니다.
- [showFormulas](https://grid.syidax.com/ko/docs/options/showFormulas.md) — 수식 셀에 계산 결과 대신 수식 원문을 보여 줍니다. formulas를 켠 표에서 검토 용도로 사용합니다.
- [formulaBar](https://grid.syidax.com/ko/docs/options/formulaBar.md) — 활성 셀의 원본 값이나 수식을 확인하고 편집하는 수식 바를 표시합니다. Enter로 확정하고 Escape로 취소합니다.
- [workbookId](https://grid.syidax.com/ko/docs/options/workbookId.md) — 여러 Grid 시트를 같은 워크북에 연결할 식별자입니다. 시트 간 참조를 사용할 때 sheetName과 함께 설정합니다.
- [sheetName](https://grid.syidax.com/ko/docs/options/sheetName.md) — 워크북 안에서 이 Grid 시트를 구분할 이름입니다. 다른 시트의 수식이 참조하므로 이름 변경 영향을 확인하세요.
- [formula](https://grid.syidax.com/ko/docs/columns/formula.md) — 이 열에 적용할 수식 문자열입니다. 수식 기능과 원본 좌표 규칙을 함께 확인합니다.
- [getWorkbookBinding](https://grid.syidax.com/ko/docs/methods/getWorkbookBinding.md) — 현재 워크북과 시트의 연결 정보를 읽습니다. 연결되지 않았으면 null입니다.
- [reconnectWorkbook](https://grid.syidax.com/ko/docs/methods/reconnectWorkbook.md) — 현재 워크북 설정으로 연결을 다시 구성하고 결과를 반환합니다.
- [disconnectWorkbook](https://grid.syidax.com/ko/docs/methods/disconnectWorkbook.md) — 워크북 연결을 해제합니다. 다른 시트와 수식 값을 전파하는 흐름에 미치는 영향을 확인하세요.
- [getWorkbookPropagationState](https://grid.syidax.com/ko/docs/methods/getWorkbookPropagationState.md) — 시트 간 수식 전파의 연결·등록·거절 상태와 마지막 발행 정보를 읽습니다.
- [flushWorkbookPropagation](https://grid.syidax.com/ko/docs/methods/flushWorkbookPropagation.md) — 대기 중인 워크북 값 전파를 처리하고 결과를 반환합니다.
- [getWorkbookSnapshotReport](https://grid.syidax.com/ko/docs/methods/getWorkbookSnapshotReport.md) — 마지막으로 발행된 워크북 셀과 해시·세대 정보를 읽습니다. 전체 Grid 데이터가 모두 발행되었다고 가정하지 마세요.
- [getWorkbookIntegrityReport](https://grid.syidax.com/ko/docs/methods/getWorkbookIntegrityReport.md) — 워크북 연결과 값 전파의 일관성 검사 결과를 읽습니다.
- [applySpillFormula](https://grid.syidax.com/ko/docs/methods/applySpillFormula.md) — 동적 배열 수식을 충돌 정책에 따라 원자적으로 적용합니다. 충돌·거절·화면에 그려지지 않은 영역을 보고서에서 확인합니다.
- [clearSpillFormula](https://grid.syidax.com/ko/docs/methods/clearSpillFormula.md) — 동적 배열 수식의 기준 셀을 지우고 차지하던 범위를 정리합니다.
- [undoSpillTransaction](https://grid.syidax.com/ko/docs/methods/undoSpillTransaction.md) — 동적 배열 수식 트랜잭션을 되돌리고 처리 결과를 반환합니다.
- [getSpillReport](https://grid.syidax.com/ko/docs/methods/getSpillReport.md) — 현재 동적 배열 수식과 차지한 범위의 상태를 확인합니다.
- [formulaEvaluated](https://grid.syidax.com/ko/docs/events/formulaEvaluated.md) — 수식 계산 결과가 나왔을 때 발생합니다. 원문 수식과 계산 결과를 구분해 읽습니다.
- [formulaError](https://grid.syidax.com/ko/docs/events/formulaError.md) — 수식을 계산하지 못했을 때 발생합니다. 대상과 오류 정보를 사용자 검토 화면에 연결합니다.
- [workbookBindingChanged](https://grid.syidax.com/ko/docs/events/workbookBindingChanged.md) — Grid의 워크북·시트 연결이 바뀌었을 때 발생합니다.
- [workbookBindingError](https://grid.syidax.com/ko/docs/events/workbookBindingError.md) — 워크북 연결을 구성하지 못했을 때 발생합니다. 식별자와 연결 오류 정보를 확인합니다.
- [workbookValuesPropagated](https://grid.syidax.com/ko/docs/events/workbookValuesPropagated.md) — 시트 사이에 값 전파가 처리되었을 때 발생합니다. 전파 결과와 세대 정보를 확인합니다.

<a id="next"></a>

## 함께 읽기

- [행·열·ID의 관계](https://grid.syidax.com/ko/docs/guides/concepts.md)
- [결과와 이벤트 연결](https://grid.syidax.com/ko/docs/guides/data-event-access.md)
- [Features에서 살펴보기](https://grid.syidax.com/grid/formulas) — 직접 체험 가능한 범위는 해당 가이드에 안내되어 있습니다.
