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

Rimescolamento Valori Colonna

Ultimo Aggiornamento: 30/07/2023 18:04
Post: 738
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/07/2023 16:06

Ciao a tutti

in una colonna, per esempio A, ho una serie di valori numerici, OPPURE di nomi, il tutto senza un ordine preciso
nella colonna a fianco che formula si potrebbe usare che rimescoli casualmente l'ordine dei valori di A ?

Grazie

Leo

LEO
https://t.me/LordBrum
Post: 4.942
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
29/07/2023 16:13

Crea una tabella con ID e nomi.

Poi guarda qui

https://www.excelpertutti.com/estrattore-casuale-numeri-casuali-excel/

per creare una sequenza di numeri casuali senza ripetizione ed a fianco ci metti dei CERCA.VERT() che vanno a pescare sulla prima tabella.

Oppure si può fare con il VBA ma devi comunque avere una tabella dei nomi ciascuno con un suo ID univoco.
[Modificato da alfrimpa 29/07/2023 16:35]

Alfredo
Post: 738
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/07/2023 16:36

ah, grazie Alfredo
perchè non ci ho pensato prima ?

Leo

LEO
https://t.me/LordBrum
Post: 739
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/07/2023 16:48

bene, sono andato al sito indicato e ho eseguito la prima parte
ma poichè tenevo aperta già un'altra pagina ho usato una formula con CONFRONTA
sembra che funzioni
nell'allegato premere F9

Thanks

Leo

LEO
https://t.me/LordBrum
Post: 4.943
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
30/07/2023 15:48

Ciao Leo

A solo scopo didattico ti propongo questa macro; in colonna A id numerici ed in colonna B dei nomi

vb
Sub univociCasuali()
Dim riga As Integer
Dim casual As Integer
Dim numero As Variant
Dim I As Integer
Dim elenco As New Collection
On Error Resume Next
riga = 1
For I = 1 To 20
    casual = WorksheetFunction.RandBetween(1, 10)
    elenco.Add casual, CStr(casual)
Next I
For Each numero In elenco
    Cells(riga, 7).Value = WorksheetFunction.VLookup(numero, Range("a1:b100"), 2, False)
riga = riga + 1
Next numero
End Sub

[Modificato da alfrimpa 30/07/2023 15:49]

Alfredo
Post: 740
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/07/2023 17:18

grazie, pisolavo e non ho visto
ho applicato ma qualcosa non quadra
tu stesso dici in A numeri e e in B nomi
Ho fatto ma randomizza solo i nomi e non i numeri
cioè cosa deve fare ?
ti rimando il file così puoi vedere se ho scritto male, ma nella macro ho fatto piccola variazione senza esito

Leo

LEO
https://t.me/LordBrum
Post: 4.944
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
30/07/2023 17:23

Scusami ma non ho capito cosa c'è che non va.

A me pare che vada bene.

Scrivi solo For i = 1 to 100 e riesegui la macro

Alfredo
Post: 3.543
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
30/07/2023 17:24

ciao Leo
in questa istruzione:
Cells(riga, 7).Value = WorksheetFunction.VLookup(numero, Range("a1:b20"), 2, False)

sostituisci 2 con 1 per ottenere il mix della colonna 1

ma non entro nel merito del codice che mi sembra non restituisca tutto

saluti




[Modificato da dodo47 30/07/2023 17:27]
Domenico
Win 10 - Excel 2016
Post: 741
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/07/2023 17:29

buon pomeriggio ad entrambi

Alfredo
sì , non ho immaginato di dover scrivere da 1 a 100

per Dodo
sì, mi sono accorto un attimo in ritardo della cosa furbesca

interessante

grazie

Leo

LEO
https://t.me/LordBrum
Post: 3.544
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
30/07/2023 17:34

ciao
potrebbe non essere sufficiente Leo
Tu hai bisogno (da esempio) di 20 numeri casuali tra 1 e 20

Piuttosto che implementare il For fino a 100, converrebbe eliminare il ciclo for e al suo posto mettere:

Do Until elenco.Count = 20
casual = WorksheetFunction.RandBetween(1, 20)
elenco.Add casual, CStr(casual)
Loop
On error GoTo 0 ' <<<<<<<<<<<<< ripristinare gli errori!!!

saluti




[Modificato da dodo47 30/07/2023 17:35]
Domenico
Win 10 - Excel 2016
Post: 742
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/07/2023 17:37

tanto per ridere sotto il sole chiederei ad Alfredo se mai immagina perchè ho posto questo quesito stupido.
Ma non conviene approfondire il quesito perchè qualcuno in altro posto rischierebbe il crossposting, causato da me

Leo

LEO
https://t.me/LordBrum
Post: 743
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/07/2023 17:42

Re:
dodo47, 30/07/2023 17:34:


Piuttosto che implementare il For fino a 100, converrebbe eliminare il ciclo for e al suo posto mettere:
Do Until elenco.Count = 20
casual = WorksheetFunction.RandBetween(1, 20)
elenco.Add casual, CStr(casual)
Loop
On error GoTo 0 ' <<<<<<<<<<<<< ripristinare gli errori!!!




fatto,corretto, funziona
grazie

Leo

LEO
https://t.me/LordBrum
Post: 4.945
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
30/07/2023 17:58

@Dodo47

Domenico con i cicli Do non usandoli quasi mai ho poca dimestichezza.

Mi ci devo fare un po' le ossa.

Alfredo
Post: 744
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/07/2023 18:04

Re:
alfrimpa, 30/07/2023 17:58:

@Dodo47
Domenico con i cicli Do non usandoli quasi mai ho poca dimestichezza.
Mi ci devo fare un po' le ossa.



basta tener presente che il ciclo FOR si usa quando ilnumero degli elementi si conosce a priori

il ciclo DO si usa quando il numero degli elementi è sconosciuto e quindi per raggiungerlo è necessario aspettare il verificarsi di una certa condizione

è piuttosto una questione di semplice allenamento a usarlo

Leo

LEO
https://t.me/LordBrum
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 17:49. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com