Google 스프레드 시트 공식에 대한 완전한 참조 문서?


21

프로그래머로서 Google 스프레드 시트를 사용하려고 할 때 다소 좌절감을 느낍니다. 공식에 사용할 수있는 구문에 대한 명확한 설명이없는 것 같습니다. 예를 들어 3 행 F3:FF열을 아래쪽으로 참조하는 데 사용할 수 있다는 것을 읽었 지만 Google 참조 문서에서 이것을 언급하는 곳을 찾을 수 없으며 항상 작동하지 않는 것 같습니다. 아마 잘못하고있을 것이지만 이것이 바로이 질문의 핵심입니다.

규칙을 추측하기 위해 다섯 가지 다른 자습서를 탐색하고 싶지 않습니다! 어딘가에 사용할 수있는 문법과 의미에 대한 간결한 설명이 있습니까? 그렇지 않다면 누군가 여기에 요약 할 수 있습니다.


docs.google.com/support/bin/… 이것이 전혀 도움이 될지 여부를 알지 못합니다 (이것이 jsut의 의견입니다 :))
Matt

1
고마워, 그것은 그림의 유용한 부분이지만, 왜 모든 것을 문서화 할 수 없습니까?!
rog

문제 없습니다. 왜 그런지 알지 못하지만 execl과 매우 유사하며 구문 변경이 거의 없습니다. 붙어 있다면 당신은 항상 여기에 요청할 수 있습니다 :)
Matt

답변:


11

이것은 여기 에서 발췌 된 일부 텍스트 입니다. 여기에 짚맨으로 게시했습니다. 이것이 Google 스프레드 시트의 수식과 어떻게 다른지 아는 사람은 의견을 제시 할 수 있습니다.

방식

수식을 사용하면 테이블 셀 내에서 계산을 수행 할 수 있습니다. 모든 공식은 공식 내에서 사용되는 구문과 의미를 지정하는 네임 스페이스 접두사로 시작할 수 있습니다. 접두사가 없으면 아래에 설명 된 기본 수식 구문과 의미가 사용됩니다. 뒤에 등호와 수식 자체가옵니다. 구현은 여러 수식 구문을 허용 할 수 있으며 기본 수식 구문에 대한 다양한 확장을 허용 할 수 있습니다. 그러나 공식을 허용하는 모든 구현은 여기에 설명 된대로 기본 공식 구문과 의미를 승인해야합니다. 그들은 또한 확장을 받아 들일 수도 있습니다.

엄격한 스키마를 구현하는 문서는 수식 네임 스페이스 접두사를 사용할 수 없으며 (다른 수신 시스템이이를 처리 할 수 ​​있다는 보장이 없기 때문에) 아래에 설명 된 의미 및 구문에 대한 확장명을 사용할 수 없습니다. 구문에서 초기 등호 뒤에 수식은 표현식이어야합니다. 식은 숫자, 상수 문자열, 명명 된 범위, 이진 연산자로 연결된 식 쌍, 단항 연산자로 시작된 식, 논리 연산자, 함수 호출, 셀 주소 또는 다음으로 둘러싸인 식일 수 있습니다. 괄호. 함수 호출과 논리 연산자에는 세미콜론으로 구분 된 매개 변수가 0 개 이상있을 수 있으며 각 매개 변수는 식이어야합니다. 이들 각각의 구문은 다음과 같습니다.

  • 번호. 숫자는 setlocale (LC_NUMERIC, "C") 또는 이와 동등한 것을 사용하여 "C"로케일 ( "."소수 구분 기호를 사용하고 천 단위 구분 기호는 사용하지 않음)을 사용하여이 형식으로 작성되고 읽 힙니다. 숫자는 %로 끝날 수 있으며이 숫자를 100으로 나눕니다. "%"는 다른 연산자의 의미를 변경하지 않으므로 2 + 10 %는 2.1 (2.2 아님)입니다. 아래에 설명 된대로 선행 및 + 기호는 단항 연산자로 허용됩니다. 작성자는 패턴과 일치하는 숫자를 써야합니다 (숫자로 시작해야 함). [0-9] + (. [0-9] +)? ([eE] [+-]? [0-9] + )? %? 독자는이 숫자를 읽을 수 있어야하며 선행 "."으로 시작하는 숫자를 받아 들여야합니다. 따라서 ((..0-]] ((0-)) 형식으로 숫자를 읽을 수 있어야합니다. 9] + (. [0-9] +)? ([eE] [+-]? [0-9] +)?)) %? 일정한 문자열. 상수 문자열은 큰 따옴표로 묶습니다. 큰 따옴표를 포함 큰 따옴표 문자는 두 번 사용됩니다. 문자열은 UTF-8 형식으로 저장됩니다. 모든 내용은 XML로 저장되므로 수식의 모든 큰 따옴표는 실제로 XML에서 "로 저장됩니다. 상수 문자열은 다음 패턴과 일치합니다. \"([^ "] | \"\ ") * \"

  • 명명 된 범위 / 필드. 명명 된 범위 / 필드는 분리 된 정의 된 값 또는 값 세트 (스프레드 시트에서 일반적으로 셀 주소 또는 주소 세트를 나타냄)를 나타냅니다. 이름은 대소 문자를 구분하지 않으므로 "a"와 "A"는 동일한 범위를 나타냅니다. 구현은 다음 패턴과 일치하는 이름이 지정된 범위를 최소한 수락해야합니다. [A-Za-z] [A-Za-z0-9 _] *

  • 운영자. 일반적인 접두사 및 접두사 연산자가 허용됩니다. 이들은 다음과 같은 연관성과 우선 순위를 갖습니다 (최저 우선 순위에서 최고 우선 순위까지).

