Condividi:        

Macro per copiare nomi da un elenco di dati e per ogni nome

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro per copiare nomi da un elenco di dati e per ogni nome

Postdi elep » 04/07/17 15:13

Buongiorno,
avrei bisogno di un aiuto a creare un macro. Ho un insieme di dati molto ampio (più di 80000 righe per 20 colonne), e nella colonna E sono presenti dei nomi che si ripetono più volte (cioè nella colonna E è possibile trovare lo stesso nome su più righe), e ognuno dei quali è associato a delle caratteristiche espresse nelle celle della stessa riga. Ciò che vorrei che la macro facesse è: prima di tutto, creare una elenco di tutti i differenti nomi presenti nella colonna E, senza ripetizioni (dovrebbero essere più di 500), copiandoli in un altro foglio della cartella; in secondo luogo, vorrei che per ognuno di questi nomi, andasse nell'elenco di partenza e copiasse delle celle (per esempio colonne D e F) sulle righe in cui il nome selezionato è uguale alla cella nella colonna E, in un altro foglio della cartella.
per esempio, ho quesi dati nel foglio 1: (es. colonna E colonna F)
unit1 100
unit1 200
unit3 100
unit4 150
unit2 50
unit3 100
unit2 100
unit1 50

e voglio un elenco di tutti i nomi che si ripetono, presi una sola volta, nel foglio 2:
unit1
unit3
unit4
unit2

Poi, per ognuno di questi nomi elencherò i valori contenuti nelle celle vicine, nel foglio 3:
colonna A: unit1 colonna B:100, 200, 50 (sulla stessa colonna) -- colonna C: unit2 colonnaD: 50 -- ...

(purtroppo non riesco a caricare gli screenshot dell'esempio in excel :( )

Spero di essere stata un po' chiara nella spiegazione. Purtroppo non sono pratica del linguaggio di VBA, e ho provato creare delle macro, con risultati non positivi, e sono convinta esistano delle funzioni in grado di rendere tutto molto più semplice.

Grazie in anticipo per chi mi aiuterà,
Elena
elep
Newbie
 
Post: 4
Iscritto il: 04/07/17 13:32

Sponsor
 

Re: Macro per copiare nomi da un elenco di dati e per ogni n

Postdi alfrimpa » 04/07/17 15:27

Ciao Elep

Purtroppo con le sole parole è difficile capirsi; ti consiglio quindi di allegare un file di esempio con pochi dati (fittizi) ed il risultato desiderato costruito a mano su altro foglio.

Qui ci sono le istruzioni su come allegare un file.

viewtopic.php?f=26&t=103893
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Macro per copiare nomi da un elenco di dati e per ogni n

Postdi elep » 05/07/17 13:15

Ciao,
prima di tutto grazie per la risposta.

http://www.filedropper.com/macro_3

Questo è il file di excel con l'esempio (molto) semplice, in modo tale da darvi un'indea di cosa vorrei riuscire a fare.
primo step: da tutti i dati presenti nel foglio 1, creo nel foglio2 una lista di nomi presenti nella colonna E, che spesso si ripetono (presi solo una volta);
secondo step: per ogni nome della lista nel foglio 2 raccolgo i valori delle celle D e F (possono esserci più righe per ogni nome ovviamente) nel foglio 3, come nell'esempio.

Spero si capisca ;)

grazie ancora,
ELEP
elep
Newbie
 
Post: 4
Iscritto il: 04/07/17 13:32

Re: Macro per copiare nomi da un elenco di dati e per ogni n

Postdi Marius44 » 05/07/17 16:17

Ciao Elep
con un po' di sforzo ci saresti arrivata anche da sola :)
In genere si allegano anche le prove fatte specificando cosa non dà il risultato voluto. Così è come fare il lavoro al posto tuo e, per non darti la "pappa pronta", ti posto il codice che dovrai adattare alle tue esigenze.
La macro innanzi tutto copia l'elenco di Foglio1 in Foglio2, elimina i doppioni e mette in ordine i nomi residui. Quindi confronta tutti i nomi così filtrati con quelli di Foglio1 e, a riscontro positivo, elenca i dati nel Foglio3.
Ecco il codice (ribadisco, da adattare alle tue esigenze)
Codice: Seleziona tutto
Option Explicit

Sub riporto_dati()
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
Dim ur1 As Long, ur2 As Long, i As Long, j As Long, a As Long, b As Long
Dim residui As Range, crit As Range
'
Set sh1 = Sheets("Foglio1")
Set sh2 = Sheets("Foglio2")
Set sh3 = Sheets("Foglio3")
'
'copio/incollo/elimino_duplicati/ordino
    ur1 = sh1.Cells(Rows.Count, 5).End(xlUp).Row
    sh1.Range("E2:E" & ur1).Copy
    sh2.Range("C3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    sh2.Range("$C$3:$C$" & ur1 + 1).RemoveDuplicates Columns:=1, Header:=xlNo
    ur2 = sh2.Cells(Rows.Count, 3).End(xlUp).Row
    Set residui = sh2.Range("C3:C" & ur2)
    Set crit = sh2.Range("C3")
    residui.Sort Key1:=crit, Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'
    a = 10: b = 1
    For i = 3 To ur2
        sh3.Cells(a, b) = sh2.Cells(i, 3)
        For j = 2 To ur1
            If sh2.Cells(i, 3) = sh1.Cells(j, 5) Then
                sh3.Cells(a, b + 1) = sh1.Cells(j, 4)
                sh3.Cells(a, b + 2) = sh1.Cells(j, 6)
                a = a + 1
            End If
        Next j
        a = 10: b = b + 3
    Next i
'
'clean up
Set sh1 = Nothing
Set sh2 = Nothing
Set sh3 = Nothing
Set residui = Nothing
Set crit = Nothing
End Sub


Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Macro per copiare nomi da un elenco di dati e per ogni n

Postdi elep » 06/07/17 14:37

Ciao Mario,
prima di tutto grazie per la risposta. Il codice funziona e sono riuscita a risolvere il mio problema con i dati :)

Mi dispiace, la mia esperienza di programmazione si limita all'uso di Matlab (tra l'altro per risolvere problemi di calcolo numerico :oops: ), e quindi ci sarei arrivata veraaaaamente a fatica ad un risultato del genere!

Quindi ti saluto e ti ringrazio ancora,
ELEP
elep
Newbie
 
Post: 4
Iscritto il: 04/07/17 13:32


Torna a Applicazioni Office Windows


Topic correlati a "Macro per copiare nomi da un elenco di dati e per ogni nome":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti