krewSheet
数式

数式はkrewSheet専用のフィールド形式です。

krewSheetでは、数式による演算が可能です。組み込み関数、および標準の数式演算子を使用して、各種の演算を定義および実行できます。

数式の利用

数式を利用するには、プラグイン設定画面のフィールドエリアで「数式」を選択して、シートエリアにドラッグします。数式はkrewSheet上にいくつでも配置することができます。

kintoneの「計算」フィールドとの違い

数式を利用する場合の注意点

数式の適用方法と適用範囲

数式フィールドで列の設定ダイアログを開き、編集ボタンをクリックすることで数式の設定が可能になります。

関数名や列名をダブルクリックすることで数式テキストボックスに挿入することが可能です。

数式の動作

数式は基本的には各レコード単位に動作します。

例)「単価 * 数量」という数式が「金額」列に設定されている場合

範囲指定用列名を表示

数式の中には複数のレコードを対象に動作するものもあります。たとえばRANK関数は以下のような引数を持っています。

 RANK(number,array,order)

2つ目の引数は複数のレコードを跨ぐ範囲を指定する必要があります。このようにarrayという引数に対する列名を指定する場合は、「範囲指定用列名を表示」をチェックして、範囲指定用の「_Array」が付与されている列名を使用する必要があります。

例)RANK(金額,金額_Array)

この数式を設定することで、以下のような結果を得られます。

数式は画面表示中の値のみ対象となります。この例の場合、ページングにより画面に表示されていない金額はRANK関数の対象にすることはできません。

数式計算結果の保存

初期設定で数式の計算結果は画面表示のみです。数式列とは別の計算結果保存用のフィールドを指定することで計算結果をkintoneに保存することができます。

保存先フィールド指定

 プラグイン設定画面の数式列の設定ダイアログで保存するフィールドを指定します。※特に理由がない場合、保存用のフィールドは指定しないか「文字列(1行)」を指定することをお勧めします。(計算結果がエラーの場合もそのまま保存することができます)

保存方法

数式を保存先フィールドに保存するには以下の方法があります。

通常はコマンドバーの保存ボタンにより、数式を保存します。特別な数式や設定により、数式フィールドのみを保存したい場合は数式列のヘッダで右クリックにより表示されるコンテキストメニューから数式を保存することができます。

1.通常フィールドと同様にレコードを編集してコマンドバーの保存ボタンにより保存する

編集状態のレコードの数式を保存します。

 2. 数式列で右クリックによる表示されるコンテキストメニューより保存する

ヘッダを選択してコンテキストメニューを表示した場合は全ての対象レコードを保存し、セルを選択した場合は該当レコードを保存します。

※数式列と保存先フィールドの値が異なる場合、対象セルにセルコメントが表示されます。

保存先フィールドに文字列を保存できないフィールド(数値や日付等)を指定している場合、数式でエラーが発生した際はエラー情報を保存先フィールドに保存できないため、保存を実行後もそのレコードは保存対象レコードになり、行ヘッダに編集状態を示す鉛筆アイコンが表示されます。

この機能はアプリのレコード数に制限を受けます。詳細はパフォーマンスガイドラインを参照してください

 3. コマンドバーの数式一括保存ボタンにより保存する

数式一括保存ボタンにより保存した場合は絞り込みで除外されたレコードを含むアプリ内の全てのレコードを保存します。

