2025/01/03
【Excel】完全一致のデータを自動で色付け

【Excel】完全一致のデータを自動で色付け

以下のような表で、全ての項目が一致するデータが入力された時のみに、行全体を色付けする方法について解説していきます。


1つの項目に同じデータが入力された時に対象のセルを色付け

まず初めに、1つの項目のみで判定する方法について解説していきます。
特定の条件を満たしたセルのみを色付けする場合は、『条件付き書式』を活用します。
条件付き書式には、予め「重複した値を色付けする」という設定が用意されていますが、こちらの設定は複数列の場合に対応できないため、あえて条件式を作成して実現していきます。

条件式を作成する場合、色付けしたい行のみに「TRUE」が表示される数式を作成する必要があります。

例えば、商品名の項目のみで判定する場合、以下の数式を作成することで、先頭行(セルC3)に対して、同じ商品名の行のみに「TRUE」と表示することができます。

=C3:C20=C3
// 表の範囲を3~20行とした場合

この数式の結果のTRUEの数を集計することが出来れば、その行(セルC3の行)が重複しているのかどうかを判定することができます。
実は、TRUEという値は「1」、FALSEという値は「0」として管理されています。
そのため、「*」や「+」などの演算子を用いることで、数値として表示することができます。

=(C3:C20=C3)*1

後は、数値をSUM関数で以下のように合計するだけで、TRUEの数を求めることができます。

=SUM((C3:C20=C3)*1)

この数式の表の範囲のみを「$」で固定して、他の行にコピーし、重複している商品名の行のみに2以上の数値が表示されることを確認します。

=SUM(($C$3:$C$20=C3)*1)
// コピーする際に表の範囲が移動しないように「$」で固定する

ただ、このままですと、空白の行に関しても、2以上の数値が表示されてしまいます。
そのため、空白の行に関してはカウントしないように、「$C$3:$C$20=C3」という条件に「商品名が空白でない」という条件を加えます。
「尚且つ」という条件を加える場合は、「*」で条件式を掛けるだけで実現できます。

=SUM(($C$3:$C$20=C3)*($C$3:$C$20<>""))
// 「*1」は不要になる
ExcelVBAレベル確認

このような数式を作成することができましたら、先頭に入力した以下の数式のみをコピーし、条件付き書式にて設定していきます。

=SUM(($C$3:$C$20=C3)*($C$3:$C$20<>""))

上記の数式は、セルC3に対する数式のため、セルC3を基準に対象の範囲を選択します。

次に、[ホーム]タブの[条件付き書式]から[新しいルール]を選択します。

次に、以下の画面で[ルールの種類]を[数式を使用して書式設定するセルを決定]にし、表示されたテキストボックス内に、先ほどコピーした数式を貼り付け、「1より大きい場合」という条件を加えます。
※条件付き書式に設定した数式は、選択範囲の基準のセルから他の選択範囲に相対参照で反映されます。(「$」が付いている参照は絶対参照になります。)

=SUM(($C$3:$C$20=C3)*($C$3:$C$20<>""))>1

後は、好みの書式を[書式]から設定します。

以上の設定で確定することによって、以下のように、商品名で同じ値が入力されているセルのみに色付けすることができました。


全ての項目が一致するデータが入力された時に行全体を色付け

先ほどの手順と同様に、次は、全ての項目が一致するデータの数を求める数式を作成します。

その際は、以下のように、他の項目に対しての条件も「*」で加えます。

=SUM(($B$3:$B$20=B3)*($C$3:$C$20=C3)*($D$3:$D$20=D3)*($C$3:$C$20<>""))
// 色の反映に関しては商品名が入力されている前提とする:$C$3:$C$20<>""

こちらの数式を、先ほどと同じ手順で条件付き書式に設定していくのですが、今後は単体の列ではなく、表全体の列を色付けしたいです。
そのような際は、以下のように、数式の列の参照を固定する必要があります。

=SUM(($B$3:$B$20=$B3)*($C$3:$C$20=$C3)*($D$3:$D$20=$D3)*($C$3:$C$20<>""))

では、数式を条件付き書式に設定していきます。
上記の数式は、表の先頭行(3行目)を基準とした数式になります。
そのため、表の先頭行(3行目)を基準として表全体を選択します。

