當前位置:成語大全網 - 新華字典 - excel中隨機不重復選取指定區域單元格內容

excel中隨機不重復選取指定區域單元格內容

如果不講究技巧,可以用死辦法:

Sub R_DATA()

Dim Data_Range As Range

Dim sht As Worksheet

Dim p, t, Data_Count, RND_r, RND_c

p = 0.7 ' 指定比例

t = Application.WorksheetFunction.CountA("A1:T25200") ' 統計數據個數

Set Data_Range = Range("A1:T25200") ' 指定源數據區域

Set sht = Worksheets("Sheet2") ' 指定取出隨機數的保存工作表

Do While Data_Count < Round(t * p, 0) ' 當取值計數小於指定比例時循環

RND_c = Int(Rnd() * 20 + 1) ' 隨機取行坐標

RND_r = Int(Rnd() * 25200 + 1) ' 隨機取列坐標

If sht.Cells(RND_r, RND_c) <> 1 And Cells(RND_r, RND_c) <> "" Then ' 判斷是否已經取值、是否為空值

sht.Cells(RND_r, RND_c) = Cells(RND_r, RND_c) ' 取值保存在Sheet2表的同壹位置

Data_Count = Data_Count + 1 ' 取值計數加1

End If

Loop

End Sub

說明,由於EXCEL版本是2003,最多65536行。從49萬個數據中取70%,那麽後面的列是不可能保存得下的。因此代碼中將這些數據存放在另外的工作表Sheet2中,位置與原表相同。