| | 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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 |
|
|