연관성 연산자 설명
왼쪽 <, =,>, <=,> =, <>보다 작음, 같음,보다 큼,
                                     작거나 같거나 크거나 같음
                                     같지 않다.
왼쪽 +,-, & 더하기, 빼기, 문자열 연결. 참고
                                     단항 (접두사) +와 –의 우선 순위가 다릅니다.
왼쪽 *, / 곱하기, 나누기. 나눗셈이 잘리지 않으므로
                                     1/2는 0.5와 같습니다.
오른쪽 ^ 검정력 (2 ^ 3은 8). 독자는“**”도 허용해야합니다.
none +,-접두사 단항 연산자 (예 : -5 또는-[. A1]).
                                     이것 들과는 우선 순위가 다릅니다.
                                     더하기와 빼기.

괄호를 사용하여 우선 순위를 재정의 할 수 있으므로 "= 2 + 3 * 4"는 14를 계산하고 "= (2 + 3) * 4"는 20을 계산합니다. +,-, *, /, ^는 모든 문자열 또는 이진 값을 변환합니다. 그들은 계산하기 전에 숫자로 사용합니다. & (문자열 연결)는 값을 연결하기 전에 모든 값을 문자열로 변환합니다. 논리 연산자는 함수 호출과 동일한 구문을 갖습니다. 이름은 대소 문자를 구분하지 않으며 매개 변수는 세미콜론으로 구분되며 이름 뒤에 괄호가 와야합니다. 논리 연산자는 다음과 같습니다.


연산자 매개 변수 수 설명
TRUE () 0 이것은 부울 상수이지만 구문은 함수처럼 보입니다.
FALSE () 0 이것은 부울 상수입니다
NOT (expression) 1 expression이 TRUE ()이면 FALSE ()를 반환하고, 그렇지 않으면 TRUE ()를 반환
AND (e1; e2 [; e] *) 2 이상 모든 표현식이 TRUE ()가 TRUE ()를 리턴하면 그렇지 않으면 FALSE ()를 리턴합니다.
OR (e1; e2 [; e] *) 2 이상 모든 표현식이 FALSE ()가 FALSE ()를 리턴하면 그렇지 않으면 TRUE ()를 리턴합니다.
IF (조건; true_exp; false_exp)
                   3 조건을 평가합니다. 참이면 true_exp를 반환하고, 그렇지 않으면 false_exp를 반환

