見出し画像

Excel VBAで固定残業代の時間を隣の列に表示する方法

この説明は、ChatGPTで作成しています。


今回は、Excel VBAを使って、選択したセルの中から「h」(時間を表す記号)が含まれるテキストを探し、そのテキストを隣のセルに表示する方法をご紹介します。この方法を使えば、固定残業代の時間を示す「1h」や「12h」のようなテキストを自動的に抽出して隣のセルにコピーすることができます。

プロシージャの概要

以下のVBAコードを実行することで、選択したセルの内容をチェックし、時間を示すテキストを隣のセルに表示することができます。

Sub 固定残業代の時間だけを隣列にだすよ()
    Application.ScreenUpdating = False
    
    Dim reg As Object
    Set reg = CreateObject("VBScript.RegExp") 'オブジェクト作成
    Dim myRng As Range
    Dim txt As String
    Dim match As Object
    Dim i As Long
    
    With reg
        .Pattern = "\d{1,2}h"
        .IgnoreCase = True
        .Global = True
    End With
    
    On Error Resume Next
    For Each myRng In Selection
        txt = myRng.Value
        Set match = reg.Execute(txt)
        If match.Count > 0 Then
            myRng.Offset(0, 1).Value = match(0).Value ' マッチしたテキストを隣の列に出力
        End If
    Next myRng
    
    Application.ScreenUpdating = True
End Sub

仕組みの説明

  1. 画面の更新を停止

Application.ScreenUpdating = False

この部分は、処理中の画面のチラツキを防ぐために画面の更新を一時停止します。

2.正規表現オブジェクトの作成

Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")

ここでは、正規表現を使うためのオブジェクトを作成しています。正規表現とは、特定のパターンに一致する文字列を検索するための方法です。

3.正規表現のパターン設定

With reg
    .Pattern = "\d{1,2}h"
    .IgnoreCase = True
    .Global = True
End With

ここでは、「1桁または2桁の数字の後に 'h' が続く」パターンを設定しています。たとえば、「1h」や「12h」がこれに該当します。

4.エラー処理の設定

On Error Resume Next

万が一エラーが発生しても処理を続けるための設定です。

5.セルの内容を確認して隣のセルに出力

For Each myRng In Selection
    txt = myRng.Value
    Set match = reg.Execute(txt)
    If match.Count > 0 Then
        myRng.Offset(0, 1).Value = match(0).Value
    End If
Next myRng

選択したセルのそれぞれに対して、セルの内容(txt)から正規表現に一致するテキストを探します。そして、一致したテキストがあれば、それを隣のセルにコピーします。

6.画面の更新を再開

Application.ScreenUpdating = True

最後に、画面の更新を再開します。



Excel VBAを使えば、普段の業務を自動化して効率化することができます。今回の例のように、特定のパターンを見つけて別のセルにコピーする処理も簡単に行うことができます。ぜひ挑戦してみてください。

参考リンク

Excel VBA リファレンス | Microsoft Learn
この記事のYouTube動画

キーワード

#excel #できること #vba #固定残業代 #時間抽出 #隣のセル #テキスト検索 #正規表現 #セル操作 #データ処理 #自動化 #マクロ #VBA入門 #オブジェクト作成 #正規表現パターン #選択範囲 #エラー処理 #文字列操作 #画面更新 #オフセット




この記事が気に入ったらサポートをしてみませんか?