2016-10-15 14 views
0

Iは、VBAエクセルシングルアウト複数の行の単一の行の重複

A - B - A - A - B - C - B 
E - E - E - D - D - E - F 
G - G - H - H - H - I - H 
J - K - K - K - K - L - L 

ようなデータのテーブルを持っている私は、最初の行のAとBを選び出すための方法、E &がありますDは基本的に各行の複製であり、同じ行に2つの差分複製があります。

+0

グループ別にお答えします。 – nicomp

+0

必要な出力も与えることができますか? – Vityata

+0

重複をチェックするときは、辞書またはコレクションを使用します。このビデオはあなたにどのように表示されます。 [Excel VBAの紹介パート39 - 辞書](https://www.youtube.com/watch?v=dND4coLI_B8&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&index=42)。あなたが問題に遭遇した場合は、コードを投稿してください。 –

答えて

1

はい、これを達成するために辞書を使用できます。 VBエディタ、ツール、参照、「Microsoft Scripting Runtime」にチェックを入れ、辞書機能をインポートします(この方法はIntellisenseを容易にします)。

このコードは、ワークシート機能の形式でその機能を提供するために書かれています。

お客様のニーズに合わせて修正することができます。サポートを必要とする場合は、ご返信ください。あなたのデータがどのようにフォーマットされているのかわからないので、ハイフンとスペースを取り除くための行です。

Public Function ShowDuplicates(rngSource As Range) As String 
    Dim dctUnique As Dictionary 
    Dim dctDups  Dictionary 
    Dim intCounter As Integer 
    Dim strSource As String 
    Dim strCurrent As String 

    Set dctUnique = New Dictionary 
    Set dctDups = New Dictionary 

    ' Remove hyphen and space 
    strSource = Replace(Replace(rngSource.Value, "-", ""), " ", "") 

    For intCounter = 1 To Len(strSource) 
     strCurrent = Mid$(strSource, intCounter, 1) 
     If dctUnique.Exists(strCurrent) Then 
      If Not dctDups.Exists(strCurrent) Then 
       ' Only add it to the dups dict if required 
       dctDups.Add strCurrent, strCurrent 
      End If 
     Else 
      dctUnique.Add strCurrent, strCurrent 
     End If 
    Next 

    If dctDups.Count > 0 Then 
     ShowDuplicates = Join(dctDups.Keys(), ",") 
    Else 
     ShowDuplicates = "" 
    End If 

    End Function 
関連する問題