AND (), OR () 및 IF ()의 구현은 단락되어야합니다. 즉, 왼쪽에서 오른쪽으로 차례로 평가하고 결과를 계산하기 위해 평가해야하는 표현식 만 평가해야합니다. 구현은 더 많은 평가를 선택할 수 있지만 표현식에 부작용이없는 경우에만 가능합니다. AND ()와 OR ()의 구현은 임의의 수의 매개 변수를 수용해야하지만, 매번 사용시 최소한 30 개를 수용해야합니다. NOT (), AND () 및 OR () 연산 및 IF ()의 조건은 부울 값을위한 것입니다. 다른 유형의 표현식이 사용되는 경우 구현시 0을 false로 간주하고 다른 숫자 값을 true로 간주하고 길이가 0 인 문자열을 false로 간주하고 다른 문자열 값을 true로 간주해서는 안됩니다 (SHOULD NOT). 식에 대해 오류 값이 계산되면 첫 번째 오류는 논리 연산의 결과입니다.


함수 호출.함수 호출에는 패턴 [A-za-z] [A-Za-z0-9 _] *와 일치하는 함수 이름이 있고 그 뒤에 여는 괄호, 0 개 이상의 매개 변수 및 닫는 괄호가 있습니다. 매개 변수는 세미콜론 (쉼표가 아님)으로 구분되지만 독자는 선택적으로 쉼표를 구분 기호로 사용하여 함수 호출을 수락 할 수도 있습니다. 함수 이름은 대소 문자를 구분하지 않으므로 "sum"과 "SUM"은 동일한 기능입니다. 매개 변수가있는 경우 각각 표현식이 있어야하며 비어있을 수 없으므로 X (;)는 유효한 함수 호출이 아니며 RAND ()는 완벽하게 유효한 것입니다. 매개 변수가 선택적인 경우 생략 될 수도 있지만, 생략 할 경우 분리 자도 생략해야합니다 (기능 사양은 선택적인 매개 변수와 생략하는 것이 무엇을 의미하는지 명시해야 함). 일반적인 구현에는 많은 내장 함수가 있으며 대부분의 구현은 사용자 정의 함수를 생성하는 하나 이상의 방법을 지원합니다. 일반적인 기능은 다음과 같습니다.

  • SUM ( list )-list 범위의 모든 숫자를 요약 합니다 .
  • COUNT ( 목록 ) - 카운트 범위 (들)의 숫자의 수의 목록
  • AVERAGE ( list )-평균을 계산합니다. 평균은 SUM ( list ) / COUNT ( list )와 같습니다.
  • MIN ( 목록 ) - 최소 숫자 값 목록
  • MAX ( 목록 ) - 최대 값 목록
  • ROUND ( N , 카운트 ) - 둥근 N은 하기 카운트 (경우에 숫자가 카운트 생략 카운트 = 0)
  • INT ( n ) – n을 가장 가까운 정수로 내림합니다.
  • ISEVEN ( n ) – n 이 짝수 이면 TRUE ()를 반환하고, 그렇지 않으면 FALSE ()를 반환합니다.
  • 대체 ( 텍스트 , 검색 텍스트 ] 를 newText ; 발생 ) - 대체재 를 newText 위한 검색 텍스트텍스트 , 발생 횟수 (경우 발생을 생략하고, 항상).

숫자가 포함 된 셀의 주소 . 주소는 상대적이거나 절대적 일 수 있습니다. 상대 주소는 열 문자와 행 번호로 구성됩니다. 행 문자 나 열 번호 앞에 a를 붙이면 $행이나 열이 절대적입니다.

문자열 상수의 내용을 제외하고 셀 범위 주소 목록의 여러 셀 범위 주소를 구분하는 기본 수식 구문에서는 공백 (공백, 탭, 줄 바꿈 및 캐리지 리턴)이 무시됩니다.