数式一括保存ボタンはリボンエリアの「シート」タブの「全般」から「数式一括保存を許可する」にチェックし(詳細は各機能の無効化を参照してください)、計算結果を保存するkintoneフィールドを指定している数式フィールドが存在する場合のみコマンドバーに表示されます。レコードを編集していて行のヘッダーには鉛筆マークが表示されている場合は、先にコマンドバーの保存ボタンをクリックしてレコードを保存してから数式一括保存ボタンをクリックしてください。

  • kintoneアプリのレコード数に応じてkintone APIのリクエスト数が増加します(レコード数 ÷ 500 (データの取得) + レコード数 ÷ 100 回(データの保存))。
    例)レコード数が10,000のアプリを更新した場合: 10,000 ÷ 500 + 10,000 ÷ 100 = 120リクエスト、保存成功後イベント(app.record.index.edit.submit.success)のイベントハンドラーを登録している場合は更に保存されたレコード数 ÷ 500のAPIのリクエストがあります。
    大量レコードのアプリで何度も実行するとAPIリクエスト数が多くなるため、注意が必要です。kintoneでは、1アプリで1日に実行できるAPIリクエスト数の上限が10,000です。(参考: kintone よくあるご質問(FAQ)
  • メインシートと関連シートの数式は個別に保存します。メインシートがアクティブの状態で数式一括保存ボタンをクリックした場合、メインシートの数式が保存されます。

数式の計算結果を保存先フィールドに保存する方法には以下の違いがあります。

方法 右クリックの場所 保存対象行 保存対象列
数式一括保存ボタン - 全レコード(絞り込みを意識しないアプリ内の全レコード※1) 全列
コンテキストメニュー(右クリックによる数式を保存) 絞り込みされている全レコード(krewSheetに表示可能なレコードは、絞り込み条件とソート条件に合致する上位10,000レコードまで) 選択列
コンテキストメニュー(右クリックによる数式を保存) 選択セル 選択行 選択列
保存ボタン - 保存対象レコード(編集レコード) 全列

※1. アプリ全体のレコードが10,000を超える場合、「数式一括保存」ボタンではkrewSheetで表示できる上位10,000レコードまでを対象に数式の一括保存が実行されます。(列ヘッダーのコンテキストメニュー「数式を保存する」を実行した時と同じ動作になります。)

その他の詳細情報

Tips

関数の中には、コロン(:)を利用して複数の列を範囲で指定できるものがあります。

 SUM(単価:金額)

このような指定をすると、実行時に列をドラッグ&ドロップして移動した場合、列の順番が変わり意図した結果を得られなくなります。そのため、以下のようにカンマで列を指定してください。このように指定することで列の順番に依存せずに計算結果を表示することができるようになります。

 SUM(単価,数量,金額) 

演算子

次の表は、数式に使用可能な演算子を示します。

二項演算子
+ 加算
- 減算
* 乗算
/ 除算
^ 指数演算
& 文字連結
= 等号
< > 等しくない
< より少ない
> より大きい
<= より少ないか等しい
>= より大きいか等しい
単項演算子
-
+
% パーセント

 

ワイルドカード文字

値を検索する数式内に、ワイルドカード文字を使用できます。ワイルドカード文字は、条件を指定する引数を持つ数式に使用できます。ワイルドカード文字は、指定した条件に一致する文字および文字列を抽出する用途にのみ、ご利用いただけます。

文字 検索対象
?(疑問符) 任意の1文字 「sm?th」の検索結果は「smith」および「smyth」
*(アスタリスク) 任意の数の文字 「*east」の検索結果は「Northeast」および「Southeast」
~(チルダ)の後に?、*、~のいずれか 疑問符、アスタリスク、またはチルダ 「fy91~?」の検索結果は「fy91?」

ワイルドカード文字をサポートする関数

演算結果のエラー値

無効な入力、または無効な数式の結果、以下のようなエラー値がセルに表示される場合があります。

説明
#DIV/0! 数式内に0による除算が含まれる場合、または、値が0であるセルや空白セルへの参照が除数として使用されている場合に表示されます。
#N/A 入力値が関数または数式にとって無効である場合に表示されます。
#NAME? 数式内のテキストが認識されない場合、関数名のスペルが間違って入力されている場合、または二重引用符(")を付けずにテキストを入力した場合に表示されます。 また、セル範囲の参照にコロン(:)を付けなかった場合にも表示されます。
#NULL! 交わるはずとして指定した2つのセル範囲が、実際には交わっていない場合に表示されます。 この原因としては、参照演算子またはセル参照の入力ミスが考えられます。
#NUM! 数式または関数内の数値が演算不可能である場合、数式の演算結果が大きすぎたり小さすぎたりして表現できない場合、数値を必要とする関数に許容不可能な引数を渡した場合に表示されます。 IRRやRATEなどの反復関数を使用するとき、解が見つからない場合にもこのエラー値が表示されます。
#REF! セル参照が無効な場合、数式によって参照されるセルを削除した場合に表示されます。
#VALUE! 引数やオペランドの種類が正しくない場合に表示されます。たとえば、数値または論理値を必要とする関数にテキストを指定したり、1つの引数しか受け取らない関数に配列を指定したりした場合です。

  • krewSheetの関数では、サロゲート ペア文字は4バイト、2文字の文字として扱われます。
  • 「_Array」が付与されている列名と「=」などの演算子の組み合わせで配列を返しません。同一レコードの演算を行います。
関連するトピック

 

 


Copyright © 2020 GrapeCity inc. All rights reserved.