请问如何 用excel 随机选出20个工作日

从2017年1月1日到2019年7月1日,选出20个工作日,放到A列,如何实现,谢谢

可以编程一步完成,按ALT+F11组合键,打开VB窗口,执行"插入"-"模块",复制下面代码进去,按F5运行"Demo"程序即得到结果。

Sub Demo()
Dim Arr() As Date, Brr() As Variant
Dim MyDate As Date
Dim i As Long, j As Long
Dim Cell As Range

MyDate = #1/1/2017#
Do Until MyDate > #7/1/2019#
If Application.Weekday(MyDate) > 1 And Application.Weekday(MyDate) < 7 Then
ReDim Preserve Arr(i)
Arr(i) = MyDate
i = i + 1
End If
MyDate = MyDate + 1
Loop
ReDim Brr(0 To UBound(Arr))
For i = 0 To UBound(Arr)
Brr(i) = i
Next
Call Fisher_Yates(Brr)

Set Cell = Range("A1")
For j = 1 To 20
Cell = Arr(Brr(j - 1))
Set Cell = Cell.Offset(1, 0)
Next
End Sub
Function Fisher_Yates(Arr)
Dim i As Integer, k As Integer, t
Dim L As Integer, U As Integer
L = LBound(Arr)
U = UBound(Arr)
For i = U To L Step -1
k = Application.RandBetween(L, i)
t = Arr(k)
Arr(k) = Arr(i)
Arr(i) = t
Next
Fisher_Yates = Arr
End Function

程序运行结果图

追问

非常感谢,因为没有财富值,没能悬赏,还以为没人回答呢,再次感谢!!!

温馨提示:答案为网友推荐,仅供参考
相似回答