グループ抽出
機能
《グループ抽出》は、開いているテーブルのレコードを、「グループキーフィールド」の値ごと、または指定したレコード数ごとに分けて、複数の新しいテーブルを作成する機能です。作成するテーブルには、「抽出フィールド」で選択したフィールドが出力されます。「フォルダキーフィールド」を選択すると、その値ごとにフォルダが作成され、テーブルはそのフォルダの中に作成されます。元のテーブルは変更されません。
例は、キー「商品No」、抽出フィールド「単価」「数量」、フォルダ「グループ抽出」、テーブル名「売上」の場合です。商品Noの値ごとに3つのテーブル(「グループ抽出¥A01¥売上_A01」など)が作成されます。図の「テーブル」の列は、レコードが入るテーブルの名前です。
| 売上日 | 商品No | 単価 | 数量 |
|---|---|---|---|
| 2024/04/10 | A01 | 1200 | 4 |
| 2024/04/12 | B02 | 800 | 3 |
| 2024/05/20 | A01 | 1200 | 2 |
| 2024/05/25 | C03 | 500 | 1 |
| 2024/06/15 | B02 | 800 | 5 |
| 2024/06/20 | A01 | 1000 | 1 |
→
| テーブル | 商品No | 単価 | 数量 |
|---|---|---|---|
| 売上_A01 | A01 | 1200 | 4 |
| 売上_A01 | A01 | 1200 | 2 |
| 売上_A01 | A01 | 1000 | 1 |
| 売上_B02 | B02 | 800 | 3 |
| 売上_B02 | B02 | 800 | 5 |
| 売上_C03 | C03 | 500 | 1 |
- 作成するテーブルのフィールドは、キーにしたフィールドが先頭に並び、その後に「抽出フィールド」で選択したフィールドが選択した順に並びます。フィールド名・データ型・書式は元のテーブルと同じです。
- 各テーブルのレコードは、元のテーブルの順のままです。
- 大文字・小文字、全角・半角は区別されます(例:「A01」と「a01」「A01」は別のテーブルです)。記号だけが違う値(「A/01」と「A 01」など)も別のテーブルです。
- テーブルの名前と保存先は、「◇グループ抽出の結果」の「■ 作成されるテーブルの名前と保存先」を参照してください。
メニュー
《加工》-《グループ抽出》
- テーブルを開いている場合に使用できます。開いているテーブルが分ける元のテーブルになります。
- テーブルの画面で条件式を設定している場合は、その条件式が「条件式」に入力された状態で開きます。
- 操作ログからグループ抽出のコマンドを修正することもできます(「■ 操作ログからコマンドを修正する場合」参照)。
操作ログからコマンドを修正する場合
操作ログでグループ抽出のコマンドを修正すると、コマンドの内容が設定された状態で画面が開きます。
- 「フォルダキーフィールド」「グループキーフィールド」「抽出フィールド」は、コマンドに記述された順に選択されます。フォルダキーのないコマンドの場合、「フォルダキーフィールド」は選択されません。
- テーブルにないフィールドは選択されません。
- レコード数で分けるコマンドの場合は、「レコード数」が選択され、レコード数が入力されます。
- 条件式は、コマンドの内容がそのまま入力されます。テーブルの画面の条件式は使用されません。
- フォルダを作成しないコマンドの場合は、「作成しない」が選択されます。フォルダ名の欄には、初期値の「グループ抽出」が表示されます。
- 「テーブル名」と「元のテーブル名を使う」は、コマンドのとおりに設定されます。
設定内容

