Excel

【Excel】VBAマクロで時間計算(足し算、24時間以上、合計、日またぎ等)する方法

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事では、エクセルのVBAマクロで時間計算(足し算、24時間以上、合計、日またぎ等)する方法に、ついて解説していきます。

ポイントとしては、SumTime関数、AddTime関数、TotalHours関数を使用することです。

これらの関数により、時間の足し算、24時間以上の時間の取り扱い、日またぎの計算が可能となります。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名を少々変わった名称にしています。

そのため、ご活用の際には、適切な英語表記に変更してご利用ください。それでは詳しく見ていきましょう!

VBAマクロで時間計算(2列同士の足し算、24時間以内にも日またぎにも対応、c列に出力)する方法

それではまず、2列同士の足し算について解説していきます。

この処理では、Excelのセルに入力された時間を2列分足し合わせて、別の列に結果を出力する方法を学びます。


Sub SumTime()
    Dim kaishiGyou As Integer
    Dim saigoGyou As Integer
    Dim kekka As Double
    Dim jikan1 As Range, jikan2 As Range, jikanSum As Range
    
    kaishiGyou = 2
    saigoGyou = Cells(Rows.Count, 1).End(xlUp).Row
    Set jikanSum = Cells(saigoGyou + 1, 3)
    
    For i = kaishiGyou To saigoGyou
        Set jikan1 = Cells(i, 1)
        Set jikan2 = Cells(i, 2)
        kekka = TimeValue(jikan1.Text) + TimeValue(jikan2.Text)
        jikanSum.Value = jikanSum.Value + kekka
    Next i
End Sub

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面でSumTime関数を実行します。

このコードは、A列とB列の時間を合計してC列に出力するサンプルです。

kaishiGyou変数で開始行を、saigoGyou変数で最終行を定義し、Forループを使用して各行の時間を合計しています。

VBAマクロで時間計算(1列全ての合計、24時間以内にも日またぎにも対応、a列最終行の次に出力)

続いては、1列全ての時間の合計について解説していきます。

ここでは、a列に入力された時間データの合計を計算し、最終行の次に出力する方法を見ていきます。


Sub TotalHours()
    Dim tsukiGyou As Integer
    Dim keiJikan As Double
    Dim kuukan As Range
    
    tsukiGyou = Cells(Rows.Count, 1).End(xlUp).Row
    Set kuukan = Range("A2:A" & tsukiGyou)
    
    For Each cell In kuukan
        keiJikan = keiJikan + TimeValue(cell.Text)
    Next cell
    
    Cells(tsukiGyou + 1, 1).Value = keiJikan
End Sub

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。コードの

Alt+F8を押し、マクロ選択画面でTotalHours関数を実行します。

この関数では、a列の2行目から最終行までの時間を合計し、最終行の次にその合計時間を出力する処理を行います。

keiJikan変数で合計時間を保持し、For Eachループを使って各セルの時間を加算しています。

VBAマクロで時間計算(行方向に合計、全ての行、24時間以内にも日またぎにも対応、最終列の次に出力)

最後に、行方向の時間計算についてです。

各行における時間データを合計し、それを各行の最終列の次に出力する方法を学びます。


Sub AddTime()
    Dim gyou As Integer, retsu As Integer
    Dim keiJikanRow As Double
    Dim hako As Range
    
    gyou = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To gyou
        keiJikanRow = 0
        retsu = Cells(i, Columns.Count).End(xlToLeft).Column
        For j = 1 To retsu
            keiJikanRow = keiJikanRow + TimeValue(Cells(i, j).Text)
        Next j
        Cells(i, retsu + 1).Value = keiJikanRow
    Next i
End Sub

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面でAddTime関数を実行します。

このマクロは、各行の時間を合計して、その行の最終列の次に結果を出力します。

gyou変数で行数を、retsu変数で列数を取得し、2つのForループを使って時間の合計を計算しています。

まとめ VBAマクロで時間計算(日またぎ、24時間以上、合計など)する方法

この記事ではExcelVBAマクロで時間計算(足し算、24時間以上、合計、日またぎ等)する方法について解説しました。

これらの関数を使って、さまざまな時間計算を簡単に行うことができます。

また、サンプルコード内の変数名は、分かりやすさを優先して日本語のローマ字表記を使用していますが、実際の使用時には適切な英語の変数名に置き換えてください。

このガイドを参考に、Excel VBAを活用して時間計算の自動化を進めていただければ幸いです。