I am trying to compare the values of two different columns.
so there are two cases:-
I want to validate whether 'B2' and 'B3' start with 14 and 21 respectively if no Msgbox 'Error in row number'. and whether 'B3' and 'B4' start with and 109 and 289 respectively if no Msgbox 'Error in row number'.
I would use a UDF. Enter this is a standard module:
Public Function IsItGood(r1 As Range, r2 As Range) As String
Dim v1 As String, v2 As String, L As Long
v1 = r1.Text
v2 = r2.Text
L = Len(v1)
If v1 = Left(v2, L) Then
IsItGood = "Noerror"
Else
IsItGood = "Error in this row"
End If
End Function
Then in C2 enter:
=isitgood(A2,B2)
and copy down:
You may give this a try...
Sub CompareColumns()
Dim lr As Long, n As Long
Dim rng As Range, cell As Range
Dim strA As String, strB As String, str As String
Dim NotMatched As Boolean
lr = Cells(Rows.Count, 1).End(xlUp).Row
'Assuming your data starts from Row2
Set rng = Range("B2:B" & lr)
str = "The following cells don't match." & vbNewLine & vbNewLine
For Each cell In rng
If cell <> "" Then
n = Len(cell.Offset(0, -1))
If n > 0 Then
strA = cell.Offset(0, -1).Text
strB = Left(cell, n)
If strA <> strB Then
NotMatched = True
str = str & cell.Offset(0, -1).Address(0, 0) & " : " & cell.Offset(0, -1).Value & vbTab & cell.Address(0, 0) & " : " & cell.Value & vbNewLine
End If
Else
str = str & cell.Offset(0, -1).Address(0, 0) & " : " & cell.Offset(0, -1).Value & vbTab & cell.Address(0, 0) & " : " & cell.Value & vbNewLine
End If
End If
n = 0
strA = ""
strB = ""
Next cell
If NotMatched Then
MsgBox str, vbInformation
Else
MsgBox "Both columns match.", vbInformation
End If
End Sub
Put this formula in C2 and copy Down:
=IF(AND(LEN(SUBSTITUTE(B2,A2,""))=5,FIND(A2,B2&A2)=1),"No Error","Error")
To get a list of row numbers that do not work you can use this formula:
=AGGREGATE(15,6,ROW($A$2:$A$7)/((--LEFT($B$2:$B$7,LEN($A$2:$A$7))<>$A$2:$A$7)+(LEN($B$2:$B$7)-LEN($A$2:$A$7)<>5)>0),ROW(1:1))
Put it in the first cell then copy/paste down till you run out of rows with errors.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.