見出し画像

試用期間の月数だけ隣列にだすよ

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

このVBAプロシージャは、選択範囲内のセルの値から「〇ヶ月」という形式のテキストを探し、それを隣の列に表示するものです。

  1. 画面更新の停止
    プロシージャの最初で、Application.ScreenUpdating = False を使用して画面の更新を一時的に停止します。これは処理速度を向上させるためです。

Application.ScreenUpdating = False

2. 正規表現オブジェクトの作成
CreateObject("VBScript.RegExp") を使って、正規表現オブジェクトを作成します。このオブジェクトはテキスト内のパターンマッチングに使います。

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

3.正規表現パターンの設定
With reg ブロック内で、検索するパターンを設定します。ここでは、1~2桁の数字に続く「ヶ月」を探すパターンを設定しています(`\d{1,2}ヶ月`)。

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

4. エラーハンドリング
On Error Resume Next でエラーが発生しても次の行を実行するように設定します。

On Error Resume Next

5. 選択範囲の各セルに対する処理
For Eachループを使用して、選択範囲内の各セルに対して以下の処理を行います。

  • セルの値を取得し、txt に代入。

  • reg.Execute(txt) を使って、正規表現に一致する部分を探します。

  • 一致する部分があれば、Offset(0, 1).Value を使って、隣の列にその値を出力します。

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

6. 画面更新の再開
最後に、Application.ScreenUpdating = True を使って画面の更新を再開します。

Application.ScreenUpdating = True


このプロシージャを実行することで、例えば「試用期間は3ヶ月です」と書かれたセルがある場合、隣の列に「3ヶ月」が表示されます。

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


Sub Output Trial Period Months to Adjacent Column

This explanation is created by ChatGPT.

This VBA procedure searches for text in the selected cells that match the pattern "XX months" and outputs that text to the adjacent column.

  1. Stop Screen Updating
    At the beginning of the procedure, Application.ScreenUpdating = False is used to temporarily stop screen updating. This improves processing speed.

Application.ScreenUpdating = False

2. Create Regular Expression Object
CreateObject("VBScript.RegExp") creates a regular expression object. This object is used for pattern matching within text.

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

3. Set Regular Expression Pattern
Inside the With reg block, the search pattern is set. Here, the pattern looks for 1-2 digit numbers followed by "months" (`\d{1,2}ヶ月`).

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

4. Error Handling
On Error Resume Next ensures that the code continues to execute even if an error occurs.

On Error Resume Next

5. Process Each Cell in the Selection
Using a For Each loop, the code processes each cell in the selected range:

  • Retrieves the cell's value and assigns it to txt.

  • Uses reg.Execute(txt) to find matches for the regular expression pattern.

  • If matches are found, Offset(0, 1).Value outputs the matched text to the adjacent column.

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

6.Resume Screen Updating
Finally, Application.ScreenUpdating = True resumes screen updating.

Application.ScreenUpdating = True



When this procedure is run, for example, if a cell contains "試用期間は3ヶ月です", "3ヶ月" will be displayed in the adjacent column.

Excel VBA Reference | Microsoft Learn
YouTube Video of This Article


文字数: 791


キーワード:
#excel #できること #vba #正規表現 #選択範囲 #パターンマッチング #セルの値 #隣の列 #画面更新 #処理速度 #オブジェクト作成 #エラーハンドリング #テキスト検索 #パターン設定 #VBAプロシージャ #エクセル操作 #プログラミング初心者 #自動化 #業務効率化 #データ処理

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