› Excel e gli applicativi Microsoft Office › Confronto voci listini
-
AutoreArticoli
-
Ciao a tutti.
Chiedo il vostro aiuto per riuscire ad automatizzare il confronto fra le descrizioni di due listini prezzi di due anni diversi. In pratica il codice articoli è sempre lo stesso, ma voglio appurare che non abbiano cambiato la descrizione estesa in qualche parte.
Premetto che i listini sono in pdf, quindi in allegato ho fatto del mio meglio per raccogliere i dati.
Ho anche inserito una macro che mi hanno passato, ma vede tutto diverso.
A me basta sapere se il contenuto è lo stesso, non maiuscole/minuscole, spazi o formattazione.
Grazie molte a chi avrà la cortesia di aiutarmi!
Allegati:
You must be logged in to view attached files.Ciao
io molto semplicemente mi scriverei la formula =UPPER(A4)=UPPER(G4) in M4 e poi la copiere a destra e in basso.
mi scrive true se sono uguali e false se sono diversi.
trasformando tutto in maiuscole ti levi quel problema, la formattazione non conta. gli spazi sì in quanto sono caratteri diversi.
potresti anche semplicemente usare una formattazione condizionale facendo colorare le celle che sono tra loro diverse.
Ciao
Luca
Ciao Luca
Grazie Luca.
Ma UPPER non viene riconosciuta come funzione e la formattazione condizionale dà sempre errore perché li riconosce sempre come testi diversi.
Ciao
La funzione indicata da Luca73 (un caro saluto) in italiano è MAIUSC quindi la formula suggerita diventa
=MAIUSC(C4)=MAIUSC(I4)
ma a me dà sempre Falso perchè, ritengo, il contenuto "visibile" della cella C4 è il risultato di una formula.
Ciao,
Mario
Grazie del riscontro Mario...ho cercato anch'io delle formule equivalenti ma nessuna funziona come vorrei. Mi chiedo se VB possa aiutarmi meglio a questo punto. Non posso fidarmi del controllo a vista perché sono 9600 voci..sicuramente sbaglierei qualcosa
M.
Ok ho capito...ma l'ho provata e non riconosce due testi uguali se ci sono formattazioni diverse!
Ciao Michela
Premetto che i listini sono in pdf, quindi in allegato ho fatto del mio meglio per raccogliere i dati.
Penso che l'errore sia nel riporto del testo da PDF a Excel.
Probabilmente c'è, all'interno, qualche spazio in più ovvero un "a capo" fuori posto.
Come hai riportato il testo da PDF a Excel? Lo hai fatto manualmente ovvero con qualche altro sistema?
Ciao,
Mario
La macro sotto ottiene il risultato atteso.
Come si vede, ho cercato di prevedere i casi possibili utilizzando la funzione Replace$() per 'allineare' le stringhe.
Nessuna cella del foglio viene modificata ma, come si può osservare, sono state usate variabili temporanee.Segnalo un errore nella formula utilizzata nella colonna C perché non riporta il punto (.) finale della stringa.
Infatti nel confronto vinale ho aggiunto arbitrariamente il punto sulla prima stringa (solo per test, andrebbe corretta la formula):If s1 & "." <> s2 ThenIn caso di fallimento, stampa entrambe le stringhe nella finestra Immediata di Excel così da poter verificare dove sono le differenze e, eventualmente, inserire ulteriori condizioni di controllo necessarie.
Va da sé che la macro va completata, immagino si voglia fare in ciclo For/Next su tutte le righe, ma non sapendo come Michela vuole procedere ho lasciato a lei la scelta.
Allego il file
Option Explicit Sub ControllaDescrizioni() Dim r1 As String Dim r2 As String r1 = InputBox("Indica coordinate prima descrizione", "", "C4") If r1 = "" Then Exit Sub r2 = InputBox("Indica coordinate seconda descrizione", "", "I4") If r2 = "" Then Exit Sub Confronta Range(r1), Range(r2) End Sub Private Sub Confronta(ByVal r1 As Range, ByVal r2 As Range) Dim s1 As String Dim s2 As String s1 = r1.Text s2 = r2.Text s1 = Replace$(s1, vbCrLf, " ") s1 = Replace$(s1, vbCr, " ") s1 = Replace$(s1, vbLf, " ") s1 = Replace$(s1, vbTab, " ") s1 = Replace$(s1, " ", " ") s1 = Trim$(s1) s1 = LCase$(s1) s2 = Replace$(s2, vbCrLf, " ") s2 = Replace$(s2, vbCr, " ") s2 = Replace$(s2, vbLf, " ") s2 = Replace$(s2, vbTab, " ") s2 = Replace$(s2, " ", " ") s2 = Trim$(s2) s2 = LCase$(s2) If s1 & "." <> s2 Then MsgBox "Le Descrizioni sono differenti" Debug.Print s1 Debug.Print s2 Else MsgBox "Descrizioni uguali" End If End SubAllegati:
You must be logged in to view attached files.Wow Gibra, grazie mille!
Sapevo che solo un esperto poteva riuscire in questa impresa
...di certo non con le mie sole conoscenze di Excel che, si è visto, non sono sufficienti a confrontare due celle di testo..Il tuo risultato con la stampa a video delle celle diverse poi è fantastico!!
Ora il mio scopo è automatizzare la macro su tutto il foglio (le colonne restano le stesse) perché i listini da confrontare sono composti da 9600 voci.
allora devo studiare come inserire un ciclo for nella tua macro...
grazie ancora Gibra!!
Non è certo un problema fare il ciclo, che va inserito a 'monte', basta creare un'ulteriore routine :
Sub ControllaTutto()
Dim i As Long
For i = 1 to numerorigheConfronta cella1, cella2
Next i
End Sub -
AutoreArticoli
