Sub 随机取一百() num = 100 For Text2 = 1 To 2000 text1 = text1 & "|" & Text2 Next a = Split(text1, "|") Dim i As Integer Randomize Dim Index As Integer Dim Text As String Dim arU As Integer arU = UBound(a) If num > arU + 1 Then num = arU + 1 For i = 1 To num Index = Int(Rnd * arU) Text = Text & "|" & a(Index) a(Index) = a(arU) arU = arU - 1 Next arr1 = Split(Mid(Text, 2), "|") arr1 = Application.Transpose(arr1) Cells(1.1).Resize(UBound(arr1), 1) = arr1 End Sub 对原表数据编序号,再用这个宏取100个不重复的随机值,然后用vlookup引用序号对应数据(这一步可以在宏里直接实现,因需要数据支撑,故不展示)