按我的理解写了一个 Sub MyRnd() On Error Resume Next With CreateObject("SCRIPTING.DICTIONARY") For i = 1 To 15 If Len(Range("C202").Offset(0, i)) > 0 Then .Add Val(Range("C202").Offset(0, i)), CStr(Range("C202").Offset(0, i)) End If Next i Do .Add Int(Rnd * 15 + 1), "1" Loop Until .Count = 8 Range("D204:R204").ClearContents For Each key In .keys If Len(Range("C202").Offset(0, key)) = 0 Then Range("C204").Offset(0, key) = "'" & Format(key, "00") Next End With End Sub |