回覆列表
-
1 # daazhu1
-
2 # Excel高效技能
效果演示:
程式碼如下:
Sub Rnddatao()
"清空提取結果
Range("B2:B11").Clear
Dim startrow As Integer "起始資料行位置
Dim endrow As Integer "結束行資料位置
Dim percentage As Double "需要提取的百分比
Dim datacount As Integer "需要提取多少個數據
percentage = 0.2
startrow = 2
endrow = 11
"計算提取多少個數據 , (結束行起始行) * 百分比, 最後取整
datacount = Int((endrow - startrow + 1) * percentage)
For i = 1 To datacount "迴圈取多少個數據
1:
rndrow = Application.WorksheetFunction.RandBetween(startrow, endrow)
If Range("B" & rndrow) = "" Then
Range("B" & rndrow) = Range("A" & rndrow)
Else
GoTo 1:
End If
Next
MsgBox "提取完成!", 64, "提示"
End Sub
我有辦法,用Vba
原理:產生一個隨機數,隨機讀取指定行內某一行的資料,用迴圈來讀取總量的五分之一,由於行號是隨機的,所以此機率就為20%