› Excel e gli applicativi Microsoft Office › confronto dati colonne excel
-
AutoreArticoli
-
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.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.
devo fare un confronto di celle senza considerare il ".*" e poi aggiungerlo dopo.
Ci sono appena riuscita usando solo excel però.
grazie cmq.
Ci sono appena riuscita usando solo excel però.
Ci spieghi quello che hai fatto?
Magari può essere utile a qualcun altro
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.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
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()
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 vuoteAvrei 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 FProvalo, 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
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
-
AutoreArticoli