Excel e gli applicativi Microsoft Office Confronto voci listini

Login Registrati
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #18949 Score: 0 | Risposta

    michela
    Partecipante

      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.
      #18952 Score: 0 | Risposta

      Luca73
      Partecipante
        58 pts

        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

        #19031 Score: 0 | Risposta

        michela

          Grazie Luca.

          Ma UPPER non viene riconosciuta come funzione e la formattazione condizionale dà sempre errore perché li riconosce sempre come testi diversi.

          #19032 Score: 0 | Risposta

          Marius44
          Moderatore
            58 pts

            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

            #19033 Score: 0 | Risposta

            michela
            Partecipante

              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.

              #19036 Score: 0 | Risposta

              PMC77
              Partecipante
                18 pts

                MAIUSC è la funzione da usare per la versione italiana!

                #19037 Score: 0 | Risposta

                michela
                Partecipante

                  Ok ho capito...ma l'ho provata e non riconosce due testi uguali se ci sono formattazioni diverse!  

                  #19046 Score: 0 | Risposta

                  Marius44
                  Moderatore
                    58 pts

                    Ciao Michela

                    michela ha scritto:

                    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

                    #19062 Score: 0 | Risposta

                    DeletedUser
                    Bloccato
                      13 pts

                      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 Then

                      In 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 Sub
                      
                      Allegati:
                      You must be logged in to view attached files.
                      #19080 Score: 0 | Risposta

                      michela

                        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!!

                         

                        #19082 Score: 0 | Risposta

                        DeletedUser
                        Bloccato
                          13 pts

                          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 numerorighe

                                 Confronta cella1, cella2
                              Next i
                          End Sub

                           

                           

                           

                           

                           

                        Login Registrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: Confronto voci listini
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni: