我不懂VBA,用函数做了一个,你看行不行。
K1=SMALL($A$1:$D$4,ROW(A1))向下复制15行(因为数据共有16个)
L1=SMALL(IF(COUNTIF($D$5:D$5,K$1:K$16),4^8,K$1:K$16),ROW(A1))这个是数组公式向下复制15行,向右复制4列(因为填充的单元格为6个)。
数组公式,公式输完后,光标放在公式编辑栏同时按下CTRL+SHIFT+回车键,使数组公式生效
D5=INDEX(K:K,ROUNDUP(RAND()*(17-COLUMN(A1)),0))向右复制到I5.
按F9键黄色区域可随机选数。
一般用 Dictionary
Function chongzu(L As Range, n) 'L是范围,n 是范围内第几个 不重复的
Dim rng As Range
Set D = CreateObject("SCRIPTING.DICTIONARY")
For Each rng In L
D(rng.Value) = ""
Next
DK = D.keys: Set D = Nothing
chongzu = DK(n)
End Function