アプリのパフォーマンス

以下に留意することで、より効率的に動作するアプリを作成することが出来ます。

書式設定するセルは最小限にする

書式設定されたセルが多いほどシートのサイズが大きくなり表示に時間がかかります。

書式設定を減らすことで表示時間を小さくし、メモリ使用量も削減することができます。

すでに設定された書式を解除する場合は、表示形式は「標準」、フォントは「標準フォント」、罫線は「なし」、塗りつぶしは「色なし」を設定してください。

また、多数のデータを表示するためにシートを大きくし、書式設定されたセルが多くなっている場合は ページング のテクニックで

シートの大きさを小さくする方法があります。

シート上に配置する数式は必要最低限にする

シート上の数式は、表示された初回と、関連セルの値が変更されたタイミングに計算されます。

例えば、下図のようにセル A1 にセットされた数式が、画面表示範囲外( F 列以降)にある数式のセットされたセルを参照している場合、

セル A1 が表示されると、セル A1 で参照しているセルの数式も連鎖的に計算(※)され、処理に時間がかかります。

※ F1:F50が計算され、さらに、G1:J1 ~ G50:J50 の数式も全て計算されます。

../../../_images/img_01172.png

同様に、数式がデータを一覧表示している範囲に含まれるセルを参照している場合、

検索や一覧のクリアによって大量のセルの値が変更されることで、それらを参照している数式も全て再計算されます。

これらの要因で意図せず大量の数式が再計算されると、処理に時間がかかります。

使用する数式は必要最低限になるように注意してください。

他シートの参照とアクションセット呼び出しに注意する

シートが他のシートから参照されている場合、参照されているシートのいずれかのアクションセットが実行される都度、

参照しているシートの数式も再計算され時間がかかる場合があります。

例えば、シート X, Y がシート A を参照(「=シートA!A1」)している場合、シート A のセル値が変更される、または、

シート A のアクションセットが実行されると、シート X, Y の数式も再計算されます。

シート X, Y に多数の数式があると、これらの再計算に時間がかかります。

../../../_images/img_02132.png

この問題は、なるべくシートを一つにまとめるよう実装することで回避できます。

大量件数の登録、更新、および、削除では、「データ更新を一括実行する」アクションを使用する

データベースを操作するアクションは、実行の都度データベースへのアクセスと切断を行います。

連続でデータの登録、更新、および、削除を実行するような場合、それらを「データ更新を一括実行する」アクション内に配置することでデータベースへのアクセス回数が抑制され、処理速度が向上します。

参考

「データ更新を一括実行する」アクションについては トランザクションを制御する を参照してください。

インデックスを設定する

大量のデータが登録されているテーブルの検索には時間がかかる場合があります。

そのような場合、検索条件や、ソート条件としてよく使用されるカラムにインデックスを設定することで、処理速度の向上が見込まれます。

参考

インデックスについては テーブル検索を高速化する(インデックス設定) を参照してください。

注意

  • テーブル内のデータを変更する際に登録されている全てのインデックスが調整されます。そのため、頻繁にデータの登録、更新、および、削除が実行されるテーブルに多数のインデックスを登録すると逆効果となる場合があります。
  • データ登録件数が1万件以下のテーブルでは、インデックスを調整する時間の方が多くなるため、使用しないほうがよい場合があります。

特定の値を検索する場合、VLOOKUP を使用する

CELF の VLOOKUP は特別にチューニングされていて、高速に動作します。

例えば、一覧に指定した値が含まれているかの存在チェックを行う場合、COUNTIF を使用するよりも、VLOOKUP を使用した方がより高速です。

また、Excel では近似一致検索(第4引数:true)の方が高速ですが、CELF では完全一致検索(第4引数:false)のほうが高速に動作します。

注意

※検索値(第1引数)に、ワイルドカードを使用することは出来ません。
※検索値(第1引数)と検索範囲(第2引数)との一致判定は、セルの書式設定に関わりません。数字のみからなる値は数値として判定される点に注意してください。
例)
=VLOOKUP("123", …) とした場合に "00123" もヒットします。

連続したセル範囲に同一の処理を行う場合、セル範囲を指定する

連続したセル範囲に同一の処理を行う場合、繰り返しアクションを使用して一つずつ処理するよりも、セル範囲を指定してまとめて処理する方がより高速です。

例)セル範囲 C3:C100 に同じ書式を設定する場合
「セル [C3:C100] の書式を設定する」アクション1つで実行
例)セル範囲 W5:W100 に同一の値を設定する場合(クリアも同様)
「セル [W5:W100] に [=A5] をセットする」アクション1つで実行

注意

範囲の値を範囲へ設定することはできない点に注意してください。
例)
「セル [W5:W100] に [=A5:A100] をセットする」は =A5:A100 という数式の結果である #VALUE! が W5:W100 のすべてのセルにセットされます。