重複するテキスト値の削除(Microsoft Excel)
テキストエントリのリストから重複するエントリを削除する必要性に、誰もが一度に遭遇します。ワークシートの列Aにテキスト値があり、それらが約500行実行されているとします。リスト内の重複を削除したい場合は、それを行う最も簡単な方法を探している可能性があります。実際、Excelでこのタスクを実行する方法は複数あります。
重複削除ツールの使用
おそらく最も簡単な方法は、重複を削除するデータを選択してから、リボンの[データ]タブを表示することです。 [データツール]グループの[重複の削除]ツールをクリックします。 Excelは、[重複の削除]ダイアログボックスを表示します。
[重複の削除]ダイアログボックスの優れている点は、データの各列の名前が一覧表示されることです。 (このツールは、データの最初の行に見出しラベルがあることを前提としています。)次に、重複をチェックする各列の横にチェックマークがあることを確認できます。 [OK]ボタンをクリックすると、データが分析され、重複する行が削除されます。 (ここでも、重複は、[重複の削除]ダイアログボックスで選択した列に基づいて決定されます。)
データフィルタリングの使用
別の手動の方法は、データフィルタリングを使用して一意の値を決定することです。列の上部にラベルが付いていることを確認してから、列のセルを選択します。リボンの[データ]タブを表示し、[並べ替えとフィルター]グループの[詳細]をクリックします。表示されるダイアログボックスのコントロールを使用して、指定した別の場所に一意の値をコピーすることを指定します。
数式の使用
数式を使用して、リスト内の重複を手動で判別することもできます。列の値を並べ替えてから、セルB2に次の数式を入力します。
=IF(A2=A1,"Duplicate","")
列Aに対応する値を持つ列Bのすべてのセルに数式をコピーします。列Bのすべての値を選択し、Ctrl + Cを押します。 [形式を選択して貼り付け]を使用して、選択した同じセルに値だけを貼り付けます。これで、数式が結果に変換されました。
列Bの内容に従って2つの列を並べ替えると、重複するすべての行が1つの領域に配置されます。これらの行を削除すると、一意の値のリストが完成します。
マクロの使用
手動によるアプローチは高速で簡単ですが、列から重複する値を定期的に削除する必要がある場合は、マクロの方が適している場合があります。
次のマクロは、以前の手動による方法と同様に、データフィルタリングに依存しています。
Sub CreateUniqueList() Dim rData As Range Dim rTemp As Range Set rData = Range(Range("a1"), Range("A1048576").End(xlUp)) rData.EntireColumn.Insert Set rTemp = rData.Offset(0, -1) rData.AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=rTemp, _ Unique:=True rTemp.EntireColumn.Copy _ rData.EntireColumn Application.CutCopyMode = False rTemp.EntireColumn.Delete Set rData = Nothing Set rTemp = Nothing End Sub
マクロは一時列を作成し、高度なフィルタリングを使用して一意の値をその列にコピーしてから、元のデータ列を削除します。
結果は列Aの一意の値になります。マクロでExcelのデータフィルタリング機能を使用したくない場合は、次のはるかに短いマクロでうまくいきます。
Sub RemoveDups() Dim rData As Range Set rData = Range(Range("a1"), Range("A1048576").End(xlUp)) rData.RemoveDuplicates Columns:=Array(1), Header:=xlYes End Sub
このマクロの鍵は、RemoveDuplicatesメソッドを使用することです。このメソッドは、重複をチェックする列番号を含む配列に依存しています。ここに示すマクロは、列Aの内容に対してのみ機能しますが、複数の列のデータを処理するように簡単に変更できます。より大きなデータ領域を表すようにrDataを変更してから、チェックする列を指すようにcolumnsパラメーターを変更するだけです。
rData.RemoveDuplicates Columns:=Array(1,4), Header:=xlYes
別のマクロベースのアプローチは、次の方法でデータセットの値をチェックする独自のコードを開発することです。
Sub DelDups() Dim rngSrc As Range Dim NumRows As Integer Dim ThisRow As Integer Dim ThatRow As Integer Dim ThisCol As Integer Dim J As Integer, K As Integer Application.ScreenUpdating = False Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc.Column 'Start wiping out duplicates For J = ThisRow To (ThatRow - 1) If Cells(J, ThisCol) > "" Then For K = (J + 1) To ThatRow If Cells(J, ThisCol) = Cells(K, ThisCol) Then Cells(K, ThisCol) = "" End If Next K End If Next J 'Remove cells that are empty For J = ThatRow To ThisRow Step -1 If Cells(J, ThisCol) = "" Then Cells(J, ThisCol).Delete xlShiftUp End If Next J Application.ScreenUpdating = True End Sub
マクロは、呼び出す前に行った選択に対して機能します。したがって、範囲A2:A974から重複セルを削除する必要がある場合は、その範囲を選択してからマクロを実行するだけです。マクロが完了すると、空白のセルと同様に、重複するセルが削除されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(12711)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link重複するテキスト値の削除。