在数组vba中查找重复的数字

我想创build一个大小为50的数组,在0到20之间的随机数的vba,然后提取数组,重复在该数组到另一个数组。

Sub Problem10() Dim numbers() As Double, odd() As Double, even() As Double, five() As Double, repeating() As Double, x As Integer, i As Integer, sOdd As Integer, sEven As Integer, sFive As Integer, sNumbers As Integer, sRepeating As Integer, y As Integer, listed As Boolean sRepeating = 0 sNumbers = 50 For i = 1 To sNumbers ReDim Preserve numbers(i) numbers(i) = Int(20 * rnd) 'find repeating numbers For x = 1 To i If numbers(x) = numbers(i) And i <> x Then 'check if there are any repeated numbers already If sRepeating > 0 And listed = False Then For y = 1 To sRepeating 'check if the number is already listed as a repeated number If numbers(i) = repeating(y) Then listed = True Else sRepeating = sRepeating + 1 ReDim Preserve repeating(sRepeating) repeating(sRepeating) = numbers(i) Cells(sRepeating + 1, 4).Value = repeating(sRepeating) listed = True End If Next y End If End If Next x Cells(i + 1, 5).Value = numbers(i) Next i End Sub 

我可以用随机数(数字())创build数组,然后提取偶数,奇数和5的倍数的新数组。然而,我不知道如何提取只重复的数字。 现在,这只能find第一个重复的号码,没有别的。

考虑下面的例子:

 Option Explicit Sub Test() Dim i Dim numbers(0 To 49) Dim repeating() Dim q ' Fill array with random numers Randomize For i = 0 To 49 numbers(i) = Int(20 * Rnd) Next ' Filter repeating elements With CreateObject("Scripting.Dictionary") ' Count each number qty For i = 0 To 49 .Item(numbers(i)) = .Item(numbers(i)) + 1 Next ' Remove non-repeating For Each q In .Keys() If .Item(q) = 1 Then .Remove q Next ' Retrieve array repeating = .Keys() End With Debug.Print Join(numbers) Debug.Print Join(repeating) End Sub