Condividi:        

Filtro/copia, dati 2 valori da altro file

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

Filtro/copia, dati 2 valori da altro file

Postdi Alea » 21/12/11 09:38

Buon giorno a tutti
volevo chiedere gentilmente se qualcuno può darmi una mano per creare una macro che mi copi da un listino prezzi il prezzo di un oggetto in base a 2 criteri contenuti su un altro file. Cerco di spiegare meglio:

Ho un file ("CB-TECH") con 2 fogli:
foglio1 = Riepilogo
foglio2 = QGL

Nel foglio Riepilogo ho questa situazione:
Immagine
in base ai dati che inserisco nelle celle D54:D57 e E54:E57 devo fare un filtro nel file "ListinoPrezzi" nelle celle A3 e B3
Immagine
quindi una volta fatto il filtro
Immagine
copiare il prezzo che corrisponde al valore che si trova nel Foglio Riepilogo nella colonna F.
I dati della colonna F (file "CB-TECH" foglio "Riepilogo") vanno inseriti a mano da 2 a 9 come alla riga 3 tra le celle C e J (file "ListinoPrezzi")


Nel secondo foglio QGL (file "CB-TECH")nelle celle H19:H22 devo inserire i 4 prezzi se ci sono.


Non so se sono riuscito a spiegare il mio problema. Se servono altre informazioni fatemi sapere.
Ringrazio comunque tutti quelli che trovano un po' di tempo per darmi una mano.
Ciao
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Sponsor
 

Re: Filtro/copia, dati 2 valori da altro file

Postdi Anthony47 » 22/12/11 00:05

Per evitare di dover creare un file di test per replicare la tua struttura dati ti chiedo di pubblicare un esempio di file; inoltre, quale versione di excel usi?

Ciao, ti aspettiamo
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Filtro/copia, dati 2 valori da altro file

Postdi Alea » 22/12/11 11:22

Ciao Anthony
purtroppo non sono riuscito a risponderti prima causa lavoro e non sono nemmeno riuscito a crearti un file TEST: quindi ti allego i file originali. :)
Grazie per il tuo tempo
Ivan

File Cb-TECH http://www.megaupload.com/?d=1CH70JWW
File Listino Prezzi http://www.megaupload.com/?d=B3TVZ0PC
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Filtro/copia, dati 2 valori da altro file

Postdi Anthony47 » 22/12/11 15:34

