▶店舗運営管理室

[シリーズ:ChatGPTを使ってExcelフル活用]②ピポットテーブルを使うより集計作業が劇的に時短!?

▶店舗運営管理室

この記事を読んでほしい人
□簡単な関数なら普段から使っている人
□ピポットテーブルを何度か使った事ある人
□人とは違う仮説検証をしたい人
□一般的な営業管理データが物足りない人
□分析資料は自分で作りたい人
□VBAやマクロに何度か挫折した人
□ChatGPTの普段使いにチャレンジしたい人

これまで店舗の売上や商品の出数を分析する際に、Excelで表やグラフを作っていました。
でも少し複雑な集計をしたい時や、大量のデータを分析する時には関数を使ったり、Excelに詳しい同僚に頼る事が常でした。

しかし、ChatGPTを活用すると
①関数(SUM、AVERAGEなど)の知識不要
②手作業に比べると圧倒的に時短

手作業とChatGPTでどれぐらいの時短効果があるかを検証してみました。

1.調査の概要

今回は「ピポットテーブルを使うよりChatGPT活用で集計作業が劇的に時短!?」を検証してみました。

2.調査に使う分析作業

1)分析の目的

滞在時間と一組当りの人数に何らかの関係があるかを調査してみる。
予約の取り方や料理提供のタイミングについて考える上での参考資料にしてみようと考えた。

2)分析に使う元データ

1)単価が5,000円を超えるディナーレストラン
2)リクルートのAirPAYという決済サービスを利用しているお店
3)決済サービスから1ヵ月分の会計情報をダウンロードして
4)「来店日」「来店時間」「会計時間」「人数(一組当り)」を抽出

※ただしデータは知人からお預かりしたものをベースにしながらも記事用に加工したものを使用しています。

疑問と仮説

①5,000円を超える単価のディナーレストランの平均滞在時間は?
 →何となく平均が2時間と言う認識だけど…

②組人数によって滞在時間に違いはでるの?
 →大人数の方がお酒が進んで滞在時間が伸びるのでは!?

3)分析のために作りたいデータ

▼現状のシート

▼①「会計時間」から「来店時間」を差し引いて「滞在時間」を求めたい。


▼②組人数ごとに滞在時間の平均値を求めたい。

4)VBAコードの生成を指示

指示

ExcelのVBAコード生成に関する要求

##現在の状況:
・「抽出」という名前のシートに飲食店の顧客来店情報をまとめた表があります。
・表の詳細は以下の通りです。
 ・行1: タイトル行
 ・データ範囲: A2:D496
 ・例:
  A列「来店日」
  B列「来店時間」
  C列「会計時間」
  D列「人数」…など。

##マクロの要求:
①「抽出」シートのE列に「滞在時間」という新しい列を作成します。C列「会計時間」からB列「来店時間」を引いた結果を「h:mm:ss」形式で出力してください。
②「集計結果」という新しいシートを作成します。A1セルには「組人数」というタイトルを入力します。A2セルから始まる列には、「抽出」シートのD列「人数」から重複する値を除外した一意のリストを昇順で生成してください。
③「集計結果」シートのB1セルには「平均滞在時間」というタイトルを入力します。A列「組人数」に対応する「抽出」シートの「人数」の行の「滞在時間」の平均値をB列に「h:mm:ss」形式で出力してください。

##制約条件:
なし

5)生成されたVBAコード

返答

Sub CalculateData()

Dim wsExtract As Worksheet
Dim wsSummary As Worksheet
Dim LastRow As Long
Dim UniqueNumbers As Collection
Dim Num As Range, Cell As Range
Dim SumTimes As Double, CountTimes As Double

' シートを定義
Set wsExtract = ThisWorkbook.Sheets("抽出")

' ①「抽出」シートのE列に「滞在時間」を計算
wsExtract.Range("E1").Value = "滞在時間"
LastRow = wsExtract.Cells(wsExtract.Rows.Count, "A").End(xlUp).Row
For Each Cell In wsExtract.Range("E2:E" & LastRow)
    Cell.Value = Cell.Offset(0, -2).Value - Cell.Offset(0, -3).Value
    Cell.NumberFormat = "h:mm:ss"
