
Function RANDBETWEENAZ() As String
Dim p As Integer, q As Integer
p = Int(Rnd(1) * 26) + 1
q = Int(Rnd(1) * 26) + 1
Do Until q <> p
q = Int(Rnd(1) * 26) + 1
Loop
test2 = Chr(p + 64) & Chr(q + 64)
End Function
Option Explicit
Public Function RANDBETWEENAZ(Optional auto_generate As Boolean = True) As String
Static vector(0 To 26) As String
Dim s As String, i As Integer, p As Integer, q As Integer
'by VF
'Generates a pair of letters A-Z not repeated
'Vector is regenerated each time a couple of letters are extracted.
'If "auto_generate" is True or omitted, the Function doesn't regenerate the couple of letters.
'Otherwise every time the sheet is calcukated (or by pressing F9), a new string is recreate.
Application.Volatile auto_generate
If CInt(vector(0)) = 13 Then
'reinitializing vector after two steps
vector(0) = "0"
For i = 1 To 26
vector(i) = Chr(i + 64)
Next
'shuffling
Randomize Timer
For i = 1 To 1000
p = Int(Rnd(1) * 26) + 1
q = Int(Rnd(1) * 26) + 1
s = vector(q)
vector(q) = vector(p)
vector(p) = s
Next
End If
vector(25) = vector(1)
vector(26) = vector(2)
For i = 1 To 24
vector(i) = vector(i + 2)
Next
s = vector(1) & vector(2)
If s = "" Then s = RANDBETWEENAZ(auto_generate)
vector(0) = CStr(CInt(vector(0)) + 1)
RANDBETWEENAZ = s
End Function
|
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
'---------------------------------------------------------------------------------------
' Procedure : RandomAZ
' Author : scossa
' Date : 15/08/2015
' Purpose : return a pair of different letters, each between A-Z
' arguments : if bVolatile is true or omitted, udf will be recalculated
' at each sheet recalculation (or F9 pressing), and a new string is recreate
'---------------------------------------------------------------------------------------
'
Public Function RandomAZ(Optional ByVal bVolatile As Boolean = True) As String
Dim sRet_ As String
Dim cLetters As Collection
Dim i As Byte
Application.Volatile bVolatile
Set cLetters = New Collection
For i = 65 To 90
cLetters.Add Chr(i)
Next
Randomize
i = Int(Rnd(1) * 26) + 1
sRet_ = cLetters(i)
cLetters.Remove i
Randomize
i = Int(Rnd(1) * 25) + 1
sRet_ = sRet_ & cLetters(i)
RandomAZ = sRet_
End Function
|
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
'---------------------------------------------------------------------------------------
' Procedure : RandomAZ
' Author : scossa
' Date : 15/08/2015
' Purpose : return a pair of different letters, each between A-Z
' arguments : if bVolatile is true or omitted, udf will be recalculated
' at each sheet recalculation (or F9 pressing), and a new string is recreate
'---------------------------------------------------------------------------------------
'
Public Function RandomAZ(Optional ByVal bVolatile As Boolean = True) As String
Dim sRet_ As String
Dim cLetters As Collection
Dim i As Byte
Application.Volatile bVolatile
Set cLetters = New Collection
For i = 65 To 90
cLetters.Add Chr(i)
Next
Randomize
i = Int(Rnd(1) * 26) + 1
sRet_ = cLetters(i)
cLetters.Remove i
Randomize
i = Int(Rnd(1) * 25) + 1
sRet_ = sRet_ & cLetters(i)
RandomAZ = sRet_
set cLetters = Nothing
End Function |
=SE(IDENTICO(CODICE.CARATT(CASUALE.TRA(65;90));CODICE.CARATT(CASUALE.TRA(65;90)));CODICE.CARATT(CASUALE.TRA(66;90)-1) & CODICE.CARATT(CASUALE.TRA(65;89)+1);CODICE.CARATT(CASUALE.TRA(65;90))&CODICE.CARATT(CASUALE.TRA(65;90))) |
Textomb Io credo di averla trovata una soluzione, cercando di risolvere un altro quesito Marius Credo che la possibilità di lettere uguali non sia poca. E' la stessa soluzione che cercavo di ottimizzare nella altro quesito |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
=STRINGA.ESTRAI("ABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZCACBCDCECFCGCHCICJCK
CLCMCNCOCPCQCRCSCTCUCVCWCXCYCZDADBDCDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZEAEBECEDEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZFAFB"&
"FCFDFEFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZGAGBGCGDGEGFGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZHAHBHCHDHEHFHGHIHJHKHLHMHNHOHPHQ
HRHSHTHUHVHWHXHYHZIAIBICIDIEIFIGIHIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZJAJBJCJDJEJFJGJHJIJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZKAKBK"&
"CKDKEKFKGKHKIKJKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZLALBLCLDLELFLGLHLILJLKLMLNLOLPLQLRLSLTLULVLWLXLYLZMAMBMCMDMEMFMGMHMIMJMKMLMNMOMPMQMR
MSMTMUMVMWMXMYMZNANBNCNDNENFNGNHNINJNKNLNMNONPNQNRNSNTNUNVNWNXNYNZOAOBOCODOEOFOGOHOIOJOKOLOMONOPOQOROSOTOUOVOWOXOYOZPAPBPC"&
"PDPEPFPGPHPIPJPKPLPMPNPOPQPRPSPTPUPVPWPXPYPZQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQRQSQTQUQVQWQXQYQZRARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQ
RSRTRURVRWRXRYRZSASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSTSUSVSWSXSYSZTATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTUTVTWTXTYTZUAUBUCU"&
"DUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUVUWUXUYUZVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVWVXVYVZWAWBWCWD"&"WEWFWGWHWIWJWKWLWMWNW
OWPWQWRWSWTWUWVWXWYWZXAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXYXZYAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYZZAZBZ
CZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZY";DISPARI(CASUALE.TRA(1;1299));2) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
