È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Estrazione senza ripetizione

Ultimo Aggiornamento: 31/08/2016 09:11
Post: 1
Registrato il: 29/08/2016
Città: MILANO
Età: 33
Utente Junior
2013
OFFLINE
29/08/2016 13:08

Ciao a tutti,
Necessito di estrarre casualmente un nome alla volta da un elenco, ripetendo tale operazione. fin qui tutto bene, ma mi interesserebbe che i valori estratti non siano più disponibili.
In altre parole, che i valori non siano estraibili più di una volta

Ringrazio anticipatamente chi vorrà aiutarmi
Post: 3.348
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
30/08/2016 11:24

allega un file zippato con quanto hai fatto fino ad ora

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 634
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
30/08/2016 11:54

Ciao
detta così, semplicemente copi il range di valori in una colonna d'appoggio (magari su altro foglio) sulla quale fai le ricerche e, una volta estratto il dato, lo cancelli da tale colonna.

saluti
[Modificato da dodo47 30/08/2016 11:55]
Domenico
Win 10 - Excel 2016
Post: 1
Registrato il: 29/08/2016
Città: MILANO
Età: 33
Utente Junior
2013
OFFLINE
30/08/2016 12:07

Re:
patel45, 30/08/2016 11.24:

allega un file zippato con quanto hai fatto fino ad ora



Intanto grazie,

Allego un file di prova perchè quello sul quale lavoro è pesante.
Post: 2
Registrato il: 29/08/2016
Città: MILANO
Età: 33
Utente Junior
2013
OFFLINE
30/08/2016 12:09

Re:
dodo47, 30/08/2016 11.54:

Ciao
detta così, semplicemente copi il range di valori in una colonna d'appoggio (magari su altro foglio) sulla quale fai le ricerche e, una volta estratto il dato, lo cancelli da tale colonna.

saluti



Grazie, ma se ho capito bene cosa intendi dovrei cancellare a mano il valore estratto ogni volta. Avendo molti valori impazzirei.
Post: 635
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
30/08/2016 13:11

Re: Re:
flaco_27, 30/08/2016 12.09:



Grazie, ma se ho capito bene cosa intendi dovrei cancellare a mano il valore estratto ogni volta. Avendo molti valori impazzirei.



No, nella tua macro di estrazione, una volta estratto il dato, lo cancelli dalla colonna d'appoggio sempre tramite la stessa macro.
Tra l'altro il tuo file non ha macro.

Edit:
Non avevo capito che vuoi farlo con le formule....la vedo complessa.
Se vuoi posso indicarti una macro.

saluti
[Modificato da dodo47 30/08/2016 13:53]
Domenico
Win 10 - Excel 2016
Post: 3
Registrato il: 29/08/2016
Città: MILANO
Età: 33
Utente Junior
2013
OFFLINE
30/08/2016 15:00

Re: Re: Re:
dodo47, 30/08/2016 13.11:



No, nella tua macro di estrazione, una volta estratto il dato, lo cancelli dalla colonna d'appoggio sempre tramite la stessa macro.
Tra l'altro il tuo file non ha macro.

Edit:
Non avevo capito che vuoi farlo con le formule....la vedo complessa.
Se vuoi posso indicarti una macro.

saluti




Nono, le formule non sono indispensabili.

Andrebbe benissimo anche una macro unica, o due se è più facile.

Ti ringrazio anticipatamente
Post: 636
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
30/08/2016 16:54

Ciao
la sub può essere eseguita da entrambi i fogli, vedi tu.

saluti
Domenico
Win 10 - Excel 2016
Post: 812
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
30/08/2016 17:08

Ciao
dodo
io avevo capito di eliminarli fisicamente

(la macro non è mia)
Post: 3
Registrato il: 29/08/2016
Città: MILANO
Età: 33
Utente Junior
2013
OFFLINE
30/08/2016 17:10

Re:
dodo47, 30/08/2016 16.54:

Ciao
la sub può essere eseguita da entrambi i fogli, vedi tu.

saluti




