Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.misc
kilo1990
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

I have two sheets of stock data from a stock screener, both same
parameters, just different time frames (i.e., one sheet is newer
whenever I import new a new screen from the Internet), which will pull
different stocks as time passes. I'm trying to compare the two sheets
and extract the stock data (a whole row's worth of data, not just a
cell) that is unique to the "Last Import" sheet. This would allow any
new stocks identified on the screener to be transferred to a new sheet
(called "Filtered List"). That way I don't have to research the same
stocks over and over, only the new ones that show up with each import.
I did some searching on the Internet and found the following code,
which I modified to include the sheet names:

Sub CompareMove()
'
Dim lastrowsh1 As Long, lastrowsh2 As Long, lastrowsh3 As Long
Dim searchRng As Range, foundRng As Range
Dim Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet
lastrowsh1 = Worksheets("Previous
Import").Range("a65536").End(xlUp).Row
lastrowsh2 = Worksheets("Last
Import").Range("a65536").End(xlUp).Row
lastrowsh3 = Worksheets("Filtered
List").Range("a65536").End(xlUp).Row
Set Ws1 = Worksheets("Previous Import")
Set Ws2 = Worksheets("Last Import")
Set Ws3 = Worksheets("Filtered List")

Set searchRng = Ws2.Columns(1) 'sets column a on Previous Import

With Ws2
For x = 5 To lastrowsh2
Set foundRng = searchRng.Find(Ws1.Cells(x, 1)) 'loop through the
previous import
If Not foundRng Is Nothing Then
foundRng.EntireRow.Copy 'on a match copy row
Ws3.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
End If
Next x
End With
End Sub

This is almost what I'm looking for, right now when it runs it extracts
the data COMMON to both sheets, rather than what is UNIQUE which is
what I need it to do. It looks like I'm sooooo close...can someone
tell me what code I need to modify to make it do this? I don't have
too much knowledge outside of basic macro building, and I would be very
grateful for ANY assistance y'all could provide.

Thanks in advance...

  #2   Report Post  
Posted to microsoft.public.excel.misc
Dave Peterson
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

This line:

If Not foundRng Is Nothing Then

Essentially says "If foundrng is something"--that the previous find was
successful, then do the work.

Since you want to do the work if it wasn't found, try removing "not" from that
line:

If foundRng Is Nothing Then



kilo1990 wrote:

I have two sheets of stock data from a stock screener, both same
parameters, just different time frames (i.e., one sheet is newer
whenever I import new a new screen from the Internet), which will pull
different stocks as time passes. I'm trying to compare the two sheets
and extract the stock data (a whole row's worth of data, not just a
cell) that is unique to the "Last Import" sheet. This would allow any
new stocks identified on the screener to be transferred to a new sheet
(called "Filtered List"). That way I don't have to research the same
stocks over and over, only the new ones that show up with each import.
I did some searching on the Internet and found the following code,
which I modified to include the sheet names:

Sub CompareMove()
'
Dim lastrowsh1 As Long, lastrowsh2 As Long, lastrowsh3 As Long
Dim searchRng As Range, foundRng As Range
Dim Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet
lastrowsh1 = Worksheets("Previous
Import").Range("a65536").End(xlUp).Row
lastrowsh2 = Worksheets("Last
Import").Range("a65536").End(xlUp).Row
lastrowsh3 = Worksheets("Filtered
List").Range("a65536").End(xlUp).Row
Set Ws1 = Worksheets("Previous Import")
Set Ws2 = Worksheets("Last Import")
Set Ws3 = Worksheets("Filtered List")

Set searchRng = Ws2.Columns(1) 'sets column a on Previous Import

With Ws2
For x = 5 To lastrowsh2
Set foundRng = searchRng.Find(Ws1.Cells(x, 1)) 'loop through the
previous import
If Not foundRng Is Nothing Then
foundRng.EntireRow.Copy 'on a match copy row
Ws3.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
End If
Next x
End With
End Sub

This is almost what I'm looking for, right now when it runs it extracts
the data COMMON to both sheets, rather than what is UNIQUE which is
what I need it to do. It looks like I'm sooooo close...can someone
tell me what code I need to modify to make it do this? I don't have
too much knowledge outside of basic macro building, and I would be very
grateful for ANY assistance y'all could provide.

Thanks in advance...


--

Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.misc
kilo1990
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

I took out the "not" per your suggestion and now the following error
comes up:

Runtime error '91': Object Variable or With Block variable not set

Then the following line is highlighted:
foundRng.EntireRow.Copy 'on a match copy row

What's next?

  #4   Report Post  
Posted to microsoft.public.excel.misc
Dave Peterson
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

Yep. My mistake.

What do you want to copy? The cell with the value that you're searching for?



With Ws2
For x = 5 To lastrowsh2
Set foundRng = searchRng.Find(Ws1.Cells(x, 1))
If Not foundRng Is Nothing Then
ws1.rows(x).Copy
Ws3.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
End If
Next x
End With

You may have to change your ranges around to loop through the cells on ws1 and
compare then with searchrng????

kilo1990 wrote:

I took out the "not" per your suggestion and now the following error
comes up:

Runtime error '91': Object Variable or With Block variable not set

Then the following line is highlighted:
foundRng.EntireRow.Copy 'on a match copy row

What's next?


--

Dave Peterson
  #5   Report Post  
Posted to microsoft.public.excel.misc
kilo1990
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

I'm wanting to copy the rows that are unique to the "Last Import" sheet
beginning at A6. The "Previous Import" sheet will be yesterday's data.
The "Last Import" tab will have some stocks from the previous day's
trading, but I'm only interested in the new stocks that hit today
(hence the "Filtered List" sheet). I'm not sure what todo, I pasted
your last code in there and it still transferring the data common to
both sheets, as opposed to what is unique in the "Last Import" tab.
HELP....



  #6   Report Post  
Posted to microsoft.public.excel.misc
Dave Peterson
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

Doh.

I changed the code, but I forgot to remove the "NOT" from that check:

With Ws2
For x = 5 To lastrowsh2
Set foundRng = searchRng.Find(Ws1.Cells(x, 1))
If foundRng Is Nothing Then
ws1.rows(x).Copy
Ws3.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
End If
Next x
End With

=======
Here's one that looks at differences between either list:

Option Explicit

Sub CompareMove()

Dim lastrowSh1 As Long
Dim lastrowSh2 As Long
Dim lastrowSh3 As Long

Dim X As Long

Dim foundRng As Range

Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim Ws3 As Worksheet

Set Ws1 = Worksheets("Previous Import")
Set Ws2 = Worksheets("Last Import")
Set Ws3 = Worksheets("Filtered List")

lastrowSh1 = Ws1.Range("a65536").End(xlUp).Row
lastrowSh2 = Ws2.Range("a65536").End(xlUp).Row
lastrowSh3 = Ws3.Range("a65536").End(xlUp).Row

With Ws2
For X = 5 To lastrowSh1
With .Columns(1)
Set foundRng = .Find(what:=Ws1.Cells(X, 1), _
after:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
lookat:=xlWhole, _
searchorder:=xlByRows, _
searchdirection:=xlNext, _
MatchCase:=False)
End With

If foundRng Is Nothing Then
Ws1.Rows(X).Copy 'on a match copy row
Ws3.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
End If
Next X
End With

With Ws1
For X = 5 To lastrowSh2
With .Columns(1)
Set foundRng = .Find(what:=Ws2.Cells(X, 1), _
after:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
lookat:=xlWhole, _
searchorder:=xlByRows, _
searchdirection:=xlNext, _
MatchCase:=False)
End With

If foundRng Is Nothing Then
Ws2.Rows(X).Copy 'on a match copy row
Ws3.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
End If
Next X
End With

End Sub


If you don't want both sets of differences, then delete one of them.

ps. When you're doing .find's in code, it's better to specify exactly what you
want. Excel & VBA remembers the last thing that was used--either by the user or
by code.



kilo1990 wrote:

I'm wanting to copy the rows that are unique to the "Last Import" sheet
beginning at A6. The "Previous Import" sheet will be yesterday's data.
The "Last Import" tab will have some stocks from the previous day's
trading, but I'm only interested in the new stocks that hit today
(hence the "Filtered List" sheet). I'm not sure what todo, I pasted
your last code in there and it still transferring the data common to
both sheets, as opposed to what is unique in the "Last Import" tab.
HELP....


--

Dave Peterson
  #7   Report Post  
Posted to microsoft.public.excel.misc
kilo1990
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

WOW, DAVE, THEY BOTH WORK. Both the original code AND the one you
suggested...this is GREAT. Thanks so much for taking the time!

  #8   Report Post  
Posted to microsoft.public.excel.misc
Dave Peterson
 
Posts: n/a
Default Compare 2 Sheets and Extract Unique Info to a 3rd Sheet

Sorry, it took so long to get it straight.

But glad it worked out.

kilo1990 wrote:

WOW, DAVE, THEY BOTH WORK. Both the original code AND the one you
suggested...this is GREAT. Thanks so much for taking the time!


--

Dave Peterson
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Referancing differant sheets jp nellie Excel Worksheet Functions 2 November 16th 05 09:19 PM
Extract Unique Records from two lists MarkN Excel Worksheet Functions 3 November 11th 05 01:07 PM
AUTO FILTER NOT CHANGING RESULTS Dejan Excel Discussion (Misc queries) 25 October 6th 05 02:01 PM
Extract sheet name/number to cell claytorm Excel Discussion (Misc queries) 1 June 27th 05 11:34 AM
HELP -- probably a LOOKUP problem Liz-In-USA Excel Discussion (Misc queries) 3 December 9th 04 12:18 AM


All times are GMT +1. The time now is 07:49 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"