重複している値があったら削除するよ
この説明は、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