di 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