複数行のデータを1行ずつ処理をする¶
ここでは、複数行のデータに対し、1行ずつ繰り返し処理を行う方法を説明します。
例として、名前の一覧を1件ずつ名簿テーブルへ登録するアクションセットを作成しながら説明します。
複数行データ登録処理の準備をする¶
- アプリのシート内に、登録データの一覧、および、「登録」ボタンを用意します。
- 繰り返し処理を行うためには、操作途中の情報を管理するセルが必要となります。そのため、操作情報管理用のセルを用意します。
- [1] 登録データ名前列(E3)
- 名前がセットされている列を管理するためのセルです。名前列はB列なので、固定で 「B」 と記入しておきます。
- [2] データ開始行(E4)
- 操作を開始する行の番号を管理するセルです。開始行は4行目なので、固定で 「4」 と記入しておきます。
- [3] セル参照用カウンタ変数(E6)
- アクションで現在処理中の行を管理するために使用するセルです。値はアクションセットにて更新します。
- [4] 現在の参照先セルアドレス(E7)
アクションで現在処理中のセルを保持するためのセルです。対象の列番号(上記[1]の値)と行番号(上記[3]の値)の文字列を連結して、セルを示す文字列を返す式( 「=E3&E6」 )を記入しておきます。これにより、「登録データ名前列」が「B」で「セル参照用カウンタ変数」が「6」であれば、「B6」という値を保持するようになります。- [5] 現在の参照先の値(E8)
アクションで現在処理中のセルの値を保持するセルです。「現在の参照先セルアドレス」が示すセルの値を表示させる式( 「=INDIRECT(E7)」 )を記入しておきます。これにより、「現在の参照先セルアドレス」が「B6」であれば、B6セルの値を保持するようになります。
「セル参照用カウンタ変数」の値により、「現在の参照先セルアドレス」セルや「現在の参照先の値」セルの保持する値が、次のように決定します。
ヒント
- これら管理用のセルはアプリ利用者が意識する必要のない情報を保持するため、公開時には列を非表示としておくとアプリ利用者にとって見やすくなります。
- INDIRECT関数を使用すると、「A1」や「D6」などセルを示す文字列から、そのセルの値を取得することができます。(例:INDIRECT("A1"))
ちなみに
CELF には、行番号と列番号(番号または列名)を指定しセルの値を取得するユーティリティ関数(UTIL.CELLV 関数)が用意されています。UTIL.CELLV 関数を使って、現在の参照先の値(E8)に 「=UTIL.CELLV(E6, E3)」 と記入しておくことで同じように値を取得することができます。(この場合は、現在の参照先セルアドレス(E7)は不要になります。)
複数行データ登録処理のアクションセットを作成する¶
- アクションセットを新規作成し、「アクションセット設定」ダイアログを開きます。
- カウンタの初期値が開始行の行数となるように、「セル参照用カウンタ変数」セル(E6)に「データ開始行」セル(E4)の値をセットします。
- 複数件のデータを登録するため、「データ更新を一括実行する」アクションを配置します。
参考
複数件のデータを登録する際のトランザクション制御方法については トランザクションを制御する を参照してください。
- 繰り返し処理用の「繰り返し処理をする」アクションを配置します。
- 「現在の参照先の値」セル(E8)の値が空かどうかを、繰り返し処理の終了条件として指定します。
- 「テーブルにデータを登録する」アクションを配置します。登録する値は、「現在の参照先の値」セル(E8)の値を指定します。
ちなみに
登録先のテーブルとして「ダミー名簿」テーブルを用意し、テーブルのカラムには「NAME」のみ定義しています。
- 1件登録後、処理対象データを1行下に移動するため、「セル参照用カウンタ変数」セル(E6)の値を 1 加算します。
- 処理が完了したことがわかるように、「メッセージをポップアップで表示する」アクションを配置します。
- アクションセットを保存し、「登録」ボタンに割り当てます。
複数件登録処理を実行する¶
- 「登録」ボタンをクリックします。
- ポップアップで登録完了メッセージが表示されます。
名簿テーブルに登録されたことが確認できました。
参考
※動画内の画面は最新バージョンの CELF とは異なる場合があります。
※動画に音声はついていません。