次に、[ホーム]タブの[条件付き書式]から[新しいルール]を選択し、[ルールの種類]を[数式を使用して書式設定するセルを決定]にして、表示されたテキストボックス内に、先ほどの数式を貼り付け、「1より大きい場合」という条件を加えます。
書式に関しても設定します。

=SUM(($B$3:$B$20=$B3)*($C$3:$C$20=$C3)*($D$3:$D$20=$D3)*($C$3:$C$20<>""))>1

上記の設定で確定することによって、全ての項目が一致するデータの行のみを自動で色付けすることができます。

2025/01/01
【Excel】直近の退会者を表から自動抽出

【Excel】直近の退会者を表から自動抽出

以下の左側の表は、会員一覧表になっており、各会員の加入日と退会日を記録しています。
この表の退会日が入力されている会員の中で、直近の退会者を右側の表に3件のみを自動で抽出する方法について解説していきます。


直近の退会者を自動抽出する流れ

直近の退会者を抽出する流れは、以下になります。

① 会員一覧表の退会日を基準に降順にする
② ①で降順にされた会員一覧表の先頭から3件を抽出する

では、上記の流れを数式で表現していきます。


① 会員一覧表の退会日を基準に降順にする

指定した表を指定した順番に並べ替えるには、『SORT関数』を活用します。
SORT関数の使い方は、以下になります。

=SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準])
// 指定した配列を指定した順序に並べ替えた表を返す
// 配列:対象の表
// [並べ替えインデックス]:対象の表の中の、対象の列(行)の、表の先頭からの列(行)番号 ※省略時は先頭列(行)
// [並べ替え順序]:1→昇順、-1→降順 ※省略時は昇順
// [並べ替え基準]:TRUE→列で並べ替え、FALSE→行で並べ替え ※省略時は行で並べ替え

実際に、右側の表の先頭に、左側の会員一覧表の退会日を降順にした表を抽出する場合、以下の数式になります。

=SORT(A3:D1000,4,-1)
// 表の範囲は大きめに指定

② ①で降順にされた会員一覧表の先頭から3件を抽出する

指定した表の先頭から指定した件数を抽出するには、『TAKE関数』を活用します。
TAKE関数の使い方は、以下になります。

=TAKE(配列, 行数, [列数])
// 指定した配列から指定した行数(列数)を抽出する
// 配列:対象の表
// 行数:抽出する行数(正の数:上から抽出、負の数:下から抽出)
// [列数]:抽出する列数(正の数:上から抽出、負の数:下から抽出)
// ※[列数]は省略可能、省略時は全ての列を抽出

TAKE関数の[配列]に、①の数式を指定し、[行数]に3件分の3を指定することで、以下のように抽出することができます。

=TAKE(SORT(A3:D1000,4,-1),3)

補足

表の範囲を「A3:D1000」などではなく、データの増減に対応した範囲にしたい場合は、会員一覧表をテーブルにすると良いです。
テーブルに変換することで、以下のように、構造化参照を活用して数式を作成することができ、データの増減に対応することができます。

=TAKE(SORT(会員一覧表,4,-1),3)
2024/12/30
【Excel】各シートのセルの値を一括抽出

【Excel】各シートのセルの値を一括抽出

以下のような、年月別で販売数をまとめたシートを複数用意しています。

各シートの合計販売数(セルC4)の値を、以下のような「全体」シートに、1つの数式のみで一括抽出する方法について解説していきます。


1つの数式のみで一括抽出する方法

複数の範囲の値を縦一列に抽出する場合、『VSTACK関数』を活用します。
VSTACK関数の使い方は、以下になります。

=VSTACK(配列1, [配列2], [配列3], …)
// 配列:対象の表(必要な数分、カンマ区切りで指定する)

シートが別々でも、各シートの同じ位置のセルに入力されている値の場合、簡単に参照することができます。
実際に、VSTACK関数を活用して一括で抽出する数式は、以下になります。

=VSTACK('202401:202412'!C4)

