エクセルVBAで重複を削除
我々は、重複を削除するエクセルVBAでプログラムを見て下記。
状況:
列Aで、私たちは10個の数字を持っています。私たちは、これらの数字から重複を削除し、列Bに固有の番号を配置したい
1.まず、我々は4つの変数を宣言します。 Boolean型のtoAdd、Integer型、Integer型のI、およびInteger型のJのuniqueNumbers。
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
2.最初の番号は常に「ユニーク」であるので、次に、我々は、列BにA列の最初の番号を書いてください。
Cells(1, 2).Value = Cells(1, 1).Value
3.私たちは、2つの変数を初期化します。私達はちょうど私たちは私たちは、次の番号は、(これは必ずしも当然の事実ではない)にも追加する必要があると仮定してTrueにtoAddを設定値1でuniqueNumbersを初期化するので、列Bに1つの番号を追加しました。
uniqueNumbers = 1 toAdd = True
私たちは、二番目の数字は、「ユニーク」であるか否かを判断する必要があります。これは非常に簡単な方法で行うことができます。数が列Bに存在しない場合にのみ、第二の数は、列Bに追加する必要が
4.当社は、第3の数、4番目の数字のためにこれをチェックする必要がある、というように。我々は、このためのために次のループを開始します。
For i = 2 To 10
5.次に、プログラムの最も重要な部分が来ます。二番目の数字は(今のところ、我々は唯一のユニークな番号を持つ)列Bの番号のいずれかに等しい場合、この場合には、我々はこの番号を追加したくないので、私たちはFalseにtoAddを設定しました! (それはユニーク」ではありません)。瞬間uniqueNumbersではまだ1に等しいですが、uniqueNumbersは全体のリストになります。このリスト全体をチェックするために、我々は次のループのために別のものを必要とします。再び:私たちは追加したい番号がこのリストの番号のいずれかと等しい場合、toAddはFalseに設定され、番号が追加されません。次のコード行を追加します。
For j = 1 To uniqueNumbers If Cells(i, 1).Value = Cells(j, 2).Value Then toAdd = False End If Next j
toAddはまだTrueとFalseに設定されていない場合6.のみ、エクセルVBAは、我々はより多くの今1つの固有の番号を持っているので、我々は1でuniqueNumbersをインクリメントし、同時に、列Bに番号を追加する必要があります。次のコード行は、仕事を得る:
If toAdd = True Then Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value uniqueNumbers = uniqueNumbers + 1 End If
7.最後に、我々は次の番号(第3の数)を追加する必要があると仮定するとTrueにtoAddを設定しました。再び、これは必ずしも真実ではありません。
toAdd = True
8.ループを閉じることを忘れないでください。
Next i
9.あなたのコマンドボタンでのマクロと、それをテストします。
結果: