본문으로 건너뛰기

수식 오류 — 읽는 셀만 보고합니다

문서 목록으로

상태:

#N/A·#REF!를 든 셀을 만났을 때 무엇을 보고하는가입니다. 정책(OnFormulaError)은 그대로이고, 어느 셀에 적용되는지가 이 문서가 정하는 것입니다.


1. 문제 — 워크북을 읽는 단계는 답할 수 없습니다

수식 오류는 셀을 읽는 자리에서 발견되고, 그 자리는 그 셀을 누가 읽을지 모릅니다.

이름 붙은 사각형 안에는 레이아웃이 필드로 만드는 컬럼과 시트 작성자가 그 옆에 둔 것이 함께 있습니다 — 조회용 수식, 작업용 컬럼, 이름 없는 컬럼의 검증 수식입니다. 어느 쪽인지는 레이아웃만 알고, 레이아웃은 아직 돌지 않았습니다.

실측입니다. 한 프로젝트의 전량 변환에서 10,263개가 보고되었고, 그중 컬럼 이름이 있는 자리는 0개였습니다. 전부 이름 없는 컬럼의 작업 수식이고, 어떤 산출물에도 실리지 않습니다.

무엇이전
사각형 밖의 셀보고하지 않습니다 — 이미 그랬습니다
사각형 안, 이름 없는 컬럼보고했습니다 — 10,263건
사각형 안, 필드가 된 컬럼보고합니다

가운데 줄이 이 문서가 없애는 것입니다. 그리고 그것이 없어지기 전에는 error 기본값을 쓸 수 없습니다 — 작업 컬럼 하나 때문에 워크북 전체가 거부되므로, 그런 시트를 가진 프로젝트는 empty로 내려야 하고 그러면 진짜 데이터의 수식 오류까지 함께 조용해집니다.

2. 규칙 — 기록은 읽을 때, 보고는 값이 된 뒤

단계하는 일
워크북 읽기기록만 합니다. 값은 빈 값이 되고, 셀이 FormulaError를 듭니다
모델이 선 뒤모델이 든 값을 훑어 정책을 적용합니다

그래서 보고되는 것이 정확히 데이터가 된 셀입니다. 레이아웃마다 다른 규칙을 코어가 알 필요가 없고, 임포터에 레이아웃을 부르는 자리도 생기지 않습니다.

정책무엇을 하나
error기본값. 그 셀들을 검증 보고로 냅니다 — 하나가 아니라 전부입니다
empty빈 값으로 읽고, 컬럼당 한 번 경고합니다 (건수와 첫 셀)

error가 그 자리에서 던지지 않는 것이 바뀐 점입니다. 수식 오류 20개를 고치는 일이 20번의 실행이 아니라 한 번이 됩니다 — 검증이 이미 그렇게 하고 있고, 같은 이유입니다.

empty가 셀마다 경고하지 않는 것도 바뀐 점입니다. 자르는 배열의 한 컬럼이 수천 개를 들 수 있고, 같은 말 수천 줄은 끝까지 읽히지 않습니다.

3. 담지 않는 것

정책 자체는 그대로입니다. error·empty 둘이고 소스 엔트리가 정합니다.

셀이 든 값을 바꾸지 않습니다. 수식 오류 셀은 이전에도 빈 값이었고 지금도 빈 값입니다. 그 빈 값이 필수 컬럼에 들어가면 그것은 필수 검사가 말할 일이고, 이 문서의 일이 아닙니다.

어느 컬럼이 필드인지 코어가 판정하지 않습니다. 코어가 보는 것은 「모델이 이 셀을 값으로 들고 있는가」이고, 그 답은 레이아웃이 이미 만들어 놓은 것입니다.

4. 게이트

게이트확인하는 것
이름 없는 컬럼사각형 안이어도 보고되지 않는지
필드가 된 컬럼error에서 보고되는지, empty에서 경고되는지
error가 모으는지같은 시트의 여러 개가 한 번에 나오는지
empty가 접는지한 컬럼의 수천 개가 한 줄이 되는지 — 건수와 첫 셀
사각형 밖여전히 조용한지