Excelmacros从列A中获取随机数据

我有列A中的数据列表,同样也有重复的数据。 我必须创build一个macros才能获得10%的数据。 我尝试了兰德()和其他几个function,但没有成功。 请任何帮助。

A栏

砖约翰

砖马特

砖特德

目标约翰

进球马特

目标泰德

目标泰德

老虎泰德

老虎约翰

老虎马特

老虎马特

代码泰德

代码马特

代码马特

代码泰德

代码约翰

现在从上面的列表中,我必须得到10%的随机样本,如果我得到重复,但我必须从所有的砖块,老虎,代码和目标得到。

请帮忙

这将采样并将样本放在B列中

Public Sub scramble(InOut() As String) Dim I As Long, J As Long, Low As Long, Hi As Long Dim Temp ReDim Helper(LBound(InOut) To UBound(InOut)) As Double Randomize Low = LBound(Helper) Hi = UBound(Helper) For I = Low To Hi Helper(I) = Rnd() Next J = (Hi - Low + 1) \ 2 Do While J > 0 For I = Low To Hi - J If Helper(I) > Helper(I + J) Then Temp = Helper(I) Helper(I) = Helper(I + J) Helper(I + J) = Temp Temp = InOut(I) InOut(I) = InOut(I + J) InOut(I + J) = Temp End If Next I For I = Hi - J To Low Step -1 If Helper(I) > Helper(I + J) Then Temp = Helper(I) Helper(I) = Helper(I + J) Helper(I + J) = Temp Temp = InOut(I) InOut(I) = InOut(I + J) InOut(I + J) = Temp End If Next I J = J \ 2 Loop End Sub Sub samples() Dim N As Long, N2 As Long, s() As String N = Cells(Rows.Count, "A").End(xlUp).Row N2 = N / 10 ReDim s(1 To N) For I = 1 To N s(I) = Cells(I, 1).Value Next I Call scramble(s) For I = 1 To N2 Cells(I, 2).Value = s(I) Next I End Sub