Condividi:        

[Excel] Copiare dati in base a valore menu tendina

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

[Excel] Copiare dati in base a valore menu tendina

Postdi bome » 28/09/14 15:38

Penso che il problema sia di semplice soluzione... ma non ne vengo a capo. :(
Ho un menù a tendina che viene aggiornato in base ai fogli presenti nel Workbook.
Io voglio semplicemente una formula da mettere nel foglio dove è presente il menù a tendina che vada a prendere i dati dal foglio selezionato nel menù a tendina(cella b3). Il range da copiare è b2->P2... b180->p180 (o meglio fino a che trova valori visto che non è fisso)

Il massimo che sono riuscito a fare è questo:
=INDIRETTO(INDIRIZZO(13;11;1;;B3))
Funziona ma purtroppo mi copia una sola cella alla volta. Sarebbe perfetta una cosa del genere ma che copi tutto il blocco e non solo una cella alla volta.

Vi ringrazio per l'aiuto.
Microsoft Office 2010
bome
Utente Junior
 
Post: 18
Iscritto il: 04/08/14 18:24

Sponsor
 

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi Flash30005 » 28/09/14 23:12

Penso occorra una macro e per realizzarla sarebbe opportuno visionare la cartella di Excel anche perché non dici dove dovrebbero essere copiati i dati.
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi bome » 30/09/14 00:07

Ok come immaginavo serve per forza una macro.
In pratica la macro deve selezionare tutte le righe che hanno valore inferiore o uguale a 180 nella colonna B del foglio indicato nella cella B3 del foglio 0001 GRAFICO. Poi deve incollarle nello stesso foglio 0001 GRAFICO alla destra del menù a tendina.

Ecco il link al foglio di lavoro:
https://www.dropbox.com/s/718758mcg3rju ... .xlsm?dl=0

Grazie!
Microsoft Office 2010
bome
Utente Junior
 
Post: 18
Iscritto il: 04/08/14 18:24

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi Flash30005 » 30/09/14 01:52

Allora in un modulo incolla il seguente codice
Codice: Seleziona tutto
Public NomeF As String

Sub RiportaSE()
NF = Sheets(NomeF).Range("B3").Value
Application.EnableEvents = False
UR1 = Worksheets(NF).Range("B" & Rows.Count).End(xlUp).Row
For RR1 = 4 To UR1
    If Worksheets(NF).Range("B" & RR1).Value <= 180 Then
        Worksheets(NomeF).Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Value = Worksheets(NF).Range("B" & RR1).Value
    End If
Next RR1
Worksheets(NomeF).Columns("D:D").HorizontalAlignment = xlRight
Application.EnableEvents = True
End Sub

il codice compilerà la colonna D di "0001_GRAFICO"
per attivare la macro però dobbiamo inserire quest'altro codice che andrà nel Vba del foglio stesso (0001_GRAFICO) e non nel modulo
quindi copia e incolla nel vba del foglio questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$3" Then Exit Sub
    NomeF = ActiveSheet.Name
    Worksheets(NomeF).Columns(4).ClearContents
    RiportaSE
End Sub

Ad ogni variazione della cella B3 del foglio "0001_GRAFICO" avrai la compilazione della colonna D con i valori come da condizione (inferiore o uguale 180 del foglio selezionato in B3)


Se hai problemi scarica questo file

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi bome » 30/09/14 10:20

Grazie per la risposta!
Ho avuto un problema del codice. Mi dava un errore ma ho risolto mettendo NomeF = ActiveSheet.Name subito dopo Sub RiportaSE().
Così funziona e copia la colonna B del foglio selezionato nella colonna D di 0001 GRAFICO.
Ma la mia intenzione era copiare anche tutte le altre colonne o se più comodo tutto il foglio tranne le righe che hanno valore superiore a 180.

Ciao
Microsoft Office 2010
bome
Utente Junior
 
Post: 18
Iscritto il: 04/08/14 18:24

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi Flash30005 » 30/09/14 13:42

Il problema che hai avuto è perché non hai copiato l'intera macro e magari hai dimenticato di mettere
Public NomeF as string

comunque sostituisci la macro (nel modulo con questa
Codice: Seleziona tutto
Public NomeF As String

Sub RiportaSE()
NF = Sheets(NomeF).Range("B3").Value
Application.EnableEvents = False
UR1 = Worksheets(NF).Range("B" & Rows.Count).End(xlUp).Row
For RR1 = 4 To UR1
    If Worksheets(NF).Range("B" & RR1).Value <= 180 Then
    Worksheets(NF).Range("B" & RR1 & ":P" & RR1).Copy Destination:=Worksheets(NomeF).Cells(Rows.Count, 4).End(xlUp).Offset(1, 0)
    End If
Next RR1
Worksheets(NomeF).Columns("D:D").HorizontalAlignment = xlRight
Application.EnableEvents = True
End Sub


e nel codice del foglio "00001_GRAFICO" sostituirai con questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$3" Then Exit Sub
    NomeF = ActiveSheet.Name
    Worksheets(NomeF).Range("D:Z").ClearContents
    RiportaSE
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi bome » 30/09/14 22:59

Hai ragione ho fatto proprio quell'errore.
Funziona tutto perfettamente!

Grazie!
Microsoft Office 2010
bome
Utente Junior
 
Post: 18
Iscritto il: 04/08/14 18:24

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi bome » 08/10/14 09:41

Scusa se rompo ancora. Ma se volessi modificare il codice in modo tale che apra in automatico uno ad uno i fogli per poter aggiornare in automatico tutto il foglio di calcolo? E' possibile?

Grazie!
Microsoft Office 2010
bome
Utente Junior
 
Post: 18
Iscritto il: 04/08/14 18:24

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi Anthony47 » 15/10/14 22:42

Mi guardo bene da cercare di capire cosa avete fatto mentre io poltrivo... Comunque se basta attivare uno dopo l' altro i singoli fogli del workbook potrebbe aiutare questo codice:
Codice: Seleziona tutto
For I= 1 to ThisWorkbook.Sheets.Count
     Sheets(I).Select
next I
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare dati in base a valore menu tendina

Postdi bome » 16/10/14 15:01

Perfetto! Grazie!
Microsoft Office 2010
bome
Utente Junior
 
Post: 18
Iscritto il: 04/08/14 18:24


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Copiare dati in base a valore menu tendina":


Chi c’è in linea

Visitano il forum: papiriof e 74 ospiti