Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

crazione macro per excel

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

crazione macro per excel

Postdi francescov.79 » 26/02/10 13:10

Salve a tutti, c'è qualcuno che può darmi una mano a creare una macro in excel?
Il problema è questo:ho un file xls con molte info che utilizzo come database che di volta in volta aggiorno manualmente. E' possibile che i dati vengano aggiornati tramite una macro e magari quelli aggiornati scritti in rosso o in verde.
Tengo a precisare che le colonne dalla A alla J sino al record 9000 devono sempre rimanere invariate mentre tutte le altre vengono aggiornate. il file con gli aggiornamenti è sempre in excel, e l'impostazione è come quella del database. é possibili fare qualche cosa?
Grazie Saluti
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Sponsor
 

Re: crazione macro per excel

Postdi ricky53 » 26/02/10 15:33

Ciao,
benvenuto nel forum.

Qualche altre informazione.

ES.: struttura dati, celle da cui prendere i dati, dove mettere i dati, ...

Se descrivi cosa effettivamente ti occorre sarà più semplice aiutarti.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: crazione macro per excel

Postdi francescov.79 » 26/02/10 22:01

il file database è così composto: la riga n° 1 per tutte le colonne sino alla AT non deve essere modificata. Le righe che vanno dalla 2 alla 9000 sino alla colonna J non devono essere modificate. Tutte le altre dovrebbero tramite macro essere sottoposte ad aggiornamento. Il file che secondario che viene utilizzato come aggiornamento non ha tutte le 9000 righe come il data base ma ha sicuramente sempre dalla riga 2 alla n° tot sino alla colonna J. Le informazioni presenti su queste righe sono identiche a quelle del database ma magari non si trovano nello stesso numero di riga. La macro dovrebbe cercare nel database la stessa informazione che si trova nella cella che va dalla riga 2 A alla J per tutte le righe sino alla 9000, e sostituire se qualche campo è cambiato le celle rispettive che vanno dalla colonna K alla colonna AT.
Per me è chiaro ma non so se sono riuscito a spiegarmi.
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Anthony47 » 27/02/10 01:08

Quindi tu vorresti che per ogni riga sul file "Secondario" venga scansionato il file "Database" e se trova una riga dove tutte le celle A:J sono uguali tra i due file allora le colonne K:AT di Secondario vengano copiate in K:AT di Database?
Ai fini della velocita' di esecuzione, e non della complessita' della macro, sei sicuro che sia necessario per ogni riga verificare che tutte le 10 celle siano uguali, o non se ne possono saltare alcune?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: crazione macro per excel

Postdi francescov.79 » 27/02/10 09:00

devo obbligatoriamente controllarle tutte, magari quelle che vengono sostituite marcarle di un'altro colore
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Flash30005 » 27/02/10 13:38

Prova questa macro

Codice: Seleziona tutto
Sub Trova()
 URN = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
 URO = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
 For RN = 2 To URN
 Nuovo = ""
    For SN = 1 To 10
        Nuovo = Nuovo & Sheets("Foglio2").Cells(RN, SN).Value
    Next SN
    For RO = 2 To URO
        Old = ""
        For SO = 1 To 10
            Old = Old & Sheets("Foglio1").Cells(RO, SO).Value
        Next SO
        If Nuovo = Old Then
            Worksheets("Foglio2").Range("K" & RN & ":AT" & RN).Copy Destination:=Worksheets("Foglio1").Range("K" & RO)
            GoTo Salta
        End If
    Next RO
Salta:
Next RN
End Sub

Dove in Foglio1 hai i dati "Vecchi"
e in Foglio2 quelli Nuovi

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: crazione macro per excel

Postdi francescov.79 » 28/02/10 14:21

Ho provato la macro ma quando la mando in esecuzione excel non risponde più anche dopo 30' di attesa. Credo che la macro abbia qualche problema.
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Flash30005 » 28/02/10 21:16

francescov.79 ha scritto:Ho provato la macro ma quando la mando in esecuzione excel non risponde più anche dopo 30' di attesa. Credo che la macro abbia qualche problema.


Dubito! :roll:

Testo sempre ciò che invio ;)

prova a scaricare questo file e premi il pulsante avvia

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: crazione macro per excel

Postdi francescov.79 » 01/03/10 20:25

Scusami hai ragione funziona!!!!!
Un'ultima cosa è possibile marcare di un'altro colore solo i nuovi dati riportati?

Grazie ancora
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Flash30005 » 02/03/10 02:15

E possibilissimo marcare con un altro colore i nuovi dati riportati specificando però quali sono i nuovi dati.

Intendo dire oggi aggiorni e hai i "nuovi" dati di colore rosso e rimangono rossi anche domani
quindi passa un giorno e avrai altri nuovi dati da inserire e i nuovi dati di ieri di che colore dovranno divenire?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: crazione macro per excel

Postdi francescov.79 » 02/03/10 11:55

Una volta visionati i dati importati, riporto tutto i caratteri di colore nero così la prossima volta alla nuova importazione avrò i nuovi dati di colore rosso.
Penso sia la cosa più semplice
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Flash30005 » 03/03/10 03:23

