Googleスプレッドシートの数式の完全なリファレンスドキュメント


21

プログラマーとして、数式に使用できる構文の明確な説明がないように思えるので、Googleスプレッドシートを使用しようとすると、ある程度イライラします。たとえば、3行目以降F3:FF列を参照するために使用できることを読みましたが、Googleのリファレンスドキュメントでこれについて言及している箇所を見つけることができず、常に機能するとは限りません。私はおそらく間違っていますが、それがこの質問のポイントです。

ルールを推測するために5つの異なるチュートリアルをたどりたくありません!どこかで利用可能な文法とセマンティクスの簡潔な説明はありますか?そうでなければ、おそらく誰かがそれをここに要約することができます。


docs.google.com/support/bin/…これが何らかの助けになるかどうかわからない(そのため、コメントが必要です:))
マット

1
おかげで、それは写真の便利な部分ですが、なぜ全部を文書化できないのですか?!
ロッグ

問題ありません。なぜいけないのかわかりませんが、execlによく似ており、構文の変更はわずかです。あなたがこれまで立ち往生している場合は、いつでもここで尋ねることができます:)
マット

回答:


11

これはここから抜粋されテキストです。ストローマンとしてここに投稿しました。これがGoogleスプレッドシートの式とどのように異なるかを知っている人がコメントを投稿できれば、おそらく適切な答えが得られるでしょう。

フォーミュラ

数式を使用すると、テーブルセル内で計算を実行できます。すべての式は、式内で使用される構文とセマンティクスを指定する名前空間プレフィックスで始まる場合があります。プレフィックスがない場合、以下で説明するデフォルトの式の構文とセマンティクスが使用されます。これに等号が続き、次に式自体が続きます。実装は複数の式構文を受け入れてもよく、デフォルトの式構文に対するさまざまな拡張を受け入れてもよい。ただし、式を受け入れるすべての実装は、ここで説明するデフォルトの式の構文とセマンティクスを受け入れなければなりません。彼らはそれへの拡張も受け入れるかもしれません。

厳密なスキーマを実装するドキュメントは、式の名前空間プレフィックスを使用してはならず(他の受信システムが処理できるという保証がないため)、以下で説明するセマンティクスおよび構文の拡張機能を使用してはなりません。構文では、最初の等号の後に式は式でなければなりません。式は、数値、定数文字列、名前付き範囲、2項演算子で接続された1組の式、単項演算子で始まる式、論理演算子、関数呼び出し、セルアドレス、または次の式で囲まれた式です。括弧。関数呼び出しと論理演算子には、セミコロンで区切られたゼロ個以上のパラメーターがあり、各パラメーターは式でなければなりません。これらのそれぞれの構文は次のとおりです。

  • 数字。数値は、「C」ロケール(小数点区切り記号「。」を使用し、桁区切り記号を使用しない)、setlocale(LC_NUMERIC、「C」)または同等の形式を使用して、この形式で読み書きされます。数字の末尾は%で、その数字を100で割ることができます。「%」は他の演算子の意味を変更しないため、2 + 10%は2.1(2.2ではなく)です。先行する-および+記号は、以下で説明する単項演算子として許可されていることに注意してください。作家は、パターンに一致する数字を書く必要があります(数字で始まる必要があることに注意してください):[0-9] +(。[0-9] +)?([eE] [+-]?[0-9] + )?%?読者はこれらの数字を読むことができなければならず、先頭に「。」で始まる数字を受け入れる必要があるため、次の形式の数字を読むことができなければなりません:((。[0-9] +)|([0- 9] +(。[0-9] +)?([eE] [+-]?[0-9] +)))%?定数文字列..定数文字列は二重引用符で囲まれています。二重引用符を埋め込むには、二重引用符は2回使用されます。文字列はUTF-8形式で保存されます。すべてのコンテンツはXMLとして保存されるため、式のすべての二重引用符は実際にはXMLで「として保存されます。定数文字列はパターンに一致します。\ "([^"] | \ "\")* \ "

  • 名前付き範囲/フィールド。 名前付き範囲/フィールドは、分離された定義済みの値または値のセットを指します(スプレッドシートでは、通常、セルのアドレスまたはアドレスのセットを指します)。名前では大文字と小文字が区別されないため、「a」と「A」は同じ範囲を指します。実装は、[A-Za-z] [A-Za-z0-9 _] *パターンに一致する少なくとも名前付き範囲を受け入れる必要があります。

  • オペレーター。 通常の中置演算子と接頭辞演算子が受け入れられます。これらには、次の関連性と優先順位があります(最低から最高の優先順位)。

結合演算子コメント
左<、=、>、<=、> =、<>より小さい、等しい、より大きい、
                                     以下、以上、
                                     等しくない。
左+、-、&加算、減算、文字列連結。ご了承ください
                                     単項(プレフィックス)+と–の優先順位は異なります。
左*、/乗算​​、除算。除算は切り捨てられないため、
                                     1/2は0.5です。
右^パワー(2 ^ 3は8)。読者は「**」も受け入れる必要があります。
なし+、-接頭辞単項演算子、たとえば、-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の場合はtrue_expを返し、そうでない場合はfalse_expを返します