구현의 사용자 인터페이스는 공식을이 데이터 형식으로 교환하는 방식과 다르게 승인하고 표시하도록 선택할 수 있습니다. 예를 들어, 현재 로케일의 형식을 사용하여 숫자를 승인하고 표시 할 수 있으며, 항상 숫자 형식에 특정 로케일을 사용하고, 매개 변수 구분 기호에 세미콜론 대신 쉼표를 사용할 수 있으며, 셀 주소를 허용하지 않고 표시 할 수 있습니다. 대괄호 사용. 그러나 구현 사용자 인터페이스는 가능한 경우 기본 형식을 입력으로 받아 들여야한다. 예를 들어, 구현은 "C"로케일 요구 사항 (및 현재 로케일)을 만족하는 숫자를 받아 들여야하고, 괄호로 묶은 셀 주소를 받아 들여야한다. 또한 구현 사용자 인터페이스는 대화를 통해 실수를 수정해야합니다. 예를 들어

다음은 간단한 공식의 예입니다.

=sum(A1:A5)

이 수식은“.A1 : .A5”범위의 모든 셀 값의 합계를 계산합니다. 기능은 "sum"입니다. 매개 변수는 시작 부분에 "("시작과 ")"로 표시됩니다. 함수에 둘 이상의 매개 변수가 포함 된 경우 매개 변수는 ";"으로 구분됩니다. 다음은 위에 표시된 수식의 변형입니다.

=sum(A1;A2;A3;A4;A5)

이 공식의 결과는 같습니다. 수식에 사용하는 구성 요소는 사용중인 응용 프로그램에 따라 다릅니다.


좋은 답변, @rog. Google 기능 설명서에서 세미콜론 대신 쉼표를 사용하여 매개 변수를 구분하는 이유를 알고 있습니까? 그들은 내 테스트에서 작동하지 않습니다.
Jpsy

@Jpsy : 매개 변수 구분 기호는 스프레드 시트 설정에 따라 다릅니다. 쉼표가 소수 구분 기호 인 경우 세미콜론이 사용됩니다.
Rubén


"AND (), OR () 및 IF ()의 구현은 단락되어야합니다."--- 불행히도이 글을 쓰는 시점에 Google 스프레드 시트에서이를 얻지 못했습니다. "AND (FALSE, 형식이 일치하지 않는 식)"을 시도했지만 두 번째 부분을 무시하는 대신 결과는 두 번째 피연산자의 오류입니다. 다행히 stackoverflow에 대한 해결 방법이 있습니다. stackoverflow.com/a/16926642/2184166
ob-ivan

6

조금 더 검색 한 후, 나는 그것을 발견

  1. Google 스프레드 시트 수식은 Microsoft Excel 및 기타 표준 에 따라 사실상의 표준을 구현합니다 .
  2. 표준은 제대로 정의되지 않은 것 같습니다 .

가장 포괄적 인 정의에서 찾은 가장 가까운 것은이 오래된 메일 링리스트 게시물 ( http://lists.oasis-open.org/archives/office-comment/200411/msg00000.html)에 있었습니다. 여기에는 yacc 문법, lex tokenizer, 시맨틱 스에 대한 간단한 설명.

이것이 Google 스프레드 시트 구현과 얼마나 밀접한 관계인지는 확실하지 않습니다. 몇 가지 예가 Google 스프레드 시트에서 작동하지 않습니다.

죄송합니다. 이 정보에 대한 모든 발전은 대단히 감사하겠습니다.


위의 게시물 이후 많은 발전이있었습니다. OpenDocument에 대해서는 oasis-open.org/committees/tc_home.php?wg_abbrev=office
Rubén

-2

https://repository.tudelft.nl/islandora/object/uuid:d9d802af-9ebf-4524-9dbc-e7657d67921e/datastream/OBJ/download

David Hoepelman의 석사 논문 "도구 보조 스프레드 시트 리팩토링 및 스프레드 시트 수식 구문 분석"(Delft University of Technology)은 지금까지 내가 본 스프레드 시트 수식 구문에 대한 최고의 설명입니다. BNF, 경험적 검증 및 모든 트리밍. 그러나 직접 코딩 한 프로젝트를위한 좋은 가이드가 될 정도로 간단합니다. XLParser는 논문에서 참조되는 동반 GitHub 오픈 소스 프로젝트입니다.

아아 그것은 시트가 아닌 Excel 용이지만 시트 수식이 Excel과 호환되는 정도로 시작하기에 좋은 곳입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.