Sostituisci tutta la macro con questa
(è la modifica più semplice che potessi fare)
Codice: Seleziona tutto
Sub Trova()
URN = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
URO = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Foglio1").Range("K2:AT" & URO).Font.ColorIndex = 0
Sheets("Foglio2").Range("K2:AT" & URN).Font.ColorIndex = 3
For RN = 2 To URN
Nuovo = ""
    For SN = 1 To 10
        Nuovo = Nuovo & Sheets("Foglio2").Cells(RN, SN).Value
    Next SN
    For RO = 2 To URO
        Old = ""
        For SO = 1 To 10
            Old = Old & Sheets("Foglio1").Cells(RO, SO).Value
        Next SO
        If Nuovo = Old Then
            Worksheets("Foglio2").Range("K" & RN & ":AT" & RN).Copy Destination:=Worksheets("Foglio1").Range("K" & RO)
            GoTo Salta
        End If
    Next RO
Salta:
Next RN
Sheets("Foglio2").Range("K2:AT" & URN).Font.ColorIndex = 0
End Sub

All'avvio, la macro provvede a colorare di nero il carattere del foglio1 in maniera tale che saprai sempre (se ci sono cambiamenti) senza che intervieni manualmente

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: crazione macro per excel

Postdi francescov.79 » 03/03/10 14:03

Funziona, per quanto riguarda il colore non è proprio quello che cercavo.
Il problema è che la macro fa diventare rosso sempre tutte le informazioni che erano già inserite anche quelle Vecchie.
Mi servirebbe invece che i dati importati magari la volta precedente se non cambiano alla nuova importazione rimangono neri mentre le celle sovrascritte o informazioni totalmente nuove siano in rosse.
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Flash30005 » 03/03/10 21:41

No, forse non la stai utilizzando come dovrebbe essere utilizzata.
all'avvio hai il foglio1 (listino da aggiornare) che chiamiamo Listino vecchio e nel foglio2 i nuovi prodotti che nel caso dovessero avere 10 campi (dalla colonna A alla colonna J) uguali al vechio listino andranno a modificare i 36 campi rimanenti (dalla colonna K alla colonna AT).
supponendo che i 10 campi siano una lettera e i 36 campi siano un numero avremo nel foglio1:
A 3
B 5
C 7
nel foglio2
G 4
B 8
L 1
dopo l'esecuzione della macro troverai il foglio1 in questa maniera
A 3
B 8
C 7
e il valore 8 sarà di colore rosso

al successivo aggiornamento con foglio2
F 6
C 9
K 2
avrai il foglio1
A 3
B 8
C 9
con il 9 di colore rosso (e solo il 9 di C) il valore di B è tornato nero

Questo mi è sembrato di capire dalla tua esposizione (eventualmente rileggi attentamente la tua specifica)
e questo viene eseguito dalla macro anche molto bene.

E' chiaro che se ripeti sempre la macro senza variare il foglio2 otterrai sempre lo stesso risultato e avrai le stesse celle in rosso

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: crazione macro per excel

Postdi francescov.79 » 04/03/10 09:33

Scusami se insisto ma la macro non fa quello che tu mi hai scritto in merito al colore. Infatti tutte le informazioni anche se vecchie tornano rosse alla nuova importazione es
Foglio 1
A1
L2
S2
Foglio1
A1
L2
S4
Dopo l'imprtazione dei dati sul foglio 1
A1
L2
S4
L'informazione S4 diventa rossa. Ad una successiva importazione dove magari cambia un'altra cella, diventa rossa ma anche la cella s4 che già si trovava nel foglio 1 importato precedentemente diventa nuovamente rossa.
A questo punto mi ritrovo la nuova cella rossa e la cella precedentemente importata rossa(S4). In questa maniera non riesco più a capire quali sono le informazioni importate per ultimo.
francescov.79
Newbie
 
Post: 8
Iscritto il: 26/02/10 09:35

Re: crazione macro per excel

Postdi Flash30005 » 04/03/10 22:15

Nel tuo primo e secondo post non si comprende che
se i dati dalla colonna K a AT sono uguali non deve aggiornare e quindi non deve colorare.
ma si intendeva che se da A a J i dati fossero uguali si dovevano "aggiornarare" le colonne da K a AT e colorarle.

Comunque prova questa macro

Codice: Seleziona tutto
Sub Trova()
URN = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
URO = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Foglio1").Range("K2:AT" & URO).Font.ColorIndex = 0
Sheets("Foglio2").Range("K2:AT" & URN).Font.ColorIndex = 3
For RN = 2 To URN
    Nuovo = ""
    ValN = ""
    For SN = 1 To 10
        Nuovo = Nuovo & Sheets("Foglio2").Cells(RN, SN).Value
    Next SN
    For VN = 11 To 46
        ValN = ValN & Sheets("Foglio2").Cells(RN, VN).Value
    Next VN
    For RO = 2 To URO
        Old = ""
        ValO = ""
        For SO = 1 To 10
            Old = Old & Sheets("Foglio1").Cells(RO, SO).Value
        Next SO
        For VO = 11 To 46
            ValO = ValO & Sheets("Foglio1").Cells(RO, VO).Value
        Next VO
        If Nuovo = Old Then
            If ValN <> ValO Then
                Worksheets("Foglio2").Range("K" & RN & ":AT" & RN).Copy Destination:=Worksheets("Foglio1").Range("K" & RO)
            End If
            GoTo Salta
        End If
    Next RO
Salta:
Next RN
Sheets("Foglio2").Range("K2:AT" & URN).Font.ColorIndex = 0
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "crazione macro per excel":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti

cron