Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

funzione excel 2003 complessa

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

Re: funzione excel 2003 complessa

Postdi Anthony47 » 10/02/11 19:22

Intendiamoci:
le istruzioni che ti ho dato copiano la formula in N2 sulle celle sottostanti, fino all' ultima riga occupata di col A. Questo l' ho immaginato sulla base dei formati che hai pubblicato.

Se vuoi fare una cosa diversa allora vanno usate istruzioni diverse; ma per questo dovresti chiarire tu l' esigenza che hai in mente...

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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: funzione excel 2003 complessa

Postdi libraio » 10/02/11 20:15

Hai ragione, Anthony;
il protrarsi dei post ha annacquato il soggetto delle richieste. Cerco di riassumere:

1) in una cartella Excel importo in Foglio1 Listino Prezzi Aggiornato Editore ed in Foglio2 Listino Prezzi da aggiornare (estratto da mio gestionale).
Gli elementi caratterizzanti sono: in colonna A il codice Articolo ed in colonna L i Prezzi.
In colonna N applico la tua formula (perfetta) che mi riporta il Prezzo Aggiornato da Foglio1,se variato rispetto al corrispondente in Foglio2, la dicitura "invariato" se il prezzo è rimasto uguale, la dicitura "manca" se l'articolo in foglio2 non trova corrispondenza in Foglio1.
Riporto per comodità la formula:
=SE(VAL.ERRORE(CERCA.VERT(B2;Foglio1!A:L;12;0));"manca";SE(CERCA.VERT(B2;Foglio1!A:L;12;0)<>M2;CERCA.VERT(B2;Foglio1!A:L;12;0);"invariato"))

2) a questo punto ho pensato di creare una semplice macro per automatizzare il lavoro.

Sub Applica_Formula()
Range("N2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-12],Foglio1!C[-13]:C[-2],12,0)),""manca"",IF(VLOOKUP(RC[-12],Foglio1!C[-13]:C[-2],12,0)<>RC[-1],VLOOKUP(RC[-12],Foglio1!C[-13]:C[-2],12,0),""invariato""))"
Selection.AutoFill Destination:=Range("N2:N1123")
Range("N2:N1123").Select
End Sub

La macro funziona bene, ma vincola il range di ricerca a 1123 righe (dovute alla prima applicazione).
Poichè le righe variano secondo i listini editoriali che vado di volta in volta ad inserire, io vorrei (ma non so come, malgrado diversi tentativi...) inserire 0 modificare la stessa macro in modo che la ricerca fosse applicata a tutte le celle della colonna A in Foglio2.

Spero di non essere stato troppo "barboso", posso comunque continuare ad applicare manualmente la formula per ogni listino che vado a verificare.
Ti ringrazio ed ammiro sinceramente la tua cortesia
libraio
libraio
Utente Senior
 
Post: 211
Iscritto il: 04/01/10 20:31

Re: funzione excel 2003 complessa

Postdi Anthony47 » 10/02/11 23:25

Ok, mi pare che confermi che la logica e' "riportare la formula scritta in N2 (di Foglio2) nelle righe sottostanti, per tutte le righe che in col A hanno un codice. Giusto?
Alcune domande:
-in quale "modulo" dell' edito vba e' scritta la Sub replicaN2 (cosa leggi in testa alla finestra dove leggi la macro, nella riga di intestazione della finestra; quella in genere blu ma dipende dalle impostazioni)
-cosa ti compare nel messagebox se usi questa macro
Codice: Seleziona tutto
Sub replicaN2()
Range("N3:N" & Rows.Count).Clear
Msgbox(Cells(Rows.Count, 1).End(xlUp).Row)  'AGGIUNTA PER PROVA
Range("N2").Copy Destination:=Range("N2").Resize(Cells(Rows.Count, 1).End(xlUp).Row)
End Sub
-quale e' l' ultima cella di Foglio2 col A che contiene un codice

Infine, ma questa e' in effetti la prima prova da fare, vedi se usando questa cambia qualcosa:
Codice: Seleziona tutto
Range("N2").Copy Destination:=Range("N2").Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1)

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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: funzione excel 2003 complessa

Postdi libraio » 11/02/11 17:05

Ciao Anthony,
penso proprio di "gettare la spugna"... e risolvere il lavoro con il metodo manuale.
In merito al tuo ultimo post posso dirti che il msgbox del codice impostatomi è "1".
con il codice da te indicatomi non ottengo alcun risultato (sbaglierò qualcosa... ma a questo punto sono in confuzione informatica totale).
Per tua eventuale curiosità (senza vincoli!) eccoti la cartella di lavoro
http://ul.to/plnq88
in cui la macro funziona, ma vincola il numero delle righe di ricerca.
Vorrà dire che una volta applicata ai diversi listini, interverro manualmente sulla colonna N, adattandola alle righe occupate.
Comunque GRAZIE
libraio
Utente Senior
 
Post: 211
Iscritto il: 04/01/10 20:31

Re: funzione excel 2003 complessa

Postdi Anthony47 » 11/02/11 18:10

libraio ha scritto:penso proprio di "gettare la spugna"... e risolvere il lavoro con il metodo manuale.

Se vuoi potresti anche provare a formattare il pc :D … In alternativa leggi quanto ti scrivevo un paio di messaggi fa:
Anthony ha scritto:le istruzioni che ti ho dato copiano la formula in N2 sulle celle sottostanti, fino all' ultima riga occupata di col A.

E ti si sarebbe accesa una lucina se non avessi trascurato l' ultima domanda che ti ho fatto ieri sera:
Anthony ha scritto:quale e' l' ultima cella di Foglio2 col A che contiene un codice"


Poiche' i tuoi dati cominciano in col B dovrai modificare la macro:
Codice: Seleziona tutto
Range("N2").Copy Destination:=Range("N2").Resize(Cells(Rows.Count, 2).End(xlUp).Row)

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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: funzione excel 2003 complessa

Postdi libraio » 11/02/11 19:12

Hai ragione, spesso mi viene la tentazione di formattare il PC: in una pressa!
Tornassero Freud e Jung avrebbero di che lavorare...
Ovviamente la tua soluzione dell'errore è stata repentina (attesso funziona tutto!), ma io continuo ad avere probremi con la sintassi dei codici (non avrei proprio saputo individuare la colonna B in quel "2" tra le virgole) e non sono riuscito ancora a trovare un buon manuale sulla scrittura/lettura delle macro per iniziare "bene" (malgrado la mia professione); mi affido quindi all'empirismo...
Grazie
libraio
Utente Senior
 
Post: 211
Iscritto il: 04/01/10 20:31

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "funzione excel 2003 complessa":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti