[]
        
(Showing Draft Content)

GROUPBY

この機能を使用すると、数式を使用してデータの要約を作成できます。行フィールドに沿ったグループ化と関連する値の集計をサポートしています。さらに、グループ化されたデータの並べ替えやフィルタリングも実行できます。

書式

GROUPBY(row_fields,values,function,[field_headers],[total_depth],[sort_order],[filter_array],[field_relationship])

引数

有効な引数は次のとおりです。

引数

説明

サンプル

row_fields

行をグループ化し、行ヘッダーを生成するために使用される値を含む列指向の配列または範囲。

  • 1つの列に基づいて行をグループ化:

    =GROUPBY(A1:A62, E1:E62, SUM)

  • 複数の列に基づいて行をグループ化:

    =GROUPBY(A1:B62, E1:E62, SUM)

  • 隣接していない列に基づいて行をグループ化:

    =GROUPBY(CHOOSECOLS(A1:D62, 1, 4), E1:E62, SUM)

values

集計するデータの列指向の配列または範囲。

  • 1つの列を集計:

    =GROUPBY(A1:A62, E1:E62, SUM)

  • 複数の列を集計:

    =GROUPBY(B1:B62, E1:G62, MAX)

  • 隣接していない列を集計:

    =GROUPBY(B1:B62, CHOOSECOLS(E1:G62, 1, 3), MEDIAN)

function

グループ化されたデータを要約するための関数。

  • 1つの関数参照を使用:

    =GROUPBY(A1:A62, E1:E62, SUM)

  • 1つのLAMBDA関数を使用:

    =GROUPBY(B1:B62, E1:E62, LAMBDA(a, IF(COUNT(a) > 2, "↑", "↓")))

  • HSTACKを使用した複数の集計:

    =GROUPBY(B1:B62, E1:E62, HSTACK(COUNT, LAMBDA(a, IF(COUNT(a) > 2, "↑", "↓")), PERCENTOF))

  • VSTACKを使用した複数の集計:

    =GROUPBY(B1:B62, E1:E62, VSTACK(COUNT, LAMBDA(a, IF(COUNT(a) > 2, "↑", "↓")), PERCENTOF))

  • HSTACKを使用した複数の集計と名前変更:

    =GROUPBY(A1:B62, E1:E62, VSTACK(HSTACK(COUNT, LAMBDA(a, IF(COUNT(a) > 2, "↑", "↓"))), {"c", "good"}))

  • VSTACKを使用した複数の集計と名前変更:

    =GROUPBY(A1:B62, E1:E62, HSTACK(VSTACK(COUNT, LAMBDA(a, IF(COUNT(a) > 2, "↑", "↓"))), {"c"; "good"}))

  • 複数の値列を使用した複数の集計: 列と集計は同じ数である必要があります。

  • 一時的なLAMBDA関数を使用した複数の集計:

    =GROUPBY(A1:A13, C1:C13, VSTACK(MAP({1, 2, 3, 4}, LAMBDA(_m, LAMBDA(_x, @INDEX(_x, _m) / SUM(_x)))), "2024 Q" & {1, 2, 3, 4}), 1, 0)

field_headers [optional]

row_fieldsとvaluesにヘッダーが含まれているかどうか、および結果にフィールドヘッダーを返すかどうかを指定する数値。

オプション:

省略(デフォルト)- values引数に基づいてデータにヘッダーが含まれていると仮定します

0- いいえ

1- はい、表示しない

2- いいえ、生成する

3- はい、表示する


total_depth[optional]

行ヘッダーに合計を含めるかどうかを決定します。

オプション:

省略(デフォルト)- 総合計および可能な場合は小計

0: 合計なし

1: 総合計

2: 総合計および小計


sort_order

行をどのように並べ替えるかを示す数値。数値はrow_fieldsの列に対応し、その後にvaluesの列が続きます。数値が負の場合、行は降順/逆順に並べ替えられます。

省略(デフォルト) : row_fieldsの値に基づいてAからZの昇順。

複数の列で並べ替え: row_fieldsの列に対応する数値の1次元配列を提供し、その後にvaluesの列が続きます。


filter_array

対応するデータ行を考慮するかどうかを示すブール値の列指向の1次元配列。

=GROUPBY(B:B, E:E, COUNT, , , , G:G > 200)

field_relationship

row_fieldsに複数の列が提供された場合のフィールドの関係を指定します。

オプション:

0: 階層(デフォルト)- 後のフィールド列の並べ替えは、前の列の階層を考慮します。

1: テーブル - 各フィールド列の並べ替えは独立して行われます。小計は、データに階層があることを前提としているため、サポートされていません。


解説

GROUPBY関数は、Excelのインポートとエクスポートをサポートしています。

サンプル

GROUPBY(A1:A62, E1:E62, SUM)

次のコードは、データセットに対するGROUPBY関数の使用例を示しています。

 // Allow the Dynamic Array to True
 spread.options.allowDynamicArray = true;
 spread.setSheetCount(3);
 
 let sheet2 = spread.getSheet(1);
 sheet2.name("GROUPBY Function");
 let data = [
     ["YEAR", "Category", "Product", "Status", "Sales", "Rating"],
     [2023, "Electronics", "Smart TV", "Active", 15000, 4.5],
     [2023, "Fashion", "Designer Jeans", "Discontinued", 8000, 4.7],
     [2024, "Food", "Organic Granola", "Active", 5000, 4.8],
     [2023, "Books", "Bestseller Novel", "Active", 12000, 4.6],
     [2024, "Electronics", "Laptop", "Active", 20000, 4.9],
     [2023, "Beauty", "Skincare Set", "Discontinued", 7000, 4.4],
     [2023, "Home & Garden", "Garden Tools", "Active", 6500, 4.3],
     [2024, "Health", "Fitness Tracker", "Active", 9500, 4.6],
     [2023, "Toys", "Action Figure", "Active", 4800, 4.7],
     [2024, "Automotive", "Car Accessories", "Discontinued", 3200, 4.5],
     [2023, "Sports", "Basketball", "Active", 7600, 4.8],
     [2024, "Office Supplies", "Notebooks", "Active", 11000, 4.4],
     [2023, "Pet Supplies", "Dog Food", "Discontinued", 5600, 4.6],
     [2024, "Music", "Headphones", "Active", 13000, 4.9],
     [2023, "Outdoor", "Camping Tent", "Discontinued", 4400, 4.5],
     [2024, "Jewelry", "Silver Necklace", "Active", 2800, 4.7],
     [2023, "Tools", "Power Drill", "Active", 3900, 4.4],
     [2024, "Baby", "Stroller", "Active", 1700, 4.6],
     [2023, "Kitchen", "Blender", "Active", 2500, 4.8],
     [2024, "Clothing", "Casual Shirt", "Discontinued", 6200, 4.5],
     [2023, "Art", "Oil Paintings", "Active", 1900, 4.7],
     [2024, "Hobbies", "Model Trains", "Active", 3100, 4.4],
     [2023, "Tech Gadgets", "Smart Watch", "Discontinued", 7300, 4.6],
     [2024, "Travel", "Luggage", "Active", 4600, 4.8],
     [2023, "Home Decor", "Wall Clock", "Active", 2200, 4.5],
 ];

 // Sheet2 - GROUPBY Function
 sheet2.setArray(0, 0, data);
 sheet2.tables.add("table2", 0, 0, data.length, 6, GC.Spread.Sheets.Tables.TableThemes.medium2);
 sheet2.setFormula(2, 8, "=GROUPBY(A2:A26,E2:E26, SUM)");