我正在尝试随机化每个单元格的单元格值。我想将单词“ tyot”保留在单词的开头,然后将其后的7个字母随机化,这是我对这个公式所做的:
=CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))&RANDBETWEEN(10,99)
在将两个单元用一个公式合并后,=A1&""&B1
得到了我想要的结果,看起来像这样tyotXKWAE73
。现在,下一步是我无法弄清楚的事情,它是随机分配最后六个字母"tXKWAE73"
,并"tyot"
始终放在最前面。关于如何执行此最后步骤的任何想法?
在标准模块中输入以下功能:
Public Function Shuffle(s As String) As String
Dim ary(1 To 7) As String, ndex(1 To 7)
For i = 1 To 7
ary(i) = Mid(s, i, 1)
ndex(i) = i
Next i
Call Shuffle2(ndex)
Shuffle = ""
For i = 1 To 7
Shuffle = Shuffle & ary(ndex(i))
Next i
End Function
Public Sub Shuffle2(InOut() As Variant)
Dim i As Long, J As Long
Dim tempF As Double, Temp As Variant
Hi = UBound(InOut)
Low = LBound(InOut)
ReDim Helper(Low To Hi) As Double
Randomize
For i = Low To Hi
Helper(i) = Rnd
Next i
J = (Hi - Low + 1) \ 2
Do While J > 0
For i = Low To Hi - J
If Helper(i) > Helper(i + J) Then
tempF = Helper(i)
Helper(i) = Helper(i + J)
Helper(i + J) = tempF
Temp = InOut(i)
InOut(i) = InOut(i + J)
InOut(i + J) = Temp
End If
Next i
For i = Hi - J To Low Step -1
If Helper(i) > Helper(i + J) Then
tempF = Helper(i)
Helper(i) = Helper(i + J)
Helper(i + J) = tempF
Temp = InOut(i)
InOut(i) = InOut(i + J)
InOut(i + J) = Temp
End If
Next i
J = J \ 2
Loop
End Sub
然后在B1中输入:
=CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))&RANDBETWEEN(10,99)
在B2中输入:
="tyot" & shuffle(B$1)
并向下复制:
B列中的每个条目都是具有固定前缀的B1的“随机化” 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句