Ora che ho i file ho guardato meglio la richiesta, ma ci sono un paio di cose che non capisco:
-la tabella Scelta Connettori ha 4 righe, quindi immagino che applicando "quelle 4 coppie di clausole" al file Listino_Prezzi verranno filtrate varie righe; non capisco quindi il significato della frase
quindi una volta fatto il filtro
copiare il prezzo che corrisponde al valore che si trova nel Foglio Riepilogo nella colonna F[
Che cosa va copiato e dove va incollato?

Idem mi sfugge il significato della frase successiva
I dati della colonna F (file "CB-TECH" foglio "Riepilogo") vanno inseriti a mano da 2 a 9 come alla riga 3 tra le celle C e J (file "ListinoPrezzi")


Per completare "l' opera", in relazione alla frase:
Nel secondo foglio QGL (file "CB-TECH")nelle celle H19:H22 devo inserire i 4 prezzi se ci sono.
non vedo cosa c' entrano i dati presenti nel file Listino_Prezzi con i dati mostrati nelle celle H19:H22 del foglio QGL10.03b

Insomma per ora sono nel buio...

Inoltre non mi hai detto quale versione excel usi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Filtro/copia, dati 2 valori da altro file

Postdi Alea » 22/12/11 16:09

Ciao Anthony
provo a spiegare meglio come funziona il tutto
tanto per iniziare utilizzo il 2007 però avrei la necessità che il tutto giri sulla 2003.

Nella tabella "Scelta Connettori" i dati che inizialmente sono quelli principali su cui effettuare il filtro sono "Diametro" e "Altezza" che troverai nel file "Listino Prezzi" in A3 e B3 (D e H). A questo punto una volta individuato il tipo di Connettore per diametro e per altezza nel file "Listino Prezzi" bisogna copiare il prezzo (riga 4) in base al numero, che può variare da 2 a 9 (Nr. Pioli Colonna F tabella "scelta connettori"). Questo valore (da 2 a 9) è riportato nelle celle da C3 a J3 nel file "Listino Prezzi".
Il valore che è scritto nella tabella "Scelta Connettori" in colonna G non serve a nulla (ma devo riportarlo perché riguarda la lunghezza del connettore).

Per quanto riguarda la frase:
"Nel secondo foglio QGL (file "CB-TECH")nelle celle H19:H22 devo inserire i 4 prezzi se ci sono.

vuol dire che esiste la possibilità di dover inserire un max di 4 tipi diversi di connettori (per questo ho fatto una tabella "Scelta Connettori" composta da 4 righe). Può essere che di connettori ne abbia un solo tipo, quindi verrà copiato solo 1 prezzo. Le celle dove copiare gli importi si trovano nel foglio QGL10.03b (file "CB-TECH")nelle celle H19:H22
H19 importo connettore riga 54 (tabella "Scelta Connettori")
H20 importo connettore riga 55 (tabella "Scelta Connettori")
H21 importo connettore riga 56 (tabella "Scelta Connettori")
H22 importo connettore riga 57 (tabella "Scelta Connettori")

Spero di essere riuscito a spiegarmi, anche se nella seconda parte del mio post mi sono un po' incasinato da solo. Purtroppo non è facile spiegare per mess :)
Se hai altri dubbi per favore fammi sapere
Ciao Ivan
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Filtro/copia, dati 2 valori da altro file

Postdi Anthony47 » 25/12/11 01:12

Buon Natale; io potro' esaminare l' argomento solo tra un paio di giorni.
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 25/12/11 18:33

Questa macro dovrebbe risolvere il quesito posto

Codice: Seleziona tutto
Sub CompilaPrezzi()
Perc = ThisWorkbook.Path
Set Ws1 = Worksheets("Riepilogo")
Set Ws2 = Worksheets("QGL10.03b")
Dim Dia(4) As Integer
Dim Alt(4) As Integer
Dim Pio(4) As Integer
Dim Pre(4) As Double
For RR = 54 To 57
    Dia(RR - 53) = Ws1.Range("D" & RR).Value
    Alt(RR - 53) = Ws1.Range("E" & RR).Value
    Pio(RR - 53) = Ws1.Range("F" & RR).Value
Next RR

    Set XlDat = Workbooks.Open(Filename:=Perc & "\LISTINO_Prezzi.xls")

UR = Worksheets("ListinoPrezzi").Range("A" & Rows.Count).End(xlUp).Row
For TrV = 1 To 4
    For RRL = 4 To UR
        If Range("A" & RRL).Value = Dia(TrV) And Range("B" & RRL).Value = Alt(TrV) Then
        Pre(TrV) = Cells(RRL, Pio(TrV) + 2)
        GoTo SaltaTrV
        End If
    Next RRL
SaltaTrV:

Next TrV
    XlDat.Close
      Set XlDat = Nothing
For RR = 19 To 22
Ws2.Range("G" & RR).Value = Pre(RR - 18)
Next RR
End Sub


I file "CB-Tech.xls" e "LISTINO_Prezzi.xls" devono stare nella stessa directory, altrimenti cambiare la variabile "Perc"
Il file "LISTINO_Prezzi.xls" deve essere chiuso prima di avviare la macro.

Ho notato comunque che molti Diametri con le Altezze non corrispondono
ad esempio quelli riportati nela tabella "Scelta Connettori" del file inviato ne ha trovato uno solo (il primo)

magari dovremmo fare degli aggiustamenti
come, ad esempio, prelevare il valore più prossimo di Altezza (maggiore o minore di quello in tabella)

Fai sapere

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: Filtro/copia, dati 2 valori da altro file

Postdi Alea » 26/12/11 08:05

Grazie mille Flash la tua macro è perfetta.
Non preoccuparti per le incongruenze, Sono date dal fatto che non ho aggiornato le altezza. Tutte le altezze nel file Listino Prezzi hanno come finale 5 ( 145-205 ecc. ): le ho già portare tutte a 0 e resteranno così.

Per quanto riguarda il percorso purtroppo i due file sono in cartelle diverse. Il file CB-TECH si trova nella cartella di ogni progetto che facciamo mentre il file ListinoPrezzi si trova sul nostro server. Ora non mi ricordo il percorso esatto ma posso garantire che non viene spostato.
Potresti farmi un esempio per la riga del percorso?

Grazie
Ivan
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 26/12/11 08:16

La cosa più semplice è posizionare il file Listino in rete
poi con il tasto destro mouse -> Proprietà
copiare il percorso nella scheda generale ed incollare nella stringa Perc, es.:
Perc = "I:\Cartella1\Cartella2\Cartella3\Dati"
oppure senza riportare la lettera dell'unità di rete:
Perc = "\\CartellaRete\Cartella2\Cartella3\Dati"

Il resto della macro non deve essere modificato

ciao

P.s. per non vedere lo "sfarfallio" dello schermo durante il processo puoi inserire le due righe di codice (una all'inizio macro e l'altra alla fine)
Codice: Seleziona tutto
Sub CompilaPrezzi()
Application.ScreenUpdating = False
'macro
'...
'...
Application.ScreenUpdating = True
End Sub
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: Filtro/copia, dati 2 valori da altro file

Postdi Alea » 09/01/12 09:07

Grazie mille Flash è perfetta
Ciao Ivan
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Filtro/copia, dati 2 valori da altro file

Postdi raimea » 16/09/12 08:48

ciao a tutti
tramite una macro prelevo dei dati da un file (gol) ad un altro (masaniello55)
(e' solo una parte della macro)

Codice: Seleziona tutto
Sub prel1()

Inizio = Timer
UserForm2.Show vbModeless
DoEvents

ActiveSheet.Unprotect

    Range("B4:B103").Select ' tolgo i commenti
    Selection.ClearComments
   
    Range("FA4:Fe103").Select ' cancello dati precedenti
    Selection.ClearContents
    Range("b4:c103").Select   ' cancello dati precedenti
    Selection.ClearContents

Dim masopen As Boolean
ActiveSheet.Unprotect
Application.ScreenUpdating = False

masopen = ckf("gol.xls") '<<< dichiarazione da inserire, fai F8 e vedi, True=file gia' aperto
percorso = Application.ActiveWorkbook.Path
Application.EnableEvents = False  '<<<<<<<< per non far partire il lampeggio in fgl1
Nfile = "\" & "gol.xls"
If masopen = False Then Application.Workbooks.Open percorso & Nfile

'----------- primo prelievo le date-----------------

ActiveSheet.Unprotect
masopen = ckf("gol.xls")
percorso = Application.ActiveWorkbook.Path
Application.EnableEvents = False  '< per non far partire il lampeggio in fgl1
Nfile = "\" & "gol.xls"
If masopen = False Then Application.Workbooks.Open percorso & Nfile
Worksheets("1-gol-Fogl.Base").Activate   ' <<il foglio dal quale dove preleva

'------prelevo solo le celle con date e non quelle vuote-----
Application.Calculation = xlManual

Set Ws1 = Worksheets("1-gol-Fogl.Base")
Set Ws2 = ThisWorkbook.Sheets("masaniello 1")

Inic = 4              ' la riga di ws2 dove iniziare ad incollare i dati
For RR1 = 9 To 308    ' il range ws1 di gol dove operare
If Not IsNumeric(Ws1.Range("c" & RR1).Value) And Ws1.Range("c" & RR1).Value <> "" Then
Ws2.Range("c" & Inic).Value = Ws1.Range("c" & RR1).Value
Inic = Inic + 1
End If
Next RR1
Application.Calculation = xlCalculationAutomatic
'------------------------

Application.EnableEvents = True    '< per non far partire il lampeggio in fgl1

Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen = False Then ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Sheets("masaniello 1").Select
Range("c4").Select  ' la cella ws2 dove incollare i dati


vorrei poter decidere da dove iniziare ad analizzare il file gol, cioe' variare questo comando:
Codice: Seleziona tutto
For RR1 = 9 To 308    ' il range ws1 di gol dove operare


dove anzicche riga 9 dovra' partire dalla riga che io scrivero' nel
file masaniello55 foglio ws2 cella DU23
il termine del controllo 308 quello rimarra' fisso.
grazie
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1433
Iscritto il: 11/02/10 07:33
Località: lago

Re: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 16/09/12 10:44

(con file masaniello aperto)

Codice: Seleziona tutto
Rini = Workbooks("Masaniello55.xls").Worksheets("ws2").Range("DU23").Value
For RR1 = Rini To 308 


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: Filtro/copia, dati 2 valori da altro file

Postdi raimea » 16/09/12 17:34

:-? non va
si', dal file masaniello55 aperto
scrivero' in du23 del fgl ws2 la riga dalla quale iniziare a controllare il file gol
ma mi dice --> indice non incluso nell'intervallo
e si blocca qui
Codice: Seleziona tutto
Rini = Workbooks("Masaniello55.xls").Worksheets("ws2").Range("Du23").Value


nel file masaniello50 la macro Sub prel1() si trova nel modulo 5
per funzionare i 2 file devono essere nella stessa cartella.
provo ad allegare i 2 file

masaniello55 qui:
https://docs.google.com/open?id=0B-1JnJV5VEJMeWkwUV9uZ09SSUk
gol qui:
https://docs.google.com/open?id=0B-1JnJV5VEJMeWkwUV9uZ09SSUk
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1433
Iscritto il: 11/02/10 07:33
Località: lago

Re: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 16/09/12 18:54

Quell'errore avviene se il file non è attivo

I tuoi due link fanno riferimento allo stesso 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: Filtro/copia, dati 2 valori da altro file

Postdi raimea » 16/09/12 19:07

S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1433
Iscritto il: 11/02/10 07:33
Località: lago

Re: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 16/09/12 19:33

C'è stato un equivoco e una errata interpretazione
di questo me ne sono accorto aprendo il file masaniello che non ha alcun foglio nominato "w2"
ma tu ti riferivi al codice macro mentre io al nome del foglio :evil:

quindi il precedente codice dovrà essere modificato così
Codice: Seleziona tutto
Rini = Workbooks("Masaniello55.xls").ws2.Range("DU23").Value
For RR1 = Rini To 308 


Spero che funzioni perché non ho esaminato nessuna delle "infinite" macro contenute nei file

ciao


EDIT ore 20:40 - Guardando ora la macro e supponendo che hai il file Masaniello55.xls attivo
Il codice potrebbe essere modificato così
Codice: Seleziona tutto
Rini = ws2.Range("DU23").Value
For RR1 = Rini To 308 

e se è attivo anche il foglio "Masaniello 1" potrebbe essere ancora semplificato così
Codice: Seleziona tutto
Rini = Range("DU23").Value
For RR1 = Rini To 308 
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: Filtro/copia, dati 2 valori da altro file

Postdi raimea » 16/09/12 19:40

C'è stato un equivoco e una errata interpretazione

:oops: chiedo venia ....
ho provato con
Codice: Seleziona tutto
Rini = Workbooks("Masaniello55.xls").ws2.Range("DU23").Value
For RR1 = Rini To 308 

ma ora mi risponde ---> proprieta' o metodo non sopportati dall'oggetto.

si' ci sono infinite macro ,in particolare nel file gol.
non "scervellarti" flash , pensavo era cosa piu' semplice,

quando mi servira' cambiero manualmente i riferimenti del controllo, entrando nella macro.
Codice: Seleziona tutto
'For RR1 = 9 To 308    ' il range ws1 di gol dove operare


grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1433
Iscritto il: 11/02/10 07:33
Località: lago

Re: Filtro/copia, dati 2 valori da altro file

Postdi raimea » 16/09/12 19:46

:D tutto ok :D
ci siamo accavallati.
con questa:
Codice: Seleziona tutto
Rini = ws2.Range("DU23").Value
For RR1 = Rini To 308 

funziona tutto
grande flash..
come sempre
grazie.
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1433
Iscritto il: 11/02/10 07:33
Località: lago

Re: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 16/09/12 19:52

Fai attenzione
noto cicli ridondati e non volendo leggermi l'intero codice
secondo me potresti includere tutto in un ciclo for next

Codice: Seleziona tutto
'....<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<     una parte di macro
Application.Calculation = xlManual

Set Ws1 = Worksheets("1-gol-Fogl.Base")
Set ws2 = ThisWorkbook.Sheets("masaniello 1")

Inic = 4              ' la riga di ws2 dove iniziare ad incollare i dati
For RR1 = 9 To 308    ' il range ws1 di gol dove operare
If Not IsNumeric(Ws1.Range("G" & RR1).Value) And Ws1.Range("G" & RR1).Value <> "" Then
ws2.Range("B" & Inic).Value = Ws1.Range("G" & RR1).Value
Inic = Inic + 1
End If
Next RR1
Application.Calculation = xlCalculationAutomatic
'------------------------

Application.EnableEvents = True    '< per non far partire il lampeggio in fgl1

Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen = False Then ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Sheets("masaniello 1").Select
Range("B4").Select  ' la cella ws2 dove incollare i dati

'----------- terzo prelievo le quote-----------------

ActiveSheet.Unprotect
masopen = ckf("gol.xls")
percorso = Application.ActiveWorkbook.Path
Application.EnableEvents = False  '< per non far partire il lampeggio in fgl1
Nfile = "\" & "gol.xls"
If masopen = False Then Application.Workbooks.Open percorso & Nfile
Worksheets("1-gol-Fogl.Base").Activate   ' <<il foglio dal quale dove preleva

'filtra---prelevo solo le quote in file gol e non le celle vuote-----

'.................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< seconda parte che secondo me potrebbe essere inserita nel primo ciclo
Application.Calculation = xlManual

Set Ws1 = Worksheets("1-gol-Fogl.Base")
Set ws2 = ThisWorkbook.Sheets("masaniello 1")

Inic = 4              ' la riga di ws2 dove iniziare ad incollare i dati
For RR1 = 9 To 308    ' il range ws1 di gol dove operare
If IsNumeric(Ws1.Range("I" & RR1).Value) And Ws1.Range("I" & RR1).Value <> "" Then
ws2.Range("D" & Inic).Value = Ws1.Range("I" & RR1).Value
Inic = Inic + 1
End If
Next RR1
Application.Calculation = xlCalculationAutomatic
'------------------------

Application.EnableEvents = True    '< per non far partire il lampeggio in fgl1


Vedi nota all'interno macro

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: Filtro/copia, dati 2 valori da altro file

Postdi Flash30005 » 16/09/12 20:03

Aaaaaanzi!

Hai 8 cicli identici :eeh:
che potresti inglobare in un unico ciclo


Ciao

P.s. leggi il post precedente
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-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Filtro/copia, dati 2 valori da altro file":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti