Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

creazione macro per estrazione alfabetica

Ultimo Aggiornamento: 08/09/2016 17:52
Post: 1
Registrato il: 06/09/2016
Città: GROTTAGLIE
Età: 40
Utente Junior
2010
OFFLINE
06/09/2016 13:30

Ciao, vorrei creare 1 macro per estrarre una lettere casuale dell'alfabeto,magari con la creazione di 1 pulsante.

E' possibile?

Grazie in anticipo per quanto potrete fare.
Post: 2.224
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
06/09/2016 14:02

Ciao Daniele

Crea una tabella da A1 a B26.

In colonna A metti i numeri da 1 a 26 e in colonna B le lettere dell'alfabeto.

Con questa macro ogni volta che viene eseguita viene inserita in D1 una lettera in maniera casuale.

Sub EstraiLettera()
   Dim NumeroCasuale As Integer
   Dim rng as Range
   Set rng = Range("A1:B26")
   Randomize
   NumeroCasuale = Int ((26 - 1 + 1) * Rnd + 1)
   Range("D1").Value = Application.WorksheetFunction.VLookup(NumeroCasuale, rng, 2, False)
End Sub


Sai inserire la macro in un file? Sai creare un pulsante e associargli la macro.

Googla un po' e vedrai che ci riesci.

Alfredo
Post: 2.226
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
ONLINE
06/09/2016 14:44

Se non sai inserire la macro in un file vai su YouTube cerca Excel Magico e guarda il video n. 84

Per il pulsante inserisci sul foglio una forma cliccaci su con il tasto dx del mouse e scegli Assegna macro.

Alfredo
Post: 3.356
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
06/09/2016 18:14

Re:
si potrebbe fare anche senza la colonna dei numeri

Sub EstraiLettera()
   Dim NumeroCasuale As Integer
   Dim rng as Range
   Set rng = Range("A1:A26")
   Randomize
   NumeroCasuale = Int ((26 - 1 + 1) * Rnd + 1)
   Range("D1").Value = rng.cells(NumeroCasuale)
End Sub





----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 1.950
Registrato il: 27/07/2010
Utente Veteran
OFFLINE
07/09/2016 09:27

Altra soluzione:

Sub Casual()
 
  Range("D1").Value = Left(Cells(1, Application.WorksheetFunction.RandBetween(1, 26)).Address(0, 0), 1)
  
End Sub


Bye!
scossa

scossa's web site
___
Se tu hai una mela, e 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)
Post: 3.358
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
07/09/2016 09:57

più semplice di così non si può ! [SM=g27811]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 1
Registrato il: 06/09/2016
Città: GROTTAGLIE
Età: 40
Utente Junior
2010
OFFLINE
07/09/2016 15:28

GRAZIE RAGAZZI
VI RINGRAZIO PER L'AIUTO HO RISOLTO IL PROBLEMA [SM=x423028] ALLA PROSSIMA
Post: 672
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
08/09/2016 17:52

Ciao
si potrebbe evitare la colonna d'appoggio con le formule:

- per lettere minuscole: =CODICE.CARATT(CASUALE.TRA(97;122))
- per lettere maiuscole: =CODICE.CARATT(CASUALE.TRA(65;90))


(che ovviamente possono tradursi in macro)

Cells(1, 4) = Chr(Int((122 - 97 + 1) * Rnd + 97))

oppure

Cells(1, 4) = Chr(Int((90 - 65 + 1) * Rnd + 65))


saluti
[Modificato da dodo47 08/09/2016 18:06]
Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:19. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com