简体   繁体   中英

columns values from two different sheet copy pasted in to another sheet and then comparing side by side cell and coloring them with green if matching

sub copycolmns() **code for copying columns data along with header in another sheet name paste sheet**

Sheets("copysheet1").Columns(11).Copy Destination:=Sheets("paste").Columns(1)
Sheets("copysheet2").Range("A1:A20").Copy
Sheets("paste").Range("B1").PasteSpecial xlPastevalues

End Sub

Sub reconncilirecords() ** this function to reconcile records and color them green if matching**

Dim col1 As Range, col2 as Range,Prod1 as String, Prod2 as String

Set col1 = Sheets("paste").Columns("A")
Set col2  = Sheets("Paste").Columns("B")

lr = Sheets("paste").Columns("A:B").SpecialCells(xlCellTypeLastCell).Row
For r = 2 to lr
  Prod1 = Cells(r, col1.Column).Value
  Prod2 = Cells(r, col2.Column).Value

 If Prod1 = Prod2 Then
 Cells(r, col1.Column).Interior.Color = vbGreen
 Cells(r, col2.Column).Interior.Color = vbGreen
 Else
 Cells(r, col1.Column).Interior.Color = vbRed
 Cells(r, col2.Column).Interior.Color = vbRed
End If
Next r 
End Sub

Sub Result() **function to display if marching or not matching with message box**

Dim wj as Wrokbook
Dim ws_data as worksheet
Dim rng_data as Range

    Set wj = Activeworkbook
Set ws_data = ws.Sheets("paste")

Dim last_row as Long
last_row  = ws_data.Cells(Rows.Count, "A").End(xlup).Row

Set rng_data = Range("A2:A" & last_row)
If rng_data.Interior.Color = RGB(0,255,0) then
Msgbox" details verfd and matching"
Else
Msbxo "Mismatch found"
End If

End Sub

is there any way to speed up this process as whenever i run reconcile data 2nd sub function macro is getting hanged. Is there any other way to dynamically copy from sheet1 and sheet2 and recocnile the data and apply message box to check for last row.

Building on my comment; this is a mock-up, so untested... should give an idea:

destWS.Columns(1).value = sourceWS1.columns(2).value
destWS.Columns(2).value = sourceWS2.columns(2).value
With destWS.Range("A1:B" & destLastRow)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$A1=$B1"
    With .FormatConditions(.FormatConditions.Count)
       .SetFirstPriority
       With .Interior
           .Color = vbRed
       End With
    End With
End With

You will most likely want to use exact ranges, not columns, as it slows things down... a lot.

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM