見出し画像

マスタに登録した略語があったら赤字にして正式名称を隣列にだすよ

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

このVBAコードは、Excelシート内で「略語」を検索し、略語が見つかった場合はその略語を赤字にし、隣の列にその略語の正式名称を表示するものです。また、略語がどのくらい使われたかの記録も管理します。


動作の仕組み:

  1. 略語マスタの読み込み
    「略語マスタ」という名前のシートにある略語と正式名称を、プログラムの中で使えるように配列に保存します。このシートでは以下の情報が必要です:

    • 列1: 略語

    • 列2: 正式名称

    • 列3: 使用回数(任意)

    • 列4: 最終使用日(任意)

  2. 略語の検索範囲設定
    操作対象のシート(現在アクティブなシート)のA列(2行目以降)を検索範囲として設定します。

  3. 略語の検索と書式設定
    検索範囲から略語を探し、以下を実行します:

    • 略語の文字を赤字にする(赤色のカラーインデックス:3)。

    • 略語の隣のセルに正式名称を記載する。複数の正式名称がある場合はカンマで区切って追記します。

    • マスタシートで該当略語の使用回数をカウントアップし、最終使用日を更新します。

  4. 処理の終了
    処理完了後に、メッセージボックスで「チェック完了!」と表示します。


使い方:

  1. 「略語マスタ」という名前のシートを用意し、略語と正式名称を入力しておきます。

  2. 略語が含まれるデータを対象のシート(A列)に配置します。

  3. このマクロを実行すると、自動的に略語が赤字になり、隣の列に正式名称が表示されます。


注意点:

  • このマクロを実行する前に「略語マスタ」シートと検索対象のシートが正しく設定されているか確認してください。

  • データ量が多い場合は処理に時間がかかることがあります。


参考リンク:

Sub マスタに登録した略語があったら赤字にして正式名称を隣列にだすよ()
    Application.ScreenUpdating = False
    
    'マスターを配列に保存する
    Dim wsm As Worksheet
    Set wsm = Worksheets("略語マスタ")
    Dim lastRow As Long, lastCol As Long
    lastRow = wsm.Cells(wsm.Rows.count, 1).End(xlUp).Row
    lastCol = wsm.Cells(1, wsm.Columns.count).End(xlToLeft).Column

    Dim Master As Variant
    'マスターのテーブル範囲を設定(見出し含まず)
    Master = wsm.Range(wsm.Cells(2, 1), wsm.Cells(lastRow, lastCol)).Value
    
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Activate
    
    '検索範囲を制限(列1、行2以降)
    Dim SearchRange As Range
    Set SearchRange = ws.Range("A2:A" & ws.Cells(ws.Rows.count, 1).End(xlUp).Row)
    

    Dim FoundCell As Range, FirstCell As Range
    Dim i As Long
    For i = LBound(Master) To UBound(Master)
            Dim i2 As Long
            Dim myStr As String

            Set FoundCell = SearchRange.Find(What:=Master(i, 1))
            
            If FoundCell Is Nothing Then
                GoTo L1
            Else
                Set FirstCell = FoundCell
            End If
                    'FoundCell.Value = Master(i, 2)
                    
                    For i2 = 1 To Len(FoundCell.Value)
                        myStr = Mid(FoundCell.Value, i2, Len(Master(i, 1)))
                        If myStr Like Master(i, 1) Then
                            With FoundCell.Characters(Start:=i2, Length:=Len(Master(i, 1))).Font
                                .ColorIndex = 3
                            End With
                        End If
                    Next i2
                    If FoundCell.Offset(0, 1) = "" Then
                        FoundCell.Offset(0, 1) = Master(i, 2)
                    Else
                        FoundCell.Offset(0, 1) = FoundCell.Offset(0, 1).Value & "," & Master(i, 2)
                    End If
                    Master(i, 3) = Master(i, 3) + 1
                    Master(i, 4) = Date
                    
            Do
                Set FoundCell = SearchRange.FindNext(FoundCell)
                If FoundCell Is Nothing Then
                    GoTo L1
                ElseIf FoundCell.Address = FirstCell.Address Then
                    GoTo L1
                End If
                For i2 = 1 To Len(FoundCell.Value)
                        myStr = Mid(FoundCell.Value, i2, Len(Master(i, 1)))
                        If myStr Like Master(i, 1) Then
                            With FoundCell.Characters(Start:=i2, Length:=Len(Master(i, 1))).Font
                                .ColorIndex = 3
                            End With
                        End If
                    Next i2
                    
                    If FoundCell.Offset(0, 1) = "" Then
                        FoundCell.Offset(0, 1) = Master(i, 2)
                    Else
                        FoundCell.Offset(0, 1) = FoundCell.Offset(0, 1).Value & "," & Master(i, 2)
                    End If
                    Master(i, 3) = Master(i, 3) + 1
                    Master(i, 4) = Date
            Loop

L1:
    Next i
    
    'マスタの上書き
    wsm.Range(wsm.Cells(2, 1), wsm.Cells(lastRow, lastCol)).Value = Master
    
    MsgBox "チェック完了!"
    Application.ScreenUpdating = True
End Sub

キーワード:

#excel #できること #vba #略語検索 #赤字設定 #正式名称 #配列 #検索範囲 #セルフォーマット #データ管理 #自動化 #検索機能 #カウントアップ #マクロ #効率化 #セル操作 #エラー処理 #色変更 #文字列検索


English Explanation:

Highlight Abbreviations in Red and Output Formal Names to the Adjacent Column

This explanation is created by ChatGPT.

This VBA code is designed to search for abbreviations in an Excel sheet. If an abbreviation is found, the code highlights it in red and displays its corresponding formal name in the adjacent column. Additionally, it tracks the usage count and the last usage date for each abbreviation.


How it works:

  1. Load the Abbreviation Master:
    The code reads a "Abbreviation Master" sheet containing abbreviations and their formal names into an array. The sheet structure includes:

    • Column 1: Abbreviation

    • Column 2: Formal Name

    • Column 3: Usage Count (optional)

    • Column 4: Last Used Date (optional)

  2. Define Search Range:
    It identifies the search range in column A (starting from row 2) of the currently active sheet.

  3. Search and Apply Formatting:
    For each abbreviation in the master:

    • Highlights the abbreviation in red text.

    • Adds its formal name to the adjacent cell. If there are multiple formal names, they are appended with a comma separator.

    • Updates the usage count and the last usage date in the master sheet.

  4. Completion Notification:
    After the operation, a message box displays "Check Complete!"


How to Use:

  1. Prepare the "Abbreviation Master" sheet with abbreviations and their formal names.

  2. Populate column A of the target sheet with data containing abbreviations.

  3. Run the macro to process the data. The abbreviations will be highlighted in red, and their formal names will appear in the adjacent column.


Notes:

  • Ensure the "Abbreviation Master" and the target sheet are properly set up before running the macro.

  • Processing time may increase for large datasets.


References:


Keywords: #excel #vba #automation #abbreviationsearch #redtext #formalname #array #searchrange #cellformat #datamanagement #automationtool #searchfeature #usagecount #macro #optimization #celloperation #errorhandling #textcolorchange #stringsearch

いいなと思ったら応援しよう!