前回は顧客から送られてくるMicrosoft Excelの請求書テンプレートにPower Automateを使って自動的にデータ入力する方法を取り上げた。簡単なフローだが効果的なフローだ。これを知っているのと知っていないのとでは、業務の効率に大きな差が生まれる。

今回は売上データをMicrosoft Excelの表にまとめていく方法を説明する。こちらも業務に使える内容なので、ぜひ押さえておいてもらいたい。

POSなどの売上データをMicrosoft Excelの表にまとめる

店舗の売上データはPOSなどを介して自動的にサーバに集約される仕組みを採用していることが多いだろう。データ形式はさまざまだが、大抵はシンプルなCSVといったデータの形で交換が行われていると思う。たとえば次のようなCSVデータだ。

  • 売上データ CSVファイル

    売上データ CSVファイル

Microsoft ExcelでCSVデータを開くと、次のようになる。

  • 売上データ CSVファイル - Microsoft Excel

    売上データ CSVファイル - Microsoft Excel

店舗から集約された売上データは本部で集計して今後の仕入れや戦略変更などに反映することになる。今回からはこうした売上データを特定の報告用Microsoft Excelシートとして自動作成する方法を取り上げていく。

店舗売上データ表を自動的に作る基本的な考え方

今回の基本的な考えは次のとおりだ。

  1. POS売上データ(CSV)ファイルをMicrosoft Excelで開く
  2. Microsoft Excelでデータを実際に使う形に加工する
  3. Microsoft Excelでデータを実際のシートにはめ込んで行く

最初は物事を可能な限りシンプルにしておくとよい。上記の流れを処理する方法はいくつか考えられるが、最も簡単にできそうな方法として次の手順を取ることにする。

  1. POS売上データ(CSV)ファイルをMicrosoft Excelで開く
  2. POS売上データをコピーする
  3. データ整形用機能マクロを持ったMicrosoft Excelファイルを開く
  4. データ整形用機能マクロを持ったMicrosoft Excelデータに先ほどのデータを貼り付ける
  5. データ整形用機能マクロを持ったMicrosoft Excelデータで加工を実行する
  6. 出力用Microsoft Excelファイルを開く
  7. 出力用Microsoft Excelデータに整理した売上データを貼り付けていく

データを整形するVBAマクロを持ったMicrosoft Excelファイルを用意しておき、データの整形処理をそこで行うというのが今回のポイントになるだろう。

Power Automateは便利なアプリケーションだが、Microsoft Excelの操作をすべて自動化するといったことを無料のPower Automateのまま実現するのはかなり面倒なことになる。データ整理に関しては外部のプログラムを使うか、VBAマクロを使うなど、付属のプログラミング機能を使うほうが簡単だ。何事も使い分けが肝要だ

データを整理する機能を持ったMicrosoft Excelファイル

今回は簡単な例として、売上データを店舗と商品コードでソートする処理を整形処理とする。この処理はVBAマクロで記述できる。まず、次のように空のMicrosoft Excelファイルを作成する。

  • 生成処理用のMicrosoft Excelファイルを作成

    生成処理用のMicrosoft Excelファイルを作成

メニューから「表示」→「マクロ」→「作成」を選択してマクロを作っていく。ここでは「売上データソート1」という名前で、次のようなマクロを書いている。

  • マクロの作成

    マクロの作成

  • マクロの作成 Microsoft Visual Studio for Applications

    マクロの作成 Microsoft Visual Studio for Applications

Sub 売上データソート1()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    With ws.Sort
        With .SortFields
            .Clear
            .Add Key:=ws.Range("A1"), Order:=xlAscending
            .Add Key:=ws.Range("C1"), Order:=xlAscending
        End With
        .SetRange ws.Range("A1:F9999")
        .Header = xlYes
        .Apply
    End With
End Su

VBAマクロは本連載の趣旨ではないので説明は行わないが、上記のマクロでA1:F9999の範囲のデータを列1と列3で昇順にソートするといった内容になっている、ということだけ理解しておいていただきたい。必要になったら、そのときは今度はVBAの書き方を学び、使っていけばよいだけの話だ。

ローコードのPower Automateを取り上げておいて逆のことを言うようだが、現代においては複数のプログラミング言語はある程度必要になったらざっと調べて使えるくらいでないと、やっていくのが厳しい面があるのも事実だ。最終的には、Power Automateだけで終わるのではなく、ここを取っ掛かりにしてほかのプログラミングやマクロにも手を出していく、それが学習のステップとしてはよいんじゃないかと思う。