Excel e gli applicativi Microsoft Office confronto dati colonne excel

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

    michela
    Partecipante

      Ciao a tutti.

      Premetto che non conosco tante istruzioni macro, ma ho provato ad usare le mie conoscenze e non ho raggiunto l'obiettivo. Confido nel vostro aiuto per migliorarmi.

      L'obiettivo è confrontare due colonne excel: nella colonna A alcuni codici hanno l'asterico, nella B nessuno.

      ho bisogno di sostituire nella colonna B quei codici che nella A hanno l'asterisco.

      ad esempio: se il codice A.01.001 nella colonna A è A.01.001.*, voglio che nella B sia sostituito con A.01.001.*

      io ho provato a mettere i risultati nella colonna C, ma non capisco dove sbaglio.

      grazie molte.

       

      Allegati:
      You must be logged in to view attached files.
      #53040 Score: 0 | Risposta

      alfrimpa
      Partecipante
        32 pts

        Un chiarimento

        In A4 c'è A.01.001.* e in colonna B c'è A.01.001

        Come mai in colonna B non c'è il punto finale?

        A.01.001. non sarà mai uguale a A.01.001 quindi come si fa a fare il confronto?

        Ce ne sono molti di casi come questi.

        #53041 Score: 0 | Risposta

        michela
        Partecipante

          devo fare un confronto di celle senza considerare il ".*" e poi aggiungerlo dopo.

          Ci sono appena riuscita usando solo excel però.

          grazie cmq.

           

           

          #53042 Score: 0 | Risposta

          alfrimpa
          Partecipante
            32 pts

            michela ha scritto:

            Ci sono appena riuscita usando solo excel però.

            Ci spieghi quello che hai fatto?

            Magari può essere utile a qualcun altro

            #53043 Score: 0 | Risposta

            michela
            Partecipante

              Con una formattazione condizionale individuo i codici che contengono ".*" e metto un asterisco nella cella a fianco (col B), mentre nella colonna C copio la colonna A ma senza nessun ".*"

              la colonna D contiene i codici che devo aggiornare (aggiungendo l'asterisco dove sono uguali alla colonna A).

              nella colonna E ho indicizzato le celle uguali

              nella colonna F ho incrociato l'indice con il valore x e se positivo, concatenato il codice con ".*".

              E' più facile aprire il file 🙂

               

               

              Allegati:
              You must be logged in to view attached files.
              #53045 Score: 0 | Risposta

              alexps81
              Moderatore
                55 pts

                Ciao @michela ho visto il file ma non ci sono i "risultati" che hai provato a mettere in colonna "C".

                Prova a vedere se ho capito quello che ti serve. Inserisci questa macro in un Modulo Standard e lanciala. I risultati vengono scritti in colonna "C" (falla lavorare perché ci mette un po' a terminare tutti i confronti):

                Option Explicit
                
                Sub confronta()
                    Dim codiciA As Range, f As Range
                    Dim urA As Long, urB As Long, i As Long
                    Dim codice As String
                    
                    urA = Cells(Rows.Count, "A").End(xlUp).Row
                    urB = Cells(Rows.Count, "B").End(xlUp).Row
                    
                    Set codiciA = Range("A1:A" & urA)
                    
                    Application.ScreenUpdating = False
                    For i = 1 To urB
                        codice = Trim(Range("B" & i).Value)
                        Set f = codiciA.Find(What:=codice, LookIn:=xlValues, LookAt:=xlPart)
                        If Not f Is Nothing Then
                            If InStr(f.Value, "*") > 0 Then
                                If codice <> Trim(f.Value) Then
                                    Range("C" & i).Value = Trim(f.Value)
                                End If
                            End If
                        End If
                    Next i
                    Application.ScreenUpdating = True
                    MsgBox "Fatto"
                End Sub

                EDIT: Chiedo venia...non avevo aggiornato la pagina prima di pubblicare la macro e non ho notato che la discussione stava andando avanti   

                P.S. La mia macro lavora sul file pubblicato al primo post

                #53046 Score: 0 | Risposta

                michela
                Partecipante

                  Siii...grandissimo @alexps81 !!

                  grazie mille, era proprio questo!!

                  felicissima io!

                  grazie

                  #53047 Score: 0 | Risposta

                  alexps81
                  Moderatore
                    55 pts

                    Ottimo!!!   

                    #53048 Score: 0 | Risposta

                    gianfranco55
                    Partecipante
                      90 pts

                      ciao

                      con il famoso CERCA.VERT()

                      =SE.ERRORE(CERCA.VERT(ANNULLA.SPAZI(B2)&"*";$A$2:$A$1000;1;0);"")

                      chiaramente sconsigliata visto il numero di righe utilizzate

                      hai parecchi valori in colonna b con uno spazio alla fine

                      ecco perchè ho aggiunto ANNULLA.SPAZI()

                       

                      #53049 Score: 0 | Risposta

                      Raffaele53
                      Partecipante
                        21 pts

                        Ho finito tardi, ci sono diversi problemi:
                        1) Si tratta di un punto+asterisco oppure UN'ondina+asterisco ="~*" (saranno sempre uguali questi caratteri?)
                        2) In colonna B ci sono diverse celle con uno spazio finale?
                        3) In colonna A diverse celle vuote

                        Avrei usato FIND, mà sembra che diversi codici non vengano ritrovati e non capisco il motivo?
                        Ho provato con CONFRONTA-CONTA.SE e sembra funzionare.
                        1) Copio colonna B in D per sicurezza
                        2) Tolgo i spazi in colonna D
                        3) Un ciclo sulla colonna A, se trova i "Simboli" li toglie momentaneamente e cerca in colonna D
                        4) Se non esiste in colonna D, viene copiato in colonna F

                        Provalo, non so se va bene.

                        Option Explicit
                        Sub Ricopia()
                        Dim Ur1 As Long, Ur2 As Long, X As Long, Rr As Long, Nr As Long, Simboli As String, Codice As String
                        Ur1 = Range("A" & Rows.Count).End(xlUp).Row
                        Ur2 = Range("B" & Rows.Count).End(xlUp).Row
                        Columns("C:F").Clear
                        Range("B1:B" & Ur2).Copy Destination:=Range("D1")
                            For X = 2 To Ur2
                                If Right(Cells(X, 4), 1) = " " Then Cells(X, 4) = Replace(Cells(X, 4), " ", "")
                            Next
                        Simboli = ".*"
                        Nr = 1
                          For X = 2 To Ur1
                                If InStr(Cells(X, 1), Simbolo) > 0 Then
                                    Codice = Replace(Cells(X, 1), Simboli, "")
                                    If Application.WorksheetFunction.CountIf(Range("D1:D" & Ur2), Codice) > 0 Then
                                        Rr = Application.Match(Codice, Range("D1:D" & Ur2), 0)
                                        Cells(X, 1).Copy Destination:=Cells(Rr, 4)
                                    Else
                                        Cells(X, 1).Copy Destination:=Cells(Nr, 6): Nr = Nr + 1
                                    End If
                                End If
                            Next
                        Fine:
                        MsgBox "Finito"
                        End Sub
                        #53050 Score: 0 | Risposta

                        LukeReds
                        Partecipante
                          13 pts

                          ciao,

                          altro codice che sostituisce i valori in colonna B (come da prima richiesta e da primo file allegaro)

                          Sub CambiaTesti()
                          Dim r As Integer, A As Range, B As Range
                          r = Range("A" & Rows.Count).End(xlUp).Row
                          Set A = Range("A1:A" & r).Find("~*", , LookIn:=xlValues, LookAt:=xlPart)
                          If Not A Is Nothing Then
                             Do
                                Set B = Range("B1:B" & r).Find(Left(A, Len(A) - 2), LookIn:=xlValues, LookAt:=xlWhole)
                                If Not B Is Nothing Then Cells(B.Row, "B") = A
                                If A.Row >= r Then Exit Do
                                Set A = Range("A" & A.Row & ":A" & r).Find("~*", , LookIn:=xlValues, LookAt:=xlPart)
                             Loop
                          End If
                          End Sub

                           

                           

                        Login Registrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: confronto dati colonne excel
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni: