重複するテキスト値の削除(Microsoft Excel)
テキストエントリのリストから重複するエントリを削除する必要性に、誰もが一度に遭遇します。ワークシートの列Aにテキスト値があり、それらが約500行実行されているとします。リスト内の重複を削除したい場合は、それを行う最も簡単な方法を探している可能性があります。
手動で、データフィルタリングを使用して一意の値を決定できます。
列の上部にラベルが付いていることを確認してから、列のセルを選択します。データを選択|フィルター|詳細フィルター、またはExcel 2007では、リボンの[データ]タブを表示し、[並べ替えとフィルター]グループの[詳細]をクリックします。表示されるダイアログボックスのコントロールを使用して、指定した別の場所に一意の値をコピーすることを指定します。
数式を使用して、リスト内の重複を手動で判別することもできます。列の値を並べ替えてから、セル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("A65536").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 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トレーニングのソースです。
このヒント(2430)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link重複するテキスト値の削除。