【Excel VBAで売上分析】売上金額が低い時の状況把握と推移グラフ化の方法

 

「なんだか今月、売上が低い気がする…」


そんなモヤモヤを感じたとき、なんとなくの感覚だけで判断するのではなく、データを使って冷静に状況を把握することが大切です。

 

この記事では、売上金額が低いと感じたときに、まず“事実”を見える化するためのExcel分析方法をご紹介します。

 

売上金額が低い状況をデータで見える化するための準備

 

まずは、売上の状況を視覚化できるようにする準備から始めましょう。エクセルで分析するには、元となる売上データが必要です。

 

■ 売上データCSVファイルについて

 

売上データは、たとえば以下のようなCSV形式で出力されていることが多いです。

 

売上データCSVファイル

 

 

 

 

このようなCSVファイルをExcelに読み込めば、日付ごとの売上推移の売上状況を視覚的に把握できます。

 

Excel VBAで売上分析を行う方法|フォーム作成から集計・グラフ化まで

 

次に、実際にどのように分析を進めていくのかを解説します。

 

1. 準備した売上データCSVをExcelbookに保存

2. Excelbookの売上データを元に必要な項目を集計

3. 売上集計したシートをもとに日別売上推移をグラフ化

 

たったこれだけで、どの日に売上が低かったのか、逆に高かったのかが一目でわかるようになります。

 

■ フォーム作成手順

売上分析Ver01エクセルVBAのフォーム

 

■ 売上データから必要項目を自動集計する

 

売上集計元データ

■ 集計データを基に日別売上推移をグラフ化する手順

売上集計シート

 

グラフ日別売上推移

この日別売上推移グラフをチェックすれば、どの日に売上が前年同日より低かったのか、状況がすぐにわかります。

 

【コピペOK】売上分析に使えるExcel VBAコード

 

エクセルVBAで自動化したい場合、以下のコードで日別売上の集計グラフを作ることが可能です。

 

ThisWorkbookモジュール用コード

 

  1. Option Explicit
  2. Private Sub Workbook_Open()
  3.     UserForm1.Show vbModeless ' モーダルエラーを回避
  4. End Sub

 

フォームモジュール用コード

 

  1. Option Explicit
  2. Private Sub UserForm_Initialize()
  3.     ' フォーム初期化時にウィンドウを最小化し、フォームを前面に出す
  4.     Application.WindowState = xlMinimized
  5.     Me.Show vbModeless
  6. End Sub
  7. Private Sub btnSelectCSVFolder_Click()
  8.     Dim fldr As FileDialog
  9.     Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
  10.     
  11.     If fldr.Show = -1 Then
  12.         txtCSVFolder.Value = fldr.SelectedItems(1)
  13.     End If
  14. End Sub
  15. Private Sub btnSelectOutputFolder_Click()
  16.     Dim fldr As FileDialog
  17.     Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
  18.     
  19.     If fldr.Show = -1 Then
  20.         txtOutputFolder.Value = fldr.SelectedItems(1)
  21.     End If
  22. End Sub
  23. Private Sub btnImportCSV_Click()
  24.     If txtCSVFolder.Value = "" Then
  25.         MsgBox "CSVフォルダを指定してください。", vbExclamation
  26.         Exit Sub
  27.     End If
  28.     If Not IsDate(txtStartDate.Value) Or Not IsDate(txtEndDate.Value) Then
  29.         MsgBox "日付を正しく入力してください。(例:2024/02/01)", vbExclamation
  30.         Exit Sub
  31.     End If
  32.     Dim startDate As Date, endDate As Date
  33.     startDate = CDate(txtStartDate.Value)
  34.     endDate = CDate(txtEndDate.Value)
  35.     If startDate > endDate Then
  36.         MsgBox "開始日は終了日より前にしてください。", vbExclamation
  37.         Exit Sub
  38.     End If
  39.     
  40.     Call ImportCSVData(txtCSVFolder.Value, startDate, endDate)
  41.     ' フォームを前面に戻す
  42.     Me.Hide
  43.     Application.WindowState = xlMinimized
  44.     Me.Show vbModeless
  45. End Sub
  46. Private Sub btnRun_Click()
  47.     If txtOutputFolder.Value = "" Then
  48.         MsgBox "保存先フォルダを指定してください。", vbExclamation
  49.         Exit Sub
  50.     End If
  51.     
  52.     Dim startDate As Date, endDate As Date
  53.     startDate = CDate(txtStartDate.Value)
  54.     endDate = CDate(txtEndDate.Value)
  55.     
  56.     Call GenerateReport(txtOutputFolder.Value, startDate, endDate)
  57.     
  58.     ' フォームを前面に戻す
  59.     Me.Hide
  60.     Application.WindowState = xlMinimized
  61.     Me.Show vbModeless
  62. End Sub
  63. Private Sub btnClose_Click()
  64.     ThisWorkbook.Save
  65.     Application.Quit
  66. End Sub

 

標準モジュール用コード

 

ご好評をいただいております。下記コンテンツは2026年6月末まで期間限定価格となっております。はじめてご利用の方は、事前にこちらを確認ください。 (2026年6月末までの通常価格600円⇒半額のプレミアム価格: 300円(税込)でご利用いただけます)

有名なブログサービス「はてなブログ」も、コンテンツ販売サービスの「codoc」と連携しています。安心してご利用ください。※vba-navサイトでユーザー様のクレジットなどの決済情報は一切管理していません。

また、オンライン購入する際、個人情報の入力に不安を感じる人も、安心して購入できるコンビニ決済が使えます。