View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.excel.interopoledde
ryguy7272[_2_] ryguy7272[_2_] is offline
external usenet poster
 
Posts: 56
Default Compare two worksheets in the same workbook and highlightdifference

On Aug 5, 3:20*pm, ryguy7272 wrote:
On Aug 5, 3:20*pm, ryguy7272 wrote:





On Aug 5, 2:09*pm, mrcreid wrote:


Hello All,
If anyone could help me with a VBA Macro that will compare two
worksheets in the same workbook and highlight the difference, it would
be greatly appreciated.


Both worksheets have the same number of columns (12) but not the same
number of rows. *The first worksheet is called "CURRENT" that has the
current inventory of all our computer assets for the month. *The
second worksheet is called "PREVIOUS" that has last month inventory in
it.


Using the serial number column (F2) as the key from current worksheet,
search previous worksheet to see if it exist. *If it exist, then
compare the row of data in current worksheet against previous
worksheet where the serial number matches. *If they do not match
hightight the entire row in the current worksheet. *Also if possible
highlight in read the column cell data that has the mismatch.


The first part i was able to put together, where i uses the serial
number column in current sheet and look to see if it exist in the
previous sheet. *If it exist then compare the row, if the rows do not
match, then hightlight the entire row in the current worksheet. *What
i am unable to do is the second part, highlight the cell data in the
column where the data in the row does not match.


Listed below is the code thus far.


Sub SearchHighlight()
'--------------------------------------
* *Sheets("Current").Select
* *Dim rng As Range
* *Dim lRow As Long, lRowT As Long
* *Dim iCol As Integer
* *Dim bln As Boolean


* *Set rng = Worksheets("Previous").Range("F2").CurrentRegion
* *For lRow = 1 To Range("F2").CurrentRegion.Rows.Count
* * * bln = True
* * * For lRowT = 1 To rng.Rows.Count
* * * * *For iCol = 1 To 12
* * * * * * If Cells(lRow, iCol) < rng(lRowT, iCol) Then
* * * * * * *bln = False
* * * * * * * *Exit For
* * * * * * End If
* * * * * * Next iCol


* * * * *If bln = True Then


* * * * * * Exit For


* * * * *ElseIf lRowT < rng.Rows.Count Then
* * * * * * bln = True
* * * * *End If
* * * Next lRowT


* * * If bln = False Then
* * * * *Range(Cells(lRow, 1), Cells(lRow, 12)).Interior.ColorIndex =
6
* * * End If


* *Next lRow


End Sub


Any and all help with regards to this matter is greatly appreciated.


I tried 2 ideas below:


Dim itm As Variant
If itm.innterText Like "*SubmitForm_Name*" Then


Dim objCell As Object
If objCell.innerText Like "*SubmitForm_Name*" Then


...sill the same thing.............- Hide quoted text -


- Show quoted text -


Whoops, sorry, wrong post!!- Hide quoted text -

- Show quoted text -


Take this for a spin and see how you like it:
http://www.exceltip.com/st/Compare_t...ce l/477.html

Or, perhaps something liek this:
Sub SheetCompare()
' Change the 25 to the last row of your data here
For myRow = 1 To 200
For myCol = 1 To 12
If Sheets("Current").Cells(myRow, myCol).Value <
Sheets("Previous").Cells(myRow, myCol).Value Then
Sheets("Current").Cells(myRow, myCol).Interior.ColorIndex = 6
Else
Sheets("Current").Cells(myRow, myCol).Interior.ColorIndex = xlNone
End If
Next myCol
Next myRow
End Sub

Of course the # of used rows can be determined dynamically; just a
little sample for you to test...