複数シートの範囲は「先頭のシート名:末尾のシート名!アドレス」で指定することができます。
「=VSTACK(」まで入力したら、先頭のシートタブを選択し、Shiftキーを押しながら末尾のシートタブを選択して、末尾のシートの対象のセルを選択することで「’202401:202412′!C4」というように入力することができます。
※シート名の前後の「’」は、シート名によっては自動で入力される場合があります。自動で入力されない場合は、そのままで問題ございません。

この数式を抽出先の先頭のセル(セルC3)に入力して確定することで、以下のように一括で抽出することができます。

2024/12/28
【便利】数式を自動で整形する機能

【便利】数式を自動で整形する機能

#ユーザーフォーム #HasFormula #Mid #If #Replace #ActiveSheet

YouTubeで開く

長い数式を自動で整形し、分析しやすくする機能の開発方法について解説しています。
こちらでは、数式のセルを選択し、機能を実行することで、整形した数式をフォームに表示するようにしています。

00:00 挨拶
00:23 完成イメージ
02:23 準備
02:48 作成(数式を表示するフォーム)
19:58 作成(フォーム呼び出し機能)
21:48 作成(アドイン)
24:27 クイックアクセスツールバーに登録
25:36 完成
26:43 プログラムの全体
31:06 プレゼントについて

▼準備ファイル▼

2024/12/27
【便利】必要なデータの必要な項目のみを瞬時にコピー

【便利】必要なデータの必要な項目のみを瞬時にコピー

#For #If #Selection #Application #Union #Copy

※サイト内の限定動画です。

表の中の必要なデータ(行)の必要な項目(列)のみを瞬時に選択し、コピーする機能の開発方法について解説しています。

こちらではVBAにより開発していますが、VBAを使いたくない場合は、以下のコンテンツが参考になります。
>不要な列(行)を除いて一括コピー

00:00 挨拶
00:58 完成イメージ
01:44 準備
02:09 作成(パターン1)
12:04 作成(パターン2)
13:24 作成(実行ボタン)
14:22 完成
14:58 プログラムの全体
18:03 まとめ

▼準備ファイル▼

2024/12/27
【ExcelVBA】複数シートの表を1つにまとめる

【ExcelVBA】複数シートの表を1つにまとめる

以下のように、複数シートの表(従業員別の1日の予定表)を、ボタンを押すだけで1つの表にまとめる機能の開発方法について解説していきます。

※こちらで開発したファイルは、記事の最後にて配布しています。


開発準備

まず初めに、[開発]タブを選択し、[マクロ]を選択します。

表示された以下の画面にて、開発する機能の名前を入力し、[作成]を選択します。
こちらでは、「getSchedule」と入力しています。

次に表示される以下の画面の「Sub ○○」から「End Sub」の間にコードを記述します。


コードの記述

以下のコードを記述します。

Sub getSchedule()
    
    Dim mWs As Worksheet
    Set mWs = Worksheets("全員")
    
    Dim ws As Worksheet
    Dim i As Long
    
    mWs.Range("B4:B33").ClearContents
    
    For i = 4 To 33
        For Each ws In Worksheets
            If ws.Name <> mWs.Name Then
                If ws.Cells(i, "B").Value <> "" Then
                    mWs.Cells(i, "B").Value = _
                        mWs.Cells(i, "B").Value & _
                        ws.Name & ":" & ws.Cells(i, "B").Value & vbLf
                End If
            End If
        Next ws
    Next i
    
End Sub

では、コードについて解説していきます。

    Dim mWs As Worksheet
    Set mWs = Worksheets("全員")

集約するシート情報を変数「mWs」に割り当てています。

    Dim ws As Worksheet
    Dim i As Long

繰り返し処理で扱う変数を定義しています。
変数「ws」は各シートを繰り返す際に活用し、変数「i」は各行を繰り返す際に活用します。

    For i = 4 To 33
        '処理
    Next i

Forでの予定表の先頭行から最終行までを繰り返しています。

        For Each ws In Worksheets
            If ws.Name <> mWs.Name Then
                '処理
            End If
        Next ws

繰り返し処理の内側のFor Eachでは、ブックに存在するシート1つ1つの情報を順番に変数「ws」に割り当てて、「全員」シート以外の場合に内側の処理を実行するように記述しています。

                If ws.Cells(i, "B").Value <> "" Then
                    mWs.Cells(i, "B").Value = _
                        mWs.Cells(i, "B").Value & _
                        ws.Name & ":" & ws.Cells(i, "B").Value & vbLf
                End If

最深部では、「全員」シート以外の各シートに対し、対象行(i)の予定の有無を確認しています。
先頭のIfで予定が存在しているかどうかを確認し、予定が存在している場合に、「全員」シートに追加するように記述しています。
「全員」シートに、元々の予定に加え、対象シート(ws)の対象行(i)の予定と改行(vbLf)を加えるように記述しています。


ボタンの作成

コードが完成しましたら、「全員」シートに実行用のボタンを用意します。
ボタンは、[開発]タブの中の[挿入]から作成することができます。


完成

以上の手順で、機能が完成します。
実行することで、以下のように、複数シートの予定の内容を「全員」シートにまとめて表示することができます。

▼サンプルファイル▼

2024/12/26
【便利】集計できる形に結合を解除する機能

【便利】集計できる形に結合を解除する機能

#セル結合 #アドイン #TypeName #Selection #MergeCells #MergeArea #UnMerge #Item

※サイト内の限定動画です。

セル結合されている範囲の結合を解除すると、先頭のセル以外の値が空白になります。
こちらの機能を開発することによって、結合解除時に空白のセルにも同じ値を設定することができます。
また、開発した機能を、アドインとしてExcelの標準機能に加える方法についても解説しています。

00:00 挨拶
00:58 完成イメージ
02:35 準備
03:02 作成(結合解除機能)
13:44 アドインの保存
14:56 アドインの設定
17:20 完成
19:15 プログラムの全体
21:31 まとめ

▼準備ファイル▼

2024/12/25
【Excel】一致データの先頭と末尾を抽出

【Excel】一致データの先頭と末尾を抽出

以下のように、指定した表の指定した項目の値が、指定した値と一致する先頭のデータと末尾のデータを抽出する方法について解説していきます。


抽出方法

抽出するには、『XLOOKUP関数』を活用します。
XLOOKUP関数の使い方は、以下になります。

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
// 検索範囲で検索値と一致した位置と同じ位置の戻り範囲のデータを抽出
// 検索値:検索対象の値
// 検索範囲:検索して位置情報を取得する範囲
// 戻り範囲:取得した位置情報から抽出する範囲
// [見つからない場合]:検索結果が存在しない場合に表示する値 ※省略時は「#N/A」になる
// [一致モード]:検索方法(0:完全一致、-1:以下、1:以上、2:ワイルドカード文字との一致)※省略時は「0:完全一致」が指定される
// [検索モード]:検索順序(1:先頭から末尾へ検索、-1:末尾から先頭へ検索、2:バイナリ検索(昇順で並べ替え)、-2:バイナリ検索(降順で並べ替え))※省略時は「1:先頭から末尾へ検索」が指定される

XLOOKUP関数の引数には「検索モード」が存在します。
この引数を指定することによって、「先頭から末尾へ検索」と「末尾から先頭へ検索」を切り替えることができます。
そのため、先頭のデータを抽出したい場合は、以下のように「検索モード」を「1」にすることで抽出できます。

=XLOOKUP(B3,B7:B21,C7:D21,"",0,1)
// 検索値:B3(商品名)
// 検索範囲:B7:B21(商品名の項目全体)
// 戻り範囲:C7:D21(価格と更新日の項目全体)
// 見つからない場合:""(何も表示しない)
// 一致モード:0(検索値と一致するデータを抽出)
// 検索モード:1(一致する先頭のデータを抽出)

末尾のデータを抽出したい場合は、以下のように「検索モード」を「-1」にすることで抽出できます。

=XLOOKUP(B3,B7:B21,C7:D21,"",0,-1)
// 検索値:B3(商品名)
// 検索範囲:B7:B21(商品名の項目全体)
// 戻り範囲:C7:D21(価格と更新日の項目全体)
// 見つからない場合:""(何も表示しない)
// 一致モード:0(検索値と一致するデータを抽出)
// 検索モード:-1(一致する先頭のデータを抽出)
2024/12/23
【Excel】重複を考慮した上位3件を抽出

【Excel】重複を考慮した上位3件を抽出

以下の画像の左側の「氏名と点数をまとめた表」から、右側の「上位3件を抽出した表」を数式で作成する方法について解説していきます。

また、今回の方法では、重複した点数が存在する場合、同順位と判断して抽出する仕組みになっています。


重複を除いた上位3件の点数を抽出する

まずは、重複を除いた上位3件の点数を抽出していきます。
そのためには、以下の3つの関数を活用します。

・UNIQUE関数:重複を除外する
・SORT関数:点数を並べ替える
・TAKE関数:指定した件数のみを表から抽出する

それぞれの関数の使い方は、以下になります。

=UNIQUE(配列, [列の比較], [回数指定])
// 指定した配列から重複を除いた表を返す
// 配列:対象のデータの範囲
// [列の比較]:データが列方向の場合(TRUE)、行方向の場合(FALSE[省略時])
// [回数指定]:重複していないデータのみを抽出する場合(TRUE)、重複を除いた全件を抽出する場合(FALSE[省略時])
=SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準])
// 指定した配列を指定した順序に並べ替えた表を返す
// 配列:対象の表
// [並べ替えインデックス]:対象の表の中の、対象の列(行)の、表の先頭からの列(行)番号 ※省略時は先頭列(行)
// [並べ替え順序]:1→昇順、-1→降順 ※省略時は昇順
// [並べ替え基準]:TRUE→列で並べ替え、FALSE→行で並べ替え ※省略時は行で並べ替え
=TAKE(配列, 行数, [列数])
// 指定した配列から指定した行数(列数)を抽出する
// 配列:対象の表
// 行数:抽出する行数(正の数:上から抽出、負の数:下から抽出)
// [列数]:抽出する列数(正の数:上から抽出、負の数:下から抽出)
// ※[列数]は省略可能、省略時は全ての列を抽出

