Excel VBAを使った日次Webサイト訪問者集計方法

この記事では、Excel VBAを用いて日次のWebサイト訪問者を集計する方法について詳しく説明します。初心者から中級者向けの内容として、基本的なコードから応用例までを取り扱います。日次集計だけでなく、月次や年次での集計方法への発展も視野に入れています。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本の日次訪問者数集計コード

Excel VBAを利用して日次の訪問者数を集計する基本的なコードを以下に示します。


Sub DailyVisitors()
    Dim LastRow As Long
    Dim CountVisitors As Long
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Sheets("訪問者データ")
    
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    CountVisitors = Application.WorksheetFunction.CountIf(ws.Range("A1:A" & LastRow), Date)
    
    MsgBox "今日の訪問者数: " & CountVisitors & "人"
End Sub

コードの詳細解説

このコードは、”訪問者データ”という名前のワークシートに記録された日付データから、今日の日付に一致するデータの数(訪問者数)を集計します。

1. **Dim**を使用して変数を宣言します。
2. **ThisWorkbook.Sheets(“訪問者データ”)** で集計対象となるワークシートを指定しています。
3. **LastRow** は最後の行の番号を取得しています。
4. **CountVisitors** は、今日の日付に一致するデータの数を集計しています。
5. **MsgBox** で今日の訪問者数をメッセージボックスで表示しています。

応用例

以下は、基本のコードを発展させた応用例を3つ紹介します。

応用例1:月次集計


Sub MonthlyVisitors()
    Dim LastRow As Long
    Dim CountVisitors As Long
    Dim ws As Worksheet
    Dim StartDate As Date, EndDate As Date
    
    Set ws = ThisWorkbook.Sheets("訪問者データ")
    StartDate = DateSerial(Year(Date), Month(Date), 1)
    EndDate = DateSerial(Year(Date), Month(Date) + 1, 0)
    
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    CountVisitors = Application.WorksheetFunction.CountIfs(ws.Range("A1:A" & LastRow), ">=" & StartDate, ws.Range("A1:A" & LastRow), "<=" & EndDate)
    
    MsgBox "今月の訪問者数: " & CountVisitors & "人"
End Sub

応用例2:期間指定による集計


Sub PeriodVisitors(StartDate As Date, EndDate As Date)
    Dim LastRow As Long
    Dim CountVisitors As Long
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Sheets("訪問者データ")
    
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    CountVisitors = Application.WorksheetFunction.CountIfs(ws.Range("A1:A" & LastRow), ">=" & StartDate, ws.Range("A1:A" & LastRow), "<=" & EndDate)
    
    MsgBox StartDate & " から " & EndDate & " までの訪問者数: " & CountVisitors & "人"
End Sub

応用例3:特定のリファラーからの訪問者集計


Sub ReferralVisitors(Referral As String)
    Dim LastRow As Long
    Dim CountVisitors As Long
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Sheets("訪問者データ")
    
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    CountVisitors = Application.WorksheetFunction.CountIf(ws.Range("B1:B" & LastRow), Referral)
    
    MsgBox Referral & "からの訪問者数: " & CountVisitors & "人"
End Sub

まとめ

Excel VBAを利用して、日次、月次、期間指定、特定のリファラーからの訪問者数を簡単に集計することができます。これを基に、さらに高度なデータ分析や集計をVBAで行うことができます。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次