AND()、OR()、およびIF()の実装は、短絡する必要があります。つまり、左から右に順番に評価し、結果を計算するために評価する必要がある式のみを評価する必要があります。実装は、式に副作用がない場合のみ、さらに評価することを選択できます。AND()およびOR()の実装は、任意の数のパラメーターを受け入れる必要がありますが、使用するたびに少なくとも30を受け入れなければなりません。操作NOT()、AND()、OR()、およびIF()の条件は、ブール値を対象としています。他のタイプの式が使用される場合、実装は0をfalseと見なし、他の数値をtrueと見なすべきではなく、長さゼロの文字列をfalseと見なし、他の文字列値をtrueと見なすべきではありません。式のエラー値が計算される場合、その最初のエラーは論理演算の結果です。


関数呼び出し。関数呼び出しには、パターン[A-za-z] [A-Za-z0-9 _] *に一致する関数名があり、その後に開き括弧、ゼロ個以上のパラメーター、閉じ括弧が続きます。パラメータはセミコロン(カンマではなく)で区切られますが、リーダーはカンマを区切り文字として使用する関数呼び出しをオプションで受け入れる場合があります。関数名では大文字と小文字が区別されないため、「sum」と「SUM」は同じ関数です。パラメーターがある場合は、それぞれが式でなければならず、空にすることはできないため、X(;)は正当な関数呼び出しではありませんが、RAND()は完全に正当です。パラメータがオプションの場合、省略できますが、省略した場合は、そのセパレータも省略しなければなりません(関数仕様では、どのパラメータがオプションで、省略が意味することを明記する必要があります)。典型的な実装には多くの組み込み関数がありますが、また、ほとんどの実装は、ユーザー定義関数を作成する1つ以上の方法もサポートしています。一般的な機能は次のとおりです。

  • SUM(リストの範囲内のすべての数値まで合計(S) - )のリスト
  • COUNT(list)- リストの範囲内の数字の数をカウントします
  • AVERAGE(list)-SUM(list)/ COUNT(list)に等しい平均を計算します
  • MIN(リスト) -の最小数値リスト
  • MAX(リスト) -の最大値リスト
  • ROUND(ncount)– ncount桁に丸めます(countが省略された場合、count = 0)
  • INT(n)– nを最も近い整数に切り捨てます。
  • ISEVEN(n)– nが偶数の場合TRUE()を返し、そうでない場合はFALSE()を返します。
  • SUBSTITUTEtext ; searchtext ; newtext ; occurrence)– textのsearchtextnewtextに置き換え、出現回数(出現が省略された場合、すべての時間)。

数字を含むセルのアドレス。アドレスは相対アドレスでも絶対アドレスでもかまいません。相対アドレスは、列文字と行番号で構成されます。行文字または列番号の前にaを$付けると、行または列が絶対になります。

空白(スペース、タブ、改行、およびキャリッジリターン)は、文字列定数の内容およびセル範囲アドレスリスト内の複数のセル範囲アドレスの区切り文字を除き、デフォルトの数式構文では無視されます。

実装のユーザーインターフェイスは、このデータ形式での式の交換方法とは異なる方法で式を受け入れて表示することを選択できます。たとえば、現在のロケールの形式を使用して数値を受け入れて表示する場合があり、数値形式には常に特定のロケールを使用する場合があり、パラメータ区切り文字にはセミコロンではなくカンマを使用する場合があり、セルアドレスを受け入れて表示する場合があります角括弧の使用。ただし、実装ユーザーインターフェイスは、可能な限りデフォルト形式を入力として受け入れる必要があります。たとえば、実装は「C」ロケール要件(および現在のロケール)を満たす番号を受け入れ、SHOULDは括弧付きセルアドレスを受け入れます。また、実装ユーザーインターフェイスは、おそらくダイアログを使用して、ありそうな間違いを修正する必要があります。例えば、

以下は、単純な数式の例です。

=sum(A1:A5)

この式は、「。A1:.A5」の範囲内のすべてのセルの値の合計を計算します。機能は「合計」です。パラメータには、先頭に「(」、末尾に「)」が付いています。関数に複数のパラメーターが含まれる場合、パラメーターは「;」で区切られます。以下は、上記の式のバリエーションです。

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

この式の結果は同じです。式で使用するコンポーネントは、使用しているアプリケーションによって異なります。


素晴らしい答え、@ rog。Google関数のドキュメントでパラメーターを区切るのにセミコロンではなくコンマを使用する理由はありますか?私のテストでは機能しません。
Jpsy

@Jpsy:パラメーターの区切りはスプレッドシートの設定に依存します。セミコロンは、コンマが小数点区切り記号である場合に使用されます。
ルベン


「AND()、OR()、およびIF()の実装は短絡する必要があります」---残念ながら、この記事の執筆時点では、Googleスプレッドシートでこれを取得できません。「AND(FALSE、type mismatch with expression)」を試しましたが、2番目の部分を無視する代わりに、結果は2番目のオペランドのエラーになります。幸いなことに、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トークナイザー、およびセマンティクスの簡単な説明。

これがGoogleスプレッドシートの実装にどれだけ密接に対応しているかは明らかではありません。いくつかの例はGoogleスプレッドシートでは機能しません。

これは残念な状況のようです。この情報の進歩は大歓迎です。


上記の投稿以来、多くの進歩がありました。OpenDocumentのは、上でお知らせが表示さに関してはoasis-open.org/committees/tc_home.php?wg_abbrev=office
ルベン・

-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.