部分一致に基づく重複の削除(Microsoft Excel)
Farrisには、アドレスを含むワークシートがあります。一部の住所は同じに非常に近いため、番地は同じで、住所のスイート番号部分のみが異なります。たとえば、1つの行のアドレスが「85Seymour Street、Suite 101」で、別の行のアドレスが「85 Seymour Street、Suite412」の場合があります。 Farrisは、住所のリスト内の重複を、住所のみに基づいてスイート番号を無視して、部分一致に基づいて削除する方法を考えています。
最も簡単な解決策は、スイート番号が独自の列に含まれるように、アドレスをさらに別々の列に分割することです。次の手順でこれを行うことができます:
。アドレス列の右側に空白の列があることを確認してください。
。アドレスを含むセルを選択します。
。リボンの[データ]タブを表示します。
。 [データツール]グループの[テキストから列へ]ツールをクリックします。 Excelは、テキストを列に変換ウィザードを開始します。 (図1を参照)
。ウィザードの最初のステップで、[区切り]オプションが選択されていることを確認し、[次へ]をクリックします。
。ウィザードの2番目のステップで、[カンマ]チェックボックスがオンになっていることを確認し、[次へ]をクリックします。
。ウィザードの3番目のステップで、[完了]をクリックします。
番地は元の列に存在するはずであり、以前は空白だった列には、元の住所のカンマの後にあったすべてのものが含まれているはずです。つまり、スイート番号は独自の列にあります。この状態のデータでは、フィルタリングを使用して一意の番地を表示または抽出するのは簡単な手順です。
アドレスを永続的に2つの列に分割したくない場合は、数式を使用して重複を判別できます。アドレスリストがソートされていると仮定すると、次のような式を使用できます。
=IF(OR(ISERROR(FIND(",",A3)),ISERROR(FIND(",",A2))), "",IF(LEFT(A3,FIND(",",A3))=LEFT(A2,FIND(",",A2)), "Duplicate",""))
この式は、チェックするアドレスが列Aにあり、この式が別の列の行3のどこかに配置されていることを前提としています。最初に、現在の行のアドレスまたは前の行のアドレスのいずれかにコンマがあるかどうかを確認します。どちらのアドレスにもコンマがない場合は、重複の可能性がないと見なされます。
両方にコンマがある場合、式はコンマの前のアドレスの部分をチェックします。それらが一致する場合、「重複」という単語
返されます。それらが一致しない場合、何も返されません。
数式を列にコピーすると(1つの数式が各アドレスに対応するように)、「重複」という単語が表示されます
前のアドレスの最初の部分と一致するアドレスの横に表示されます。次に、見つかった重複をどのように処理するかを理解できます。
もう1つのオプションは、マクロを使用して重複の可能性を判断することです。
重複を判別するためのマクロを考案する方法はいくつもあります。ここに示されているものは、単に「キー」値の最初のX文字を範囲と照合し、最初に一致するセルのアドレスを返します。
Function NearMatch(vLookupValue, rng As Range, iNumChars) Dim x As Integer Dim sSub As String Set rng = rng.Columns(1) sSub = Left(vLookupValue, iNumChars) For x = 1 To rng.Cells.Count If Left(rng.Cells(x), iNumChars) = sSub Then NearMatch = rng.Cells(x).Address Exit Function End If Next NearMatch = CVErr(xlErrNA) End Function
たとえば、住所がA2:A100の範囲にあると仮定します。
列Bでは、このNearMatch関数を使用して、重複の可能性のあるアドレスを返すことができます。セルB2に次の数式を入力します:
=NearMatch(A2,A3:A$100,12)
関数(A2)の最初のパラメーターは、「キー」として使用するセルです。このセルの最初の12文字は、A3:A $ 100の範囲の各セルの最初の12文字と比較されます。最初の12文字が一致する範囲でセルが見つかった場合、そのセルのアドレスが関数によって返されます。一致するものが見つからない場合は、#N / Aエラーが返されます。 B2の数式をセルB3:B100にコピーすると、列Aの対応する各アドレスが、その下のすべてのアドレスと比較されます。最終的に、元のリストにある可能性のある重複のリストが作成されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(7886)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。
Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります:
link部分一致に基づく重複の削除。