これらの関数を組み合わせた上位3件の点数を抽出する数式は、以下になります。

=TAKE(SORT(UNIQUE(C3:C12),,-1),3)
// UNIQUE関数で重複を除いてからSORT関数で降順にし、TAKE関数で上位3件を抽出する

上位3件の点数と一致する氏名を抽出する

次に、上位3件の点数と一致する氏名を抽出していきます。
そのためには、以下の2つの関数を活用します。

・FILTER関数:指定した条件を満たすデータのみを抽出する
・TRANSPOSE関数:表を転置する(行と列を入れ替える)

それぞれの関数の使い方は、以下になります。

=FILTER(配列, 含む, [空の場合])
// 指定した配列から指定した条件を満たすデータのみを抽出する
// 配列:絞り込み対象の表
// 含む:絞り込み条件
// [空の場合]:条件を満たす対象のデータが見つからない時に表示する内容(省略時はエラーが表示される)
=TRANSPOSE(配列)
// 配列の行列を入れ替えた配列を返す
// 配列:転置対象の表

これらの関数を組み合わせた1位の氏名を抽出する数式は、以下になります。

=TRANSPOSE(FILTER($B$3:$B$12,$C$3:$C$12=F3))
// FILTER関数で指定した点数のデータを抽出してから、TRANSPOSE関数で横向きに転置する
// セルF3以外の参照範囲は固定のため「$」で絶対参照にする

