見出し画像

数字または区切られた数字だけを伏字にするよ

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

このプロシージャの概要

このプロシージャは、選択されたセル範囲の中から 数字やカンマで区切られた数字 を探して、見つけた数字を ●(黒丸) で伏せ字に置き換える仕組みです。

具体的な処理の流れ

  1. 画面更新の停止

    • 最初に `Application.ScreenUpdating = False` で画面更新を一時停止します。これにより、処理の途中で画面がチカチカするのを防ぎ、作業の効率を上げます。

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

    • `CreateObject("VBScript.RegExp")` によって、正規表現を使うためのオブジェクトを作成しています。このオブジェクトを使って、数字を探し出す仕組みを作ります。

  3. 正規表現の設定

    • `With reg` の部分で正規表現オブジェクトに対する設定を行っています。以下の内容です。

      • `.Pattern = "\b(?:\d{1,3}(?:,\d{3})*(?:.\d+)?|\d+(?:.\d+)?)\b"`

        • これは、セル内の 数字やカンマ付きの数字(例: 1,000 や 3.14) を見つけ出すためのパターンを指定しています。

      • `.IgnoreCase = True`:大小文字を区別しない設定ですが、今回は数字を探すので特に影響はありません。

      • `.Global = True`:該当するすべての数字を見つけるように設定しています。

  4. 選択範囲内のセルを1つずつ処理

    • `For Each myRng In Selection` で、選択されたセルの中から1つずつ処理を行います。

      • `txt = myRng.Value`:各セルの値を取得します。

      • `txt = reg.Replace(txt, "●")`:正規表現を使って、数字を ● に置き換えます。

      • `myRng.Value = txt`:置き換えた結果をセルに戻します。

  5. 画面更新の再開

    • 最後に `Application.ScreenUpdating = True` で画面の更新を再開します。

まとめ

このプロシージャを使うと、Excelの選択範囲にある数字を一瞬で伏字に変えることができます。たとえば、顧客リスト などの個人情報を伏せたいときにとても便利です。

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

Sub 数字または区切られた数字だけを伏字にするよ()
    Application.ScreenUpdating = False
    Dim reg
    Set reg = CreateObject("VBScript.RegExp")   'オブジェクト作成
    Dim myRng As Range
    Dim txt As String
    Dim i As Long
    With reg
        .Pattern = "\b(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?|\d+(?:\.\d+)?)\b"
        .IgnoreCase = True
        .Global = True
    End With
    On Error Resume Next
    For Each myRng In Selection
            txt = myRng.Value
            txt = reg.Replace(txt, "●")
            myRng.Value = txt
    Next myRng
    Application.ScreenUpdating = True
End Sub

ハッシュタグ

#excel #できること #vba #伏字 #正規表現 #数字の伏せ字 #オブジェクト作成 #正規表現オブジェクト #選択範囲 #テキスト置換 #カンマ区切り #パターンマッチング #VBScript #データマスク #マクロ #Excel自動化 #プライバシー保護 #データ処理 #セル操作 #文字列操作


Hide Only Numbers or Delimited Numbers

This explanation is created by ChatGPT.

Overview of this Procedure

This procedure searches for numbers or numbers delimited by commas within a selected cell range and replaces any found numbers with ● (black circles) as a form of masking.

Detailed Processing Flow

  1. Stop Screen Updating

    • Initially, `Application.ScreenUpdating = False` stops screen updating, preventing the screen from flickering and improving processing efficiency.

  2. Creating a Regular Expression Object

    • `CreateObject("VBScript.RegExp")` creates an object to use regular expressions, which enables searching for numbers.

  3. Setting Up the Regular Expression

    • Within the `With reg` block, settings are configured for the regular expression object:

      • `.Pattern = "\b(?:\d{1,3}(?:,\d{3})*(?:.\d+)?|\d+(?:.\d+)?)\b"` specifies a pattern to find numbers or comma-separated numbers (e.g., 1,000 or 3.14).

      • `.IgnoreCase = True`: This ignores case sensitivity, though it’s not relevant here as we are dealing with numbers.

      • `.Global = True`: Ensures all matching numbers are found.

  4. Processing Each Cell in the Selected Range

    • `For Each myRng In Selection` processes each selected cell:

      • `txt = myRng.Value` retrieves the cell value.

      • `txt = reg.Replace(txt, "●")` uses the regular expression to replace numbers with ●.

      • `myRng.Value = txt` places the modified value back into the cell.

  5. Resume Screen Updating

    • Finally, `Application.ScreenUpdating = True` restarts screen updating.

Summary

This procedure allows you to quickly mask numbers within a selected Excel range, which is especially useful for hiding sensitive data like customer lists.

Excel VBA Reference | Microsoft Learn
YouTube Video of This Article

Hashtags

#excel #capabilities #vba #masking #regex #numbermasking #objectcreation #regexobject #selectedrange #textreplacement #commadelimited #patternmatching #VBScript #datamasking #macro #excelautomation #privacyprotection #dataprocessing #celloperations #stringmanipulation

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