[英]Using functions like formulas in Excel
我正在嘗試使用公式來獲取字母表字母。
式:
=Keytable(RANDOM,ROW())
功能:
Function KeyTable(seed As Long, position As Long) As String
Dim i As Long
Stop
Dim calpha(1 To 26) As String
Dim alpha(1 To 26) As String
For i = 1 To 26
alpha(i) = Chr(i + UPPER_CASE - 1)
Next i
For i = 1 To 26
calpha(i) = alpha(seed Mod 27 - i)
Next i
Stop
KeyTable = calpha(position)
End Function
結果:
#Value!
當我逐步執行該功能時,它永遠不會到達第二個停靠點。 怎么了?
RANDOM
不是Excel中的函數。 RAND()
是,它返回0到1之間的一個float
。您需要一個integer
來進行模量計算。
要獲取隨機整數,請使用:
INT ((upperbound - lowerbound + 1) * RAND() + lowerbound)
然后,一旦seed Mod 27 - i
變為0或更小,該函數就會消失,因為無法在VBA(或大多數語言)中將數組索引為0或更小。
但是,實際上,您需要為隨機字母做的所有事情是:
=CHAR(RANDBETWEEN(65,90))
此代碼將返回隨機字母:
Function GetLetter()
Dim letters As String
Dim randomIndex As Byte
letters = "abcdefghijklmnopqrstuvwxyz"
randomIndex = Int((26 - 1 + 1) * Rnd() + 1) //Get random number between 1 and 26
GetLetter = VBA.Mid$(letters, randomIndex, 1)
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.