073. Duplicare righe excel modificando il contenuto

Download PDF

Ci scrivono:

Buongiorno,
avrei una piccola esigenza su excel.
ho un elenco di 2000 righe circa con una decina di colonne.
dovrei duplicare le righe n-volte e per ogni riga duplicata modificare i valori di alcune celle aggiungengo dei suffissi\prefissi in base alla colonna.
es.
riga base:
ColA ColB ColC ColD ColE
A B C D E
A1 B1 C1 D1 E1

queste righe dovrei duplicarle n volte creando con questa regola
ColA ColB ColC ColD ColE
A_tex B_pippo C D_miao E_sole
A1_tex B1_pippo C1 D1_miao E1_sole
ciao_A B_pluto C D_zio E
ciao_A1 B1_pluto C1 D1_zio E1

grazie mille del supporto che potrete darmi

Continua a leggere

072. Estrazione numeri casuali

Download PDF

Durante la realizzazione del precedente articolo ‘071. Estrazione casuale valori da un elenco’
ho pensato ad una variante del codice che permettesse di estrarre dei numeri
dopo aver definito il valore minimo e massimo della serie di numeri da cui estrarre,
ed il numero di valori da estrarre.

Questo è il codice:

Continua a leggere

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

068. Invio mail tramite VBA – risposta a mail ricevuta

Download PDF

A seguito di una domanda che mi è stata posta, ho pensato di creare un tool che una volta ricevuta una mail,
permetta di rispondervi utilizzando dei template.
Il funzionamento è semplice:
1) si apre la mail da Outlook
2) si apre il tool in allegato
3) si seleziona nella colonna A l’argomento del template
4) si preme il tasto ‘Rispondi alla mail
La macro di seguito riportata
– crea una mail di risposta alla mail aperta inserendo tutti gli indirizzi mail coinvolti
– inserisce l’oggetto della mail prendendolo dal file excel
– inserisce il testo della mail prendendolo dal file excel

Continua a leggere