後は、入力した数式を3位までコピーすることで、以下のように、氏名を抽出することができます。

2024/12/21
【番外-046】条件付き書式で行全体を色付け

【番外-046】条件付き書式で行全体を色付け

#TODAY #タスク #条件付き書式

YouTubeで開く

条件付き書式で特定のセルだけではなく行全体を色付けする方法について解説しています。

00:00 挨拶
00:26 解説の流れ
00:56 セル単体を色付け
05:01 行全体を色付け
09:31 応用
11:46 プレゼントについて

▼準備ファイル▼

2024/12/20
【ExcelVBA】簡単なマウス操作のみで販売数を入力

【ExcelVBA】簡単なマウス操作のみで販売数を入力

野外イベントなどで販売数を管理しながら受付業務を行う際、商品が購入される度、販売数の数値を直接入力するのは大変です。
そのため、こちらでは、特定の商品の販売数のセルをダブルクリックするだけで、その販売数に1を加えることができる機能を開発していきます。
また、何かしらの原因でデータが紛失しないように、販売数を加算する度、自動で保存される機能も加えていきます。

こちらでは、以下の商品ごとの販売数を管理した表を活用して開発していきます。

※こちらで開発したファイルは記事の最後にて配布しています。


開発準備

「特定のセルをダブルクリックすると同時に、何かしら処理を実行する」という仕組みは、該当するシートモジュールイベントプロシージャを活用することで実現できます。

