見出し画像

マスタに登録した誤字があったら赤字にして修正後を隣列にだすよ

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


このプロシージャは、Excelで作成した「誤字マスタ」に基づいて、指定したシートのデータをチェックし、登録された誤字が見つかった場合にその部分を赤色にして強調表示します。また、修正後の正しい文字列を誤字があったセルの隣の列に記載する処理も行います。以下は、このプロシージャの動作をわかりやすく説明します。


仕組みの概要

  1. 誤字マスタを読み込む

    • 「誤字マスタ」シートに登録された誤字リストを配列として読み込みます。

      • 例: 列Aに誤字、列Bに修正後の正しい文字が記載されています。

  2. 対象シートの検索範囲を設定

    • アクティブなシートの列A(行2以降)を検索対象として設定します。

  3. 誤字を検索して赤色に変更

    • 指定した範囲内で誤字マスタにある文字を検索し、見つかった場合は該当部分を赤色にします。

  4. 修正後の文字列を記載

    • 誤字が見つかったセルの隣の列に、修正後の文字列を追記します。もし複数の修正後文字列が必要な場合は、「,」で区切って記載します。

  5. マスタ情報を更新

    • 誤字が見つかるたびに「マスタ」の該当行に、発見回数と修正した日付を記録します。

  6. 完了メッセージの表示

    • 処理がすべて完了すると、「チェック完了!」というメッセージが表示されます。


特にポイントとなる部分

  • 赤字表示の仕組み

    • 誤字が見つかった箇所では、対象セルの該当部分のフォントカラーを変更して赤色にします。これにより、視覚的に分かりやすくなります。

  • 修正後文字列の記載

    • 誤字が見つかった場合、修正後の文字列をその右側のセルに記録します。同じセルに複数の修正内容を記載する際は、「,」で区切って追加されます。

  • マスタの更新

    • 誤字が検出されるたびに、対応する「誤字マスタ」のデータも更新します。これにより、何回その誤字が見つかったか、最後にいつ修正したかが記録されます。


使用例

  • 誤字マスタの内容例

    • 列A: 誤字例(例: 「テスト」)

    • 列B: 修正後(例: 「テストケース」)

  • 対象シートのデータ例

    • 列Aに「テスト」が含まれているセルがあれば、それが赤色になり、隣のセルに「テストケース」と記載されます。

  • 実行結果例

    • 列Aの「テスト」が赤色になり、列Bに「テストケース」が追加されます。


補足

  • このマクロを実行する前に、「誤字マスタ」シートが正しく作成されていることを確認してください。

  • 修正後の文字列が複数記載される場合は、後から編集しやすいように区切り文字に注意してください。


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 #誤字修正 #自動化 #エクセル #データチェック #フォント色変更 #赤色表示 #データ更新 #配列操作 #範囲設定 #セル検索 #Findメソッド #誤字検索 #修正自動記録 #チェック機能 #マスタ更新 #列操作


英訳版

Highlight Typos and Insert Corrections from Master List

This explanation is generated by ChatGPT.


This procedure scans the data in an Excel sheet based on a "typo master list" and highlights identified typos in red. It also inserts corrected text in the adjacent column. Here's a step-by-step explanation of its workings.


Overview of the Mechanism

  1. Load the Master List

    • Reads the typo list from the "Typo Master" sheet into an array.

      • Example: Column A contains typos, and Column B contains corrections.

  2. Set Search Range

    • Defines the range to search (column A, starting from row 2) in the active sheet.

  3. Find and Highlight Typos

    • Searches the specified range for typos from the master list and highlights the matching portions in red.

  4. Insert Corrected Text

    • Adds the corrected text to the cell adjacent to the typo. For multiple corrections, it appends them with a comma separator.

  5. Update Master List

    • For every detected typo, updates the master list with the occurrence count and the correction date.

  6. Completion Message

    • Once the operation is complete, displays a message: "Check complete!"


Key Points

  • Red Highlighting

    • The procedure modifies the font color of the detected typo, making it visually distinct.

  • Appending Corrections

    • Adds corrections to the cell to the right. Multiple corrections are separated by commas.

  • Master List Updates

    • Logs the number of times each typo was found and the last correction date in the master list.


Example Use Case

  • Master List Example

    • Column A: Typo (e.g., "test")

    • Column B: Correction (e.g., "test case")

  • Target Sheet Data Example

    • If column A contains "test," it will be highlighted in red, and "test case" will appear in the adjacent cell.

  • Execution Result Example

    • "test" in column A becomes red, and "test case" is added in column B.


Notes

  • Ensure the "Typo Master" sheet is properly prepared before running the macro.

  • Pay attention to the separator when appending multiple corrections for easier editing.



Hashtags

#excel #capabilities #vba #typo_correction #automation #excel_sheet #data_check #font_color_change #highlight_red #data_update #array_operations #range_selection #cell_search #find_method #typo_search #auto_record_corrections #checking_function #master_list_update #column_operations

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