見出し画像

重複している値があったら削除するよ

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

このマクロは、Excelで重複する値を取り除き、ユニークな値だけを一覧として出力するためのものです。以下に、このマクロの動きと仕組みを分かりやすく解説します。


1. どのシートを処理するか

  • このマクロは、実行時にアクティブになっているシート(現在作業中のシート)を対象とします。

  • ユーザーが他のシートに切り替えてから実行すると、そのシートのデータが処理されます。


2. データ範囲を自動的に把握

  • シート上でデータが入力されている最後の行と列を自動的に見つけます。

  • これにより、どこまでのデータが対象かをプログラムが自動で判断します。

  • 1行目(タイトル行)は処理の対象外です。2行目以降が操作されます。


3. 重複を取り除く方法

  • 全データを一度メモリ(配列)に読み込みます。

  • 次に、Collection という特別なオブジェクトを使って、重複しない値だけを収集します。

    • Collection は、同じ値を2回登録しようとするとエラーになる仕組みを利用しています。

    • この仕組みによって、同じ値を自動的に除外します。


4. データの出力

  • 元のデータ範囲は一度空にします。

  • その後、ユニークな値のみをA列の2行目から出力します。

  • 最終的に、重複がなくなったリストがシンプルに表示されます。


このマクロの実行例

例えば、シート内に「りんご」「バナナ」「りんご」「オレンジ」といったデータが含まれている場合、このマクロを実行すると、「りんご」「バナナ」「オレンジ」 のように、重複しないリストが作成されます。


仕組みのポイント

  • データの収集: 一度にすべてのデータを配列に読み込むので、高速に動作します。

  • エラーハンドリング: 重複の処理中にエラーが出てもマクロが止まらないように工夫されています。

  • 結果の書き戻し: 元データを消去して新しいリストを作るため、データがすっきりと整理されます。


リンク

Sub 重複している値があったら削除するよ()
    Application.ScreenUpdating = False

    ' アクティブシートを設定
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Activate

    ' 最終行と最終列を取得
    Dim lastRow As Long, lastCol As Long
    lastRow = ws.Cells(ws.Rows.count, 1).End(xlUp).row
    lastCol = ws.Cells(1, ws.Columns.count).End(xlToLeft).Column

    Dim table As Variant, table2() As Variant
    ' テーブル範囲を設定(見出し含めず)
    table = ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).Value
    
    ' ユニーク値を格納する配列を準備
    Dim dataCheck As Collection
    Dim i As Long, j As Long


    Set dataCheck = New Collection

    ' 重複しない値を収集
    On Error Resume Next
    For i = 1 To UBound(table, 1)
        For j = 1 To UBound(table, 2)
            If Len(table(i, j)) > 0 Then
                dataCheck.Add table(i, j), CStr(table(i, j))
            End If
        Next j
    Next i
    On Error GoTo 0

    ' Collection から配列に変換
    ReDim table2(1 To dataCheck.count, 1 To 1)
    For i = 1 To dataCheck.count
        table2(i, 1) = dataCheck(i)
    Next i

    ' もとの値を削除してから、結果をA2セルから出力
    ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).ClearContents
    ws.Range("A2").Resize(UBound(table2, 1), 1).Value = table2

    Application.ScreenUpdating = True
End Sub

関連するキーワード

#excel #できること #vba #ユニーク値 #重複削除 #配列処理 #エラー回避 #データ処理 #シート管理 #簡単操作 #自動化 #データ整理 #実行例 #初心者向け #スクリプト #高速処理 #リスト化 #メモリ管理 #効率化



Translation into English

Procedure Name: Remove Duplicate Values

This explanation is created with ChatGPT.

This macro removes duplicate values from an Excel sheet, leaving only unique ones as a clean list. Below is a clear explanation of how it works.


1. Target Sheet

  • The macro processes the active sheet (the one you're working on when running the macro).

  • If you switch sheets before running it, the macro works on that sheet.


2. Automatically Identifies Data Range

  • The macro finds the last row and column containing data.

  • This ensures the range to process is automatically determined.

  • Only data starting from the second row (excluding headers) is handled.


3. Removing Duplicates

  • All data is first loaded into memory (an array).

  • It uses a special object called Collection to store unique values.

    • The Collection object rejects duplicate entries by throwing an error, which the macro gracefully handles.

    • This automatically removes duplicate entries.


4. Outputting Results

  • The macro clears the original data range.

  • Then, it writes the unique values to column A, starting from the second row.

  • The result is a clean, duplicate-free list.


Example Execution

If your sheet contains data like "Apple," "Banana," "Apple," "Orange," the macro outputs "Apple," "Banana," "Orange" as a simplified, unique list.


Key Features

  • Data Collection: All data is processed in memory for faster execution.

  • Error Handling: The macro doesn't stop even if duplicate-related errors occur.

  • Output Overwrite: The original data is cleared, leaving a neat, new list.


Links


Related Keywords

#excel #tutorial #vba #uniquevalues #remove_duplicates #array_processing #error_handling #data_management #sheet_handling #easy_use #automation #data_cleanup #execution_example #beginner_friendly #script #fast_processing #list_creation #memory_management #efficiency

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