071. Estrazione casuale valori da un elenco

Download PDF

Ci scrivono:

Buonasera, io dovrei estrarre, casualmente, da una colonna di 170 celle 40 celle. Mi potreste dare info su la funzione da utilizzare ? Grazie

<!–more–>

Risposta:

Dopo aver indicato nella cella D1 il numero di valori che voglio estrarre dal mio elenco
basta premere il bottone “ESTRAI” che esegue il seguente codice (commentato):

Public Sub EstraiCelleDaElenco()

Dim arr As New Collection
Dim i As Long
Dim IndiceCasuale As String

Dim DA_ESTRARRE As Integer
DA_ESTRARRE = Sheet1.Range("D1")


'---------------------------------------------------------------------------------------'
'Pulisco colonna dove estrarre i numeri

Sheet2.Select
Last_Row2 = Sheet2.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

If Last_Row2 > 1 Then
   Sheet2.Range(Cells(2, 1), Cells(Last_Row2, 1)).ClearContents
End If
'---------------------------------------------------------------------------------------'

 
'Individuo ultima riga non vuota dell'elenco

MAX = Sheet1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'Definisco intervallo inferiore (indice della prima riga contente i dati)
MIN = 2  'é la riga del primo elemento dell'elenco


'Ripeto il ciclo DO-LOOP fino a quando il numero di elementi contenuti nel vettore 'arr'
'è uguale al numero degli elementi da estrarre 'DA_ESTRARRE

Do Until arr.Count = DA_ESTRARRE
'estraggo un numero da inserire in un vettore
   IndiceCasuale = Int((MAX - MIN + 1) * Rnd + MIN)
'Se il numero fosse già presente nel vettore, non sarebbe possibile inserirlo e si genererebbe un errore.
'Ottengo quindi il risultato voluto (estrazione senza ripetizione)
'e faccio riprendere il ciclo
On Error Resume Next
arr.Add IndiceCasuale, IndiceCasuale

Loop
 

For i = 1 To arr.Count

'Ricalcolo l'ultima riga vuota del foglio in cui estrarre i dati
Last_Row2 = Sheet2.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

'Copio nel foglio ESTRAZIONE i valori del foglio DATI
'utilizzando i numeri di riga casuali estratti precedentemente ed inseriti nel vettore arr
'di cui prendo gli gli elementi 'i' dal numero 1 all'ultimo arr.Count

 Sheet2.Cells(Last_Row2 + 1, 1) = Sheet1.Cells(arr(i), 1)

Next

End Sub

A voi il file:
APRI

Riccardo Vincenti

070. Contare dati univoci senza Pivot

Download PDF

Domanda:

Ricevo ogni mese un numero di bancali che lavorati diventano maggiori. Voglio calcolare per mese quanti bancali ho lavorato. Il problema che i bancali hanno un nome (UDL) che si ripete sugli stessi bancali, es.:
Data Colli Articolo U.M. Qta UDL
23/12/2016 1 122392131018 PZ 1 UDL1700016
23/12/2016 122392131018 PZ 1 UDL1700016
23/12/2016 122392831011 PZ 1 UDL1700016
23/12/2016 122392831011 PZ 1 UDL1700016
28/12/2016 2 02319920 PZ 1 UDL1700004
28/12/2016 02319920 PZ 1 UDL1700004
28/12/2016 21150654 PZ 1 UDL1700004
28/12/2016 02239912 PZ 1 UDL1700004
28/12/2016 02319940 PZ 1 UDL1700002
28/12/2016 03020NLC PZ 1 UDL1700002
28/12/2016 03020NME PZ 1 UDL1700002
28/12/2016 02113192 PZ 1 UDL1700003
28/12/2016 01071087 PZ 1 UDL1700001
quindi ricevuti 3 colli ma in totale sono 5 bancali se leggi gli UDL che si ripetono.
Non riesco a farmi restituire il totale degli UDL = 5

Continua a leggere

069. Aggiungere intervalli ad una data: Date Add in Excel

Download PDF

Domanda:

sto cercando di avere scadenze semestrali in successione su una riga
in K5 inserisco data iniziale
quindi poi in N5 inserisco =SE(VAL.VUOTO(K5);””;SOMMA(K5+180))
tutto ok
quando vado ad inserire in P5 =SE(VAL.VUOTO(N5);””;SOMMA(N5+180))
mi restituisce #valore
praticamente ho capito che il problema sta nel fatto che N5 no risulta vuota ma contiene la formula precedente e quindi mi crea l’errore successivo ma non riesco a trovare la soluzione , è possibile un aiuto?

Continua a leggere

063. Avvio Macro con condizione

Download PDF

Domanda:

Spero possiate darmi una mano nella risoluzione del problema che tento di spiegare qui di seguito.
Ho un foglio Excel che preleva dei dati dal web ad intervalli regolari.
Il valore numerico “A” ora prelevato, viene confrontato con il valore “B” prelevato in precedenza.
Se “A” > “B” si deve avviare la macro “Pippo”.
Se “A” = “B” si deve avviare la macro “Pluto”.
Se “A” < "B" si deve avviare la macro "Paperino".
È possibile farlo?

Risposta:
Continua a leggere

062. Arrotondare per Difetto/Eccesso

Download PDF

Domanda:

Nelle celle della colonna B, (formattate a valuta € con 2 decimali) ho la seguente formula (dove x sta per il numero della riga): =(ax*2,6).
Dovendo arrotondare il risultato della moltiplicazione all’euro, avrei la necessità di inserire l’arrotondamento matematico ma con visualizzazione del risultato con due zeri dopo la virgola.
Es: 3*2,6 = € 7,80 io ho la necessità che risulti 8,00
Es: 4*2,6 = € 10,40 io ho la necessità che risulti 10,00
In attesa di una sua risposta le porgo i miei complimenti e le invio cordiali saluti.

Risposta:
Continua a leggere

061. Trasportare un elenco di numeri in orizzontale

Download PDF

Domanda:

Ho cinquanta e più righe.
in ognuna di queste righe ci possono essere da uno a cinque numeri,
ad es. A1 B1 C1 D1 D1
riga 1 > 32 44 31 28 5
riga 2 > 2 30 27 4 1
riga 3 > 7 13 41 8
riga 4 > 6 48 50 49 68
riga 5 > 81 18 15 3
riga 6 > 66 55 85
vorrei che il tutto fosse trasportato in una sola riga, ad es.
A1 B1 C1 D1 E1 F1 G1 H1 I1 L1
riga 1 > 32 44 31 28 5 2 30 27 4 1 etc etc.

Risposta:
Continua a leggere