2012-03-06 20 views
1

Excel配列から重複した要素を削除しようとしています。私は、私が最も効率的な方法でこれをやっていないよ想像し、それはとにかく動作していないようです:excel vba - アレイから複製を削除する

For lrw = 1 To UBound(rcArray) 
    For copyIndex = lrw + 1 To .Rows.Count 
     If rcArray(copyIndex) = rcArray(lrw) Then 
      rcArray(lrw).Delete 
     End If 
    Next copyIndex 
Next lrw 

私は配列をREDIMする必要がありますか?誰かがこれのためのいくつかのコードへのリンクを持っていますか?

ありがとうございます!

+0

'rcArray'は何と宣言されていますか?配列として宣言されている場合、この 'rcArray(lrw).Delete'は動作せず、エラーをスローします。 –

+0

これを範囲にダンプし、Excelの組み込み機能を使用して一意のレコードを抽出し、レコードを第2の配列にダンプすることができます。配列をバブルソートするのではなく、同じソート方法をデータソートに使用することができます。 – brettdj

答えて

0

コードを書くにはしばらく時間がかかりますが、新しい配列を作成しておきたい値をコピーするのが最善の方法です。配列の途中の要素だけを削除することはできません。

Redimでは、配列の最後に要素を追加または削除することしかできません。

+0

それは値を取得したら、私はそれを新しい配列にコピーしますか?私は考えると思います。値をコピーする前に配列の境界を設定する必要がありますか? – thebiglebowski11

+0

はい、新しい配列にコピーします - 別のインデックスが必要です)、yesは境界を初期配列と同じに設定します。その後、作業が完了したら、redimを使用して切り捨てることができます(コピーしたアイテムの数を追跡してください) –

関連する問題