- 1元のテーブル:分ける元のテーブルの、フォルダ名とテーブル名が表示されます。
- 2《フィールド選択》ボタン:「フィールド選択」画面を開き、フォルダキーにするフィールドをまとめて選択・解除できます。
- 3フォルダキーフィールド(任意):フォルダを分けるキーにするフィールドの行をクリックして選択します(もう一度クリックで解除)。選択すると、その値ごとにフォルダが作成され、テーブルはそのフォルダの中に作成されます(「■ フォルダキーを選択した場合」参照)。
- 選択しない場合は、これまでどおり、キーの値ごとにフォルダが作成されます(「レコード数」の場合はフォルダなし)。
- 複数選択した場合は、選択したすべてのフィールドの値の組み合わせごとにフォルダが作成されます。左端の番号は選択した順番です。
- 「グループキーフィールド」と同じフィールドも選択できます。「フィールド」「レコード数」のどちらでも使用できます。
- 選択すると、テーブル名の下の説明が「フォルダ名は「フォルダキーの値」、テーブル名は「テーブル名_キーの値」になります。」に変わります。
- フォルダキーのフィールドは、作成するテーブルには出力されません。出力する場合は、「抽出フィールド」でも選択してください。
- 4フィールド:「グループキーフィールド」の値ごとにテーブルを分けます。初期値です。
- 5レコード数:6に入力したレコード数ごとに、元のテーブルの順にテーブルを分けます(「■ 「レコード数」を選択した場合」参照)。
- 6レコード数の値(レコード数):1つのテーブルに入れるレコード数を、1以上の整数で入力します。「レコード数」を選択した場合に入力できます。
- 数字だけを入力できます。
- 7《フィールド選択》ボタン:「フィールド選択」画面を開き、キーにするフィールドをまとめて選択・解除できます。
- 8グループキーフィールド(フィールド):テーブルを分けるキーにするフィールドの行をクリックして選択します(もう一度クリックで解除)。1つ以上選択します。
- 複数選択した場合は、選択したすべてのフィールドの値の組み合わせごとにテーブルが作成されます。
- 左端の番号は選択した順番です。この順に、作成するテーブルの先頭にフィールドが並び、テーブル名のキーの値がつながります。
- 見出しのチェックボックス(またはCtrl+A)で、すべてのフィールドを選択・解除します。
- 「レコード数」を選択すると使用できなくなり、選択は解除されます。「フィールド」に戻した場合は、選択し直してください。
- 9《フィールド選択》ボタン:「フィールド選択」画面を開き、「抽出フィールド」をまとめて選択・解除できます。
- 10抽出フィールド(必須):作成するテーブルに出力するフィールドの行をクリックして選択します。1つ以上選択します。
- 選択した順に、キーのフィールドの後ろに並びます。キーと同じフィールドを選択しても、1回だけ出力されます。
- 見出しのチェックボックス(またはCtrl+A)で、すべてのフィールドを選択・解除します。
- 11《式ビルダー》ボタン:「式ビルダー」画面を開き、フィールドや関数を選んで条件式を作成できます。
- 12条件式(任意):テーブルを分ける前に、レコードを絞り込む条件を入力します。空欄の場合は、すべてのレコードが対象です。
- 入力中に、関数やフィールドの候補が表示されます(Ctrl+Spaceで表示、Escで閉じます)。
- 「×」で入力内容を消去します。正しい条件式であることを確認すると、緑の「✓」が表示されます。
- 13《検証》ボタン:条件式が正しいかを確認します(Ctrl+Enter)。誤りがある場合は、メッセージが表示されます。
- 14フォルダ作成:作成する:「04_table」フォルダの中に、作成するテーブルをまとめるフォルダを作成します。初期値です。
- 15フォルダ作成:作成しない:「04_table」フォルダに、直接テーブルを作成します。16は使用できません。
- 16フォルダ名(作成する):作成するフォルダの名前を入力します。初期値は「グループ抽出」です。
- 空欄の場合は、「作成しない」と同じです。
- 記号(「*」など)や「..」を含む名前は、実行時にエラーになります。
- 17元のテーブル名を使う:オンにすると、作成するテーブルの名前が「元のテーブル名_キーの値」になります。18は使用できません。初期値はオフです。
- 18テーブル名(任意):作成するテーブルの名前の先頭に付ける文字を入力します。テーブル名は「入力した文字_キーの値」になります。
- 空欄の場合は、キーの値だけがテーブル名になります。
- 「フォルダ名¥テーブル名」のように入力すると、16のフォルダの中に、そのフォルダが作成されます。
- テーブル名の長さは、64文字までです。「04_table」フォルダ以外の場所は指定できません。
- 記号(「-」「.」「#」など)や全角スペースは使用できません。
- 名前の最後に「¥」「/」、途中に「..」は入力できません。
- 「入力した文字_キーの値」が64文字を超える場合は、入力した文字の後ろが短くされます(キーの値は残ります)。
- 元のテーブルと同じ名前は使用できません(大文字・小文字が違っても同じ名前とみなされます)。
- 19コマンド:現在の設定で実行されるコマンドが表示されます(「◇操作ログ」参照)。キー(またはレコード数)と「抽出フィールド」を指定すると表示されます。
- 20《コピー》ボタン:コマンドをクリップボードにコピーします。
- 21《キャンセル》ボタン:実行せずに画面を閉じます(Escキー)。確認メッセージで「はい」を選択すると閉じます。
- 22《実行》ボタン:実行します(Enterキー)。正常に終了すると画面が閉じ、作成したテーブルがテーブルの一覧に追加されます。
- 作成されるテーブルが100を超える場合は、続行してよいかの確認メッセージが表示されます。「いいえ」を選択すると、実行せずに画面に戻ります。
「レコード数」を選択した場合
「グループキーフィールド」は灰色になり、使用できません。6にレコード数を入力します。

「元のテーブル名を使う」をオンにした場合
「テーブル名」は使用できません。入力済みのテーブル名は残りますが、チェックされず、使用されません。

グループ抽出の結果
設定によって、作成されるテーブルは次のようになります。例は「◇機能」と同じテーブルです。
キーを複数選択した場合
キー「商品No」「単価」の値の組み合わせごとに、テーブルが作成されます。テーブル名のキーの値は「_」でつながります。
| 売上日 | 商品No | 単価 | 数量 |
|---|---|---|---|
| 2024/04/10 | A01 | 1200 | 4 |
| 2024/04/12 | B02 | 800 | 3 |
| 2024/05/20 | A01 | 1200 | 2 |
| 2024/05/25 | C03 | 500 | 1 |
| 2024/06/15 | B02 | 800 | 5 |
| 2024/06/20 | A01 | 1000 | 1 |
→
| テーブル | 商品No | 単価 | 数量 |
|---|---|---|---|
| 売上_A01_1200 | A01 | 1200 | 4 |
| 売上_A01_1200 | A01 | 1200 | 2 |
| 売上_A01_1000 | A01 | 1000 | 1 |
| 売上_B02_800 | B02 | 800 | 3 |
| 売上_B02_800 | B02 | 800 | 5 |
| 売上_C03_500 | C03 | 500 | 1 |
- 作成するテーブルの先頭には、キーにしたフィールドが選択した順に並びます。選択する順を変えると、列の順とテーブル名が変わります(例:「売上_1200_A01」)。
「レコード数」を選択した場合
レコード数「4」の例です。元のテーブルの順に4件ずつ分けられ、テーブル名は「テーブル名_最初の番号_最後の番号」になります。
| 売上日 | 商品No | 単価 | 数量 |
|---|---|---|---|
| 2024/04/10 | A01 | 1200 | 4 |
| 2024/04/12 | B02 | 800 | 3 |
| 2024/05/20 | A01 | 1200 | 2 |
| 2024/05/25 | C03 | 500 | 1 |
| 2024/06/15 | B02 | 800 | 5 |
| 2024/06/20 | A01 | 1000 | 1 |
→
| テーブル | 売上日 | 商品No | 数量 |
|---|---|---|---|
| 売上_1_4 | 2024/04/10 | A01 | 4 |
| 売上_1_4 | 2024/04/12 | B02 | 3 |
| 売上_1_4 | 2024/05/20 | A01 | 2 |
| 売上_1_4 | 2024/05/25 | C03 | 1 |
| 売上_5_6 | 2024/06/15 | B02 | 5 |
| 売上_5_6 | 2024/06/20 | A01 | 1 |
- 最後のテーブルは、指定したレコード数より少なくなることがあります。レコード数がテーブルのレコード数以上の場合は、1つのテーブル(例:「売上_1_6」)になります。
- キーの値ごとのフォルダは作成されません。作成するテーブルには、「抽出フィールド」だけが出力されます。
- 条件式を入力した場合は、条件に合うレコードだけを数えます。テーブル名の番号は、条件に合うレコードの中での順番です。
条件式を入力した場合
条件に合うレコードだけがテーブルに分けられます。条件式「[数量] >= 2」では、「C03」のレコードがないため、「C03」のテーブルは作成されません。
| 売上日 | 商品No | 単価 | 数量 |
|---|---|---|---|
| 2024/04/10 | A01 | 1200 | 4 |
| 2024/04/12 | B02 | 800 | 3 |
| 2024/05/20 | A01 | 1200 | 2 |
| 2024/05/25 | C03 | 500 | 1 |
| 2024/06/15 | B02 | 800 | 5 |
| 2024/06/20 | A01 | 1000 | 1 |
→
| テーブル | 商品No | 単価 | 数量 |
|---|---|---|---|
| 売上_A01 | A01 | 1200 | 4 |
| 売上_A01 | A01 | 1200 | 2 |
| 売上_B02 | B02 | 800 | 3 |
| 売上_B02 | B02 | 800 | 5 |
- 条件に合うレコードがない場合も、エラーにはならず、レコードが0件のテーブルが1つ作成されます。
フォルダキーを選択した場合
フォルダキー「店舗」、キー「商品No」、抽出フィールド「数量」の例です。店舗の値ごとにフォルダが作成され、その中に商品Noの値ごとのテーブルが作成されます。
| 店舗 | 商品No | 数量 |
|---|---|---|
| 東京 | A01 | 4 |
| 大阪 | B02 | 3 |
| 東京 | A01 | 2 |
| 大阪 | A01 | 1 |
| 東京 | B02 | 5 |
| 大阪 | A01 | 1 |
→
| テーブル | 商品No | 数量 |
|---|---|---|
| 大阪¥売上_A01 | A01 | 1 |
| 大阪¥売上_A01 | A01 | 1 |
| 大阪¥売上_B02 | B02 | 3 |
| 東京¥売上_A01_1 | A01 | 4 |
| 東京¥売上_A01_1 | A01 | 2 |
| 東京¥売上_B02_1 | B02 | 5 |
- テーブル名は、1回の実行の中で同じ名前にならないように、後から作成されるテーブルに「_1」「_2」…が付きます(フォルダが違っても同じです)。フォルダは値の順(例:「大阪」→「東京」)に作成されます。
- フォルダキーの「店舗」は、作成するテーブルには出力されません。
- 「レコード数」と組み合わせた場合は、フォルダごとに、元のテーブルの順にレコード数ずつ分けられます。テーブル名の番号は、フォルダごとに1から数えます(例:「大阪¥売上_1_2」「東京¥売上_1_2_1」)。
作成されるテーブルの名前と保存先
テーブルは「04_table」フォルダの中に、次のように作成されます(「◇機能」の例。元のテーブルは「売上明細」)。
| 設定 | 作成されるテーブル(「04_table」フォルダから) |
|---|---|
| フォルダ「グループ抽出」、テーブル名「売上」 | グループ抽出¥A01¥売上_A01(「◇機能」の例) |
| テーブル名が空欄 | グループ抽出¥A01¥A01 |
| 「元のテーブル名を使う」をオン | グループ抽出¥A01¥売上明細_A01 |
| テーブル名「月別¥売上」 | グループ抽出¥月別¥A01¥売上_A01 |
| 「作成しない」 | A01¥売上_A01 |
| 「レコード数」 | グループ抽出¥売上_1_4 |
| 「レコード数」、「作成しない」、テーブル名が空欄 | 1_4 |
| フォルダキー「店舗」 | グループ抽出¥大阪¥売上_A01 |
| フォルダキー「店舗」、「レコード数」 | グループ抽出¥大阪¥売上_1_4 |
- 「フィールド」の場合は、キーの値ごとにフォルダが作成され、その中にテーブルが作成されます。
- テーブル名のキーの値は、記号や空白が「_」に置き換えられます(例:「A/01」→「A_01」、「-30.00」→「_30_00」)。
- 日付は「2024/04/10」→「2024_04_10」、日付時刻は「2024/04/10 09:00:00」→「2024_04_10t09_00_00」になります。
- 文字型の空欄の値は、「_」1文字として名前に使われます。フォルダキーの値からフォルダ名を作る場合も同じです。
- Windowsで使用できない名前(「CON」「NUL」「COM1」など)には、最後に「_」が付きます(例:「CON_」)。
- 名前は64文字までです。同じ名前になる場合は、フォルダは「(1)」「(2)」…、テーブルは「_1」「_2」…が付きます(大文字・小文字の違いは同じ名前とみなされます)。
- 保存先のパスが長すぎる場合は、Windowsの上限に収まるようにフォルダ名・テーブル名が短くされます。
入力内容に誤りがある場合
《実行》ボタンをクリックしたときに、「抽出フィールド」やキーが選択されていない、レコード数が整数でない、テーブル名に使用できない文字があるなどの誤りがあると、画面の左下にメッセージが表示され、該当する項目が赤枠で示されます。項目を修正するとメッセージは消え、《実行》ボタンが使用できるようになります。

- 条件式に誤りがある場合(フィールドがない、文字と数値を比較しているなど)は、実行時に誤りの内容を示す画面が表示されます。
- フォルダ名の誤りや、レコード数が「0」の場合も、実行時に誤りの内容を示す画面が表示されます。
- いずれも画面は閉じないので、内容を修正してもう一度実行してください。
操作ログ
OPEN "元のテーブル" GROUPEXTRACT FOLDERKEY [フォルダキー1] ・・・ ON [キー1] [キー2] ・・・ OTHER FIELDS [フィールド1] ・・・ IF 条件式 FOLDER "フォルダ名" TO "テーブル名"
各キーワードの意味は、次のとおりです。
| キーワード | 内容 | 設定内容 |
|---|---|---|
| OPEN “元のテーブル” | 分ける元のテーブルを開きます | 1 |
| FOLDERKEY [フォルダキー1] ・・・ | フォルダキーフィールド。選択した順に記述します | 3 |
| FOLDERKEY ALLFIELDS | すべてのフィールドをフォルダキーにします | 3 |
| ON [キー1] ・・・ | グループキーフィールド。選択した順に記述します | 8 |
| ON ALLFIELDS | すべてのフィールドをキーにします | 8 |
| ON RECORDS レコード数 | 指定したレコード数ごとに分けます | 5、6 |
| OTHER FIELDS [フィールド1] ・・・ | 抽出フィールド。選択した順に記述します | 10 |
| OTHER ALLFIELDS | すべてのフィールドを出力します | 10 |
| IF 条件式 | テーブルに分けるレコードの条件 | 12 |
| FOLDER “フォルダ名” | 作成するフォルダの名前 | 16 |
| TO “テーブル名” | テーブル名の先頭に付ける文字 | 18 |
| ORIGIN TABLE NAME | 元のテーブル名をテーブル名に使います | 17 |
- 「レコード数」の場合は、「ON [キー1] ・・・」の代わりに「ON RECORDS レコード数」と記述されます。
- すべてのフィールドを行の順に選択した場合は、「ON ALLFIELDS」「OTHER ALLFIELDS」と記述されます。
- 下線部は、フォルダキーを選択した場合、条件式、フォルダ名(「作成する」の場合)、テーブル名を入力した場合に記述されます。
- 「元のテーブル名を使う」をオンにした場合は、「TO “テーブル名”」の代わりに「ORIGIN TABLE NAME」と記述されます。
コマンドを直接記述する場合(スクリプトなど)
- フィールド名は「[ ]」で、フォルダ名とテーブル名は「”」で囲んで記述します。オプションは上の順に記述します。
- 「ON」の後のキー(「ALLFIELDS」「RECORDS レコード数」)と「OTHER」の後のフィールドは省略できません。
- 「RECORDS」のレコード数は、1以上の整数を記述します。0以下はエラーになります。
- 「FOLDERKEY」は「ON」の前に記述し、フィールド(または「ALLFIELDS」)を1つ以上記述します。省略した場合は、フォルダキーなしになります。
- テーブルにないフィールドを記述したり、「OTHER FIELDS」に同じフィールドを2回記述したりすると、エラーになります。
- 「TO」に「C:¥」から始まるような絶対パスは記述できません。
- 「TO」「FOLDER」に「..」を含めたり、「FOLDER」に「*」などの記号を使ったりすると、エラーになります。
オプションの例(「◇グループ抽出の結果」と同じテーブル。「FOLDER」「TO」は省略)
| コマンドの記述 | 作成されるテーブル |
|---|---|
| ON [商品No] OTHER FIELDS [単価] [数量] | 「A01」「B02」「C03」の3つ(「◇機能」の例) |
| ON [商品No] [単価] OTHER FIELDS [数量] | 「A01_1200」「A01_1000」「B02_800」「C03_500」の4つ |
| ON RECORDS 4 OTHER FIELDS [売上日] [商品No] [数量] | 「1_4」「5_6」の2つ |
| ON [商品No] OTHER FIELDS [単価] [数量] IF [数量] >= 2 | 「A01」「B02」の2つ |
| ON [商品No] OTHER ALLFIELDS | 3つのテーブルに、すべてのフィールドを出力します |
| FOLDERKEY [店舗] ON [商品No] OTHER FIELDS [数量] | 「大阪」「東京」フォルダに2つずつ(「■ フォルダキーを選択した場合」の例) |
例
OPEN "売上¥売上明細" GROUPEXTRACT ON [商品No] OTHER FIELDS [単価] [数量] FOLDER "グループ抽出" TO "売上" GROUPEXTRACT ON RECORDS 1000 OTHER ALLFIELDS FOLDER "売上_分割" ORIGIN TABLE NAME GROUPEXTRACT ON [商品No] OTHER ALLFIELDS IF [売上日] >= `20240401` FOLDER "商品別" OPEN "売上¥店舗別売上" GROUPEXTRACT FOLDERKEY [店舗] ON [商品No] OTHER FIELDS [数量] FOLDER "店舗別" TO "売上"