Next Cell

' ②「集計結果」シートの作成とA列に「組人数」の一意のリストを生成
On Error Resume Next
Set wsSummary = ThisWorkbook.Sheets("集計結果")
On Error GoTo 0
If wsSummary Is Nothing Then
    Set wsSummary = ThisWorkbook.Sheets.Add(After:=wsExtract)
    wsSummary.Name = "集計結果"
End If

wsSummary.Cells.Clear
wsSummary.Range("A1").Value = "組人数"
Set UniqueNumbers = New Collection

On Error Resume Next
For Each Cell In wsExtract.Range("D2:D" & LastRow)
    UniqueNumbers.Add Cell.Value, CStr(Cell.Value)
Next Cell
On Error GoTo 0

Dim i As Long
i = 2
For Each Num In UniqueNumbers
    wsSummary.Cells(i, 1).Value = Num
    i = i + 1
Next Num

' ③「集計結果」シートのB1セルに「平均滞在時間」を計算
wsSummary.Range("B1").Value = "平均滞在時間"
LastRow = wsSummary.Cells(wsSummary.Rows.Count, "A").End(xlUp).Row
For Each Cell In wsSummary.Range("A2:A" & LastRow)
    SumTimes = 0
    CountTimes = 0
    For Each Num In wsExtract.Range("D2:D" & wsExtract.Cells(wsExtract.Rows.Count, "D").End(xlUp).Row)
        If Cell.Value = Num.Value Then
            SumTimes = SumTimes + Num.Offset(0, 1).Value
            CountTimes = CountTimes + 1
        End If
    Next Num
    If CountTimes > 0 Then
        Cell.Offset(0, 1).Value = SumTimes / CountTimes
        Cell.Offset(0, 1).NumberFormat = "h:mm:ss"
    End If
Next Cell

End Sub

6)分析の結果

平均滞在時間は2時間ぐらいだろうと仮説を立てましたが、検証した結果は1時間37分。
もう一つ、組人数が多くなればなるほど滞在時間は伸びるだろうと仮説を立てましたが、その通り明らかに組人数が増えるほど滞在時間が伸びました。

営業改善に活かすなら
・団体の来店組の滞在時間が伸びるのは追加オーダーなどによる料理提供の遅れが原因で、その結果席の稼働率が落ちているという事であれば、料理提供の方法を変更する事もあります。
・逆に一組2名の滞在時間が短いのはチャンスロスが発生している可能性もあり、滞在時間を延ばして単価アップするための商品開発を検討すること考えられると思います。

数字だけなので、営業改善策もあくまで仮説ですが。

3.分析作業の時短効果を検証

①手作業で列の追加や滞在時間の計算をした後で「ピポットテーブル」を活用して集計表を作るのに1分02秒かかりました。

②VBAコードを貼り付けるだけだし、計算も単純なので16秒で表は完成しました。

これもたかだか1分02秒が16秒になっただけ。自信満々に時短効果があったといえるほどの事でもない。

仮にこの作業を毎日1回を1ヵ月やるとすれば、1回あたり46秒、30回にすると23分の違い。

う~ん。これもそれほどインパクトはない。

しかし前回の作業と併せると①手作業は合計2分01秒、②は57秒でも実質的に手を動かしていたのは15秒程度。その差は1分46秒。30回やると53分。10人がその仕事をしていたとすれば30日で8.3時間の時間削減。

時短効果が少しだけ実感をもてるボリュームになってきました。

次回はもう少し複雑な作業で検証してみます。

4.まとめ

少しChatGPTにExcelのVBAコード生成を要求するプロンプトの書き方が慣れてきました。

もう少し複雑な事もまとめて自動でExcelに作業してもらえるようなVBAコードも書いてもらえそうなので、次回はもっと実践的で手作業では時間がかかり過ぎるようなテーマで記事を書いてみたいと思います。

タイトルとURLをコピーしました