Dovrei trovare una procedura , per mettere in A2
una nuova stringa di 7 caratteri ASCII in cui, ciascun carattere (dal
33 al 126) sia aumentato di una unità e la stringa ottenuta vada a
rimpiazzare quella in A1, per poi ricominciare tutte le volte che
serve
Credo che così tutte le stringhe generate dovrebbero essere diverse
da tutte quelle generate in precedenza
(o no?)
Draleo
In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii
stampabili (cio� che vanno dal num 33 al num 126).
Esempio : K{d8Lpa
Dovrei trovare una procedura , per mettere in A2
una nuova stringa di 7 caratteri ASCII in cui, ciascun carattere (dal
33 al 126) sia aumentato di una unit� e la stringa ottenuta vada a
rimpiazzare quella in A1, per poi ricominciare tutte le volte che
serve
Credo che cos� tutte le stringhe generate dovrebbero essere diverse
da tutte quelle generate in precedenza
(o no?)
*****************************
Mah.
Prova a mettere questa in un modulo standard:
Public Function f(ByVal rng As Range) As String
Dim lng As Long
Dim lLen As Long
lLen = Len(rng.Value)
f = ""
For lng = 1 To lLen
f = f & Chr(Asc(Mid(rng.Value, lng, 1)) + 1)
Next
End Function
Sette valori in A1.
A2: =f(A1)
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
E quando in A1 vi è un ~ cioè un CHR(126)?
Bruno
E quando in A1 vi è un ~ cioè un CHR(126)?
Bruno
*******************************
E quando arriviamo a 255?
Ciao Bruno.
Se è una stringa casuale che vuoi generare, vedi qui:
Personalmente però, visto che in una stringa di 7 caratteri generata
random c'è da fidarsi una cosa giusta, aggiungerei un controllo
su quanto già presente nella colonna.
Capisco che Il quesito è del genere: Se non son matti non li vogliamo.
Ma visto che in questo gruppo abbondano gli esperti di scienze
matematiche (oltre che di informatica) io ho provato ugualmente
La funzione di Mauro per funzionare funziona.
Ma vorrei verificare meglio i risultati ottenuti
>Se una stringa casuale che vuoi generare, vedi qui:
>http://www.google.it/#sclient=psy&hl=it&site=&source=hp&q=vb+generare...
>Personalmente per , visto che in una stringa di 7 caratteri generata
>random c' da fidarsi una cosa giusta, aggiungerei un controllo
>su quanto gi presente nella colonna.
No. Non mi serve generare una stringa casuale di caratteri random
Ma una stringa di caratteri ASCII non generata in precedenza (penso
sia da escludere memorizzare tutte le stringhe generate in precedenza
(alla fine saranno migliaia)e poi verificare se quella generata in
quel momento sia già stata generata.
Inoltre mi servirebbe un meccanismo progressivo regolare (che nei
fatti fa sì che ogni stringa non sia mai stata generata prima)
Io Avevo pensato al meccanismo di un contakilometri: che ha 7 caselle
(Da dx a sin)
7° casella :gira e :
-ogni 10 fa aumentare di una unità
-La 6° casella. La quale gira e ogni 10 fa aumentare di una unità
-la 5° casella . La quale gira e ogni 10 fa aumentare di una unità
- la 4° casella ecc fino alla prima casella
Solo che con il ContaKm si va di dieci in dieci; qui invece si va da
33 a 126 (oppure 125 che è lo stesso)
Forza; Vi ho visto risolvere cose molto più difficili..
draleo
Dovrei trovare una procedura , per mettere in A2
una nuova stringa di 7 caratteri ASCII in cui, ciascun carattere (dal
33 al 126) sia aumentato di una unit� e la stringa ottenuta vada a
rimpiazzare quella in A1, per poi ricominciare tutte le volte che
serve
Credo che cos� tutte le stringhe generate dovrebbero essere diverse
da tutte quelle generate in precedenza
(o no?)
Draleo
*******************
No, certamente no!
Potresti scrivere solo 94 (cio� 126 - 32) stringhe una diversa dall'altra,
dopodich� o ricominci daccapo e ti fermi per sempre.
Per capirci meglio semplifichiamo usando (invece dei 94 caratteri che vanno
dal carattere 33 al carattere 126) le 10 cifre della numerazione decimale
(da carattere 48 a carattere 57).
Prima stringa sarebbe:
0000000
poi, aumentando di una unit� tutte le 7 cifre avresti:
1111111
e, di seguito:
2222222
3333333
4444444
5555555
6666666
7777777
8888888
9999999
A questo punto o ricominci da 0000000 e ripeti la sequenza oppure hai finito
l�!
Sai bene, invece, che sette cifre ti consentirebbero, diversamente usate, di
avere 10.000.000 di combinazioni differenti a partire da 0000000 e fino a
9999999.
Quindi tutt'altro discorso � quello di utilizzare i 94 caratteri che hai
scelto di usare come se fossero cifre di un sistema di numerazione a base 94
(con valori decimali delle cifre che vanno da 0 a 93)
In tal caso puoi ottenere ben 64.847.759.419.264 stringhe diverse (94^7).
Un numero davvero esorbitante e non credo probabile che ti servano cos�
tante combinazioni.
Questa UDF scala di "una unit�" la stringa di cui gli fornisci l'indirizzo.
--------------------------------------------
Function scala(base As Range, Optional num As Long = 7) As String
Dim i As Long, c As String
scala = base.Value
If Len(scala) <> num Then
scala = "Lunghezza della stringa errata"
Exit Function
End If
i = num
Do
c = Asc(Mid(scala, i, 1))
c = (c - 32) Mod 94 + 33
If c < 33 Or c > 126 Then
scala = "Caratteri errati nella stringa"
Exit Function
End If
scala = Left(scala, i - 1) & Chr(c) & Mid(scala, i + 1)
If c = 33 Then
i = i - 1
If i < 1 Then
scala = String(num, Chr(33))
Exit Do
End If
Else
Exit Do
End If
Loop
End Function
--------------------------------------------
e accetta come parametro opzionale il numero di cifre che intendi utilizzare
se, come suppongo, 7 vanno oltre le tue esigenze.
Ciao,
E.
Eccezionale ! Veramente eccezionale !
Sapevo bene che in questo gruppo vi sono cervelli superiori !
Grazie mille
draleo
Eccezionale ! Veramente ECCEZIONALE !
sapevo che in questo gruppo vi sono cervelli superiori !
geazie Mille
draleo
*************
Esagerato!! :-))
Eccezionale! Veramente eccezionale!
sapevo che questo gruppo abbonda di cervelli superiori
grazie
draleo
LOL
Credo che siamo tutti d'accordo su Plinius, tuttavia, Draleo, tenta di
ricomporti un po'.
Se dai in escandescenze reiterate anche al di fuori del NG, potresti
trovare un tuo collega (specialista, capisciammè) che si impressiona e
prende provvedimenti.;-))
Con la maxima cordialità e lo spirito il più amichevole possibile,
Eliano
capisco, capisco
ma Non ho dato in escandescenze (il cervello ancora regge bene...anche
se non so fino a quando)
Ho ripetuto 3-4 volte il messaggio di congratulazioni a Plinius perchè
in quei giorni
non venivano visulizzati i messaggi e di conseguenza credevo non
fossero stati ricevuti
Poi, improvvisamente sono ricomparsi tutti
e solo allora ho capito di aver involontariamente esagerato
Ciao
draleo
A chi lo dici?? A me non capita quasi mai.:-))
Eliano