シートモジュールは、該当するシートのタブ上で右クリックし、[コードの表示]を選択することで表示することができます。

選択すると、以下のエディタ画面(VBE)が表示されます。
また、該当するシートのシートモジュールが表示された状態になります。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。

次に、該当するシートのセルをダブルクリックすると同時に処理が実行される特殊なプロシージャ(イベントプロシージャ)を用意する必要があります。
そのためには、シートモジュールの左上のリストから「Worksheet」を選択します。

「Worksheet」を選択すると、自動で「Worksheet_SelectionChange」というプロシージャが表示されます。
このプロシージャは、該当するシート上のいずれかのセルが選択されると同時に処理が実行されるイベントプロシージャと呼ばれるものになります。

ただ、今回使用するイベントプロシージャは、セルがダブルクリックされると同時に処理が実行されるものになります。
そのため、右上のリストから「BeforeDoubleClick」を選択します。

表示された「Worksheet_BeforeDoubleClick」というプロシージャを活用します。
「Worksheet_SelectionChange」というプロシージャに関しては削除して問題ないです。


コードの記述

以下のコードを記述します。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    If Target.Column = 3 And _
        Target.Row >= 3 And _
        Target.Row <= 20 Then
        
        Cancel = True
        Target.Value = Target.Value + 1
        ThisWorkbook.Save
        
    End If
    
End Sub

では、コードについて解説していきます。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    If Target.Column = 3 And _
        Target.Row >= 3 And _
        Target.Row <= 20 Then

        '省略

    End If
    
End Sub

「Worksheet_BeforeDoubleClick」というプロシージャの引数の「Target」に、ダブルクリックされたセルの情報が渡されるため、そのセルの情報から、表の対象の範囲内がダブルクリックされたのかどうかを確認しています。
こちらでは、「3列目、尚且つ、3~20行目の間のセル」と販売数のセルの範囲内がダブルクリックされたかどうかを確認しています。

この条件を満たした場合に関してのみ、Ifの中の処理を実行します。

        Cancel = True
        Target.Value = Target.Value + 1
        ThisWorkbook.Save

セルをダブルクリックすると、通常、セルが編集モードになるのですが、引数の「Cancel」をTrueにすることで、編集モードにならなくなります。
その後、ダブルクリックされたセルの値に1を加えて、ブックを保存しています。

以上の内容で実現できます。
販売数のセルをダブルクリックすることで、ダブルクリックされたセルの値に1を加えて、ブックが保存されます。

▼サンプルファイル▼

2024/12/18
【Excel】数式1つ・関数1つで集計表を作成!?

【Excel】数式1つ・関数1つで集計表を作成!?

以下の左側の表から右側の集計表を作成するには、今までは、SUMIFS関数ピボットテーブルなどを活用する必要がありました。

しかし、2024年に登場した「GROUPBY関数」「PIVOTBY関数」を活用することで、1つの数式、尚且つ、1つの関数のみで集計表を作成することができるようになりました。
それぞれの関数について、簡単に解説していきます。

ExcelVBAレベル確認

GROUPBY関数とは

GROUPBY関数では、特定の項目をグループ化した集計表を作成することができます。
グループ単位で、合計や平均、最大値などといった集計を行うことができます。

以下の数式は、担当と商品ごとの売上と利益の合計を求めたものになります。

=GROUPBY(B2:C16,D2:E16,SUM)

※罫線は別途設定しています。

このように、GROUPBY関数では、指定した条件で集計した結果を列方向に展開することができます。
詳しい使い方については、以下の記事(動画)にて解説しています。

>GROUPBY関数の使い方


PIVOTBY関数とは

PIVOTBY関数では、特定の項目をグループ化したマトリックス形式の集計表を作成することができます。
グループ単位で、合計や平均、最大値などといった集計を行うことができます。

以下の数式は、日付と担当ごとの各商品の売上の合計を求めたものになります。

=PIVOTBY(A2:B16,C2:C16,D2:D16,SUM)

※罫線は別途設定しています。

このように、PIVOTBY関数では、GROUPBY関数とは異なり、指定した条件で集計した結果をマトリックス形式で展開することができます。
そのため、ピボットテーブルのような集計表を作成する際は、PIVOTBY関数を活用するのが良いです。
詳しい使い方については、以下の記事(動画)にて解説しています。

>PIVOTBY関数の使い方