Grazie ancora, rimane un problema però: a me servirebbe l'estrazione di un solo nome per volta.
A livello pratico: clicco sul pulsante e mi estrae il valore "1" (solo questo), clicco una seconda volta e mi estrae un secondo valore, nella stessa cella di prima, che non sia "1", ecc...
Post: 4
Registrato il: 29/08/2016
Città: MILANO
Età: 33
Utente Junior
2013
OFFLINE
30/08/2016 17:43

Re:
federico460, 30/08/2016 17.08:

Ciao
dodo
io avevo capito di eliminarli fisicamente

(la macro non è mia)




Questo è proprio quello che mi serve, grazie mille!
Un'ultima cosa: per adattarlo al mio file (elenco in altre colonne e cella di estrazione diversa, oltre ai nomi dei fogli) cosa devo modificare nel codice?
Post: 638
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
30/08/2016 18:25

Ciao
ma in questo modo perdi tutti i nomi del foglio1. Sei sicuro che ti sta bene?

saluti
Domenico
Win 10 - Excel 2016
Post: 813
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
30/08/2016 18:50

in rosso quello da modificare

Private Sub CommandButton1_Click()


Dim wb As Workbook
Dim ws As Worksheet

Dim x As Long, y As Long
Dim rNomi As Range

Set wb = ThisWorkbook
Set ws = wb.Sheets(1).......foglio dove si trova la lista

With ws
x = .Range("B" & .Rows.Count).End(xlUp).Row 'colonna della lista
Set rNomi = .Range(.Cells(4, 2), .Cells(x, 2)) 'range da cui estrarre,
On Error Resume Next
rNomi.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp 'elimino celle vuote per non estrarne i valori
On Error GoTo 0
y = Application.WorksheetFunction.RandBetween(rNomi.Rows(1).Row, rNomi.Rows.Count + 3)
wb.Sheets(2).Cells(2, 3) = .Cells(y, 2).Value .Cells(y, 2).ClearContents'' rosso cella dove vuoi il risultato rosa basta cambiare la colonna

Set rNomi = Nothing
End With

Set ws = Nothing
Set wb = Nothing

End Sub

spero si capisca


la formula è di Cromagno
[Modificato da federico460 30/08/2016 18:52]
Post: 3.349
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
30/08/2016 19:18

questa non elimina le righe
    ' ----------- in modulo standard
    Global lista(), n As Long, max As Long
    Sub genera()
    With Sheets(1)
      prima = 4
      min = 1
      ultima = .Range("B" & .Rows.Count).End(xlUp).Row
      max = ultima - prima + 1
    End With
        n = 1
        Randomize Timer
        ReDim lista(1 To max)
        'genera la lista di numeri consecutivi tra min e max
        For i = min To max
            lista(i - min + 1) = i
        Next
        'quindi la disordina
        For i = 1 To 1000
            r1 = Int(Rnd * (max - min) + min)
            r2 = Int(Rnd * (max - min) + min)
            'swap
            tmp = lista(r1)
            lista(r1) = lista(r2)
            lista(r2) = tmp
        Next
        Sheets(2).Range("C2").ClearContents
    End Sub
    '------- in thisworkbook
    Private Sub Workbook_Open()
    genera
    End Sub
    ' ---------- nel modulo del foglio
    Sub CommandButton1_Click()
    If n > max Then
      MsgBox "Dati esauriti"
      Exit Sub
    End If
    Range("C2") = Sheets(1).Range("B" & lista(n) + 3)
    n = n + 1
    End Sub



[Modificato da patel45 30/08/2016 21:11]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 640
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
31/08/2016 09:11

Ciao
@Patel bella l'idea.

Solo una cosa: ad ogni ciclo l'ultimo estratto è sempre lo stesso: l'ultimo della lista. "Prova20".

Non so l'uso che ne debba fare flaco, ma se il ciclo di estrazioni non avviene nello stesso giorno (o comunque il file si chiude e riapre per continuare), si perdono le estrazioni fatte fino a quel punto e si ricomincia daccapo. Ecco perché insistevo sulla colonna d'appoggio nella quale memorizzare le estrazioni fatte fino a un certo punto. Ovviamente alla nuova apertura si controlla quante già ne siano state fatte.

cari saluti
[Modificato da dodo47 31/08/2016 10:50]
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 02:44. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com