Discussione:
Incrementare numero in stringa alfanumerica
(troppo vecchio per rispondere)
m***@infinito.it
2019-04-12 10:02:03 UTC
Permalink
Ciao a tutti,
quale codice vba suggerite x incrementare questa stringa di 1 unità ad ogni esigenza.

S0001

ok

S0002

...

S0999

etc.

Grazie
v***@gmail.com
2019-04-12 13:17:34 UTC
Permalink
Non ho capito cosa devi fare esattamente, se sei all'interno di un ciclo ti tieni il contatore della riga a cui sei arrivato ed usando
"S" & right("0000" & contatore,4) otterrai una stringa sempre di lunghezza 4 preceduta da tanti 0 quanti ne servono e ancor prima da una S
oppure puoi usare
"S" & format(contatore,"0000") ed ottenere lo stesso risultato

Se invece hai una stringa del tipo S0123 e vuoi avere un codice che ti restituisce S0124 puoi procedere in questo modo, togli il carattere iniziale, trasformi le cifre in numero, gli aggiungi 1 e poi uno dei 2 metodi precedenti per riottenere la stringa che desideri.
m***@infinito.it
2019-04-12 18:59:40 UTC
Permalink
Post by v***@gmail.com
Non ho capito cosa devi fare esattamente, se sei all'interno di un ciclo ti tieni il contatore della riga a cui sei arrivato ed usando
"S" & right("0000" & contatore,4) otterrai una stringa sempre di lunghezza 4 preceduta da tanti 0 quanti ne servono e ancor prima da una S
==========> Ho una cella: "B7" che ogni volta che aggiorno un procedimento devo modificare manualmente incrementando il numero di spedizione:

oggi S0001 domani S0002 dopodomani S0003 e così via...

vorrei un codice che lo faccia automaticamente: sappia estrarre il numero dalla cella e lo incrementi di 1 rispetto alla vecchia spedizione mantenendo la stringa testuale di 5 caratteri non in "formato" ma in testo perché lo stesso sia poi utilizzato come stringa alfanumerica.
Post by v***@gmail.com
oppure puoi usare
"S" & format(contatore,"0000") ed ottenere lo stesso risultato
Se invece hai una stringa del tipo S0123 e vuoi avere un codice che ti restituisce S0124 puoi procedere in questo modo, togli il carattere iniziale, trasformi le cifre in numero, gli aggiungi 1 e poi uno dei 2 metodi precedenti per riottenere la stringa che desideri.
==> mantenendo i 5 caratteri
by sal
2019-04-12 14:39:03 UTC
Permalink
Ciao se l'inizio della stringa è sempre una "S" puoi usare il formato celle, vai in personalizzato e metti questo formato dev'è scritto "Standard" sotto "Tipo:"

"S"000#

quindi nella cella puoi scrivere tranquillamente il numero che verrà trasformato in

S0009

etc.., ma ricorda che a questo punto il valore della cella è un Numero e va trattato come tale, per cui per la numerazione progressiva puoi fare

cells(riga, 1) = cells(riga-1, 1) + 1

ed avrai il valore incrementato di una unità.

Ciao By Sal (8-D
by sal
2019-04-13 06:33:49 UTC
Permalink
Ciao Maurizio, tagliamo la testa al toro come si dice, eccoti la macro che fa il lavoro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim r, c, d

If Not Intersect(Target, [a:a]) Is Nothing Then
r = Target.Row
c = Target.Column
If r < 2 Then Exit Sub
d = Cells(r - 1, c)
If d = "N°" Then Cells(r, c) = "S0001": GoTo 1
d = Val(Mid(d, 2))
Cells(r, c) = "S" & Format(d + 1, "0000")
1 Cells(r, c + 1).Select
End If
End Sub

questa macro però la devi inserire nel Modulo del Foglio, sfrutta l'evento "DoppioClick" nella cella che vuoi la numerazione fai "DoppioClick" ti mette il numero progressivo e si sposta nella cella a dx per inserire i dati

se la cella superiore e vuota incomincia la numerazione da 1, come intestazione ho previsto "N°", se è diversa al posto di "N°" nella macro inserisci la tua stringa.

funziona per la colonna "A" se è una colonna diversa al posto di "[a:a]" metti la colonna che vuoi.

Ciao By Sal (8-D
m***@infinito.it
2019-04-18 17:20:14 UTC
Permalink
Post by by sal
Ciao Maurizio, tagliamo la testa al toro come si dice, eccoti la macro che fa il lavoro.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim r, c, d
If Not Intersect(Target, [a:a]) Is Nothing Then
r = Target.Row
c = Target.Column
If r < 2 Then Exit Sub
d = Cells(r - 1, c)
If d = "N°" Then Cells(r, c) = "S0001": GoTo 1
d = Val(Mid(d, 2))
Cells(r, c) = "S" & Format(d + 1, "0000")
1 Cells(r, c + 1).Select
End If
End Sub
questa macro però la devi inserire nel Modulo del Foglio, sfrutta l'evento "DoppioClick" nella cella che vuoi la numerazione fai "DoppioClick" ti mette il numero progressivo e si sposta nella cella a dx per inserire i dati
se la cella superiore e vuota incomincia la numerazione da 1, come intestazione ho previsto "N°", se è diversa al posto di "N°" nella macro inserisci la tua stringa.
funziona per la colonna "A" se è una colonna diversa al posto di "[a:a]" metti la colonna che vuoi.
Ciao By Sal (8-D
Ottimo suggerimento!
GRAZIE Sal !!!

Loading...