Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / New Users / January 2007

Tip: Looking for answers? Try searching our database.

Create a new sheet for all Unique values

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Snapdaddy - 12 Jan 2007 16:27 GMT
Hi,

I have some code that I got off of Ron DeBruin's site for  Creating a
new sheet for all unique values. It works great but it puts the header
at the top of each new sheet. Is there a way to modify this code to
make it so it does not add a header at the top of each new sheet? I'm
just looking to put the raw data on each new sheet. Any help is
appreciated.

Sub Copy_With_AdvancedFilter_To_Worksheets()
   Dim CalcMode As Long
   Dim ws1 As Worksheet
   Dim WSNew As Worksheet
   Dim rng As Range
   Dim cell As Range
   Dim Lrow As Long

   Set ws1 = Sheets("Sheet1")  '<<< Change
   'Tip : You can also use a Dynamic range name,
http://www.contextures.com/xlNames01.html#Dynamic
   'or a fixed range like Range("A1:H1200")
   Set rng = ws1.Range("A1").CurrentRegion  '<<< Change

   With Application
       CalcMode = .Calculation
       .Calculation = xlCalculationManual
       .ScreenUpdating = True
   End With

   With ws1
       rng.Columns(1).AdvancedFilter _
       Action:=xlFilterCopy, _
       CopyToRange:=.Range("IV1"), Unique:=True
       'This example filter on the first column in the range (change
this if needed)
       'You see that the last two columns of the worksheet are used to
make a Unique list
       'and add the CriteriaRange.(you can't use this macro if you use
the columns)

       Lrow = .Cells(Rows.Count, "IV").End(xlUp).Row
       .Range("IU1").Value = .Range("IV1").Value

       For Each cell In .Range("IV2:IV" & Lrow)
           .Range("IU2").Value = cell.Value
           Set WSNew = Sheets.Add
           On Error Resume Next
           WSNew.Name = cell.Value
           If Err.Number > 0 Then
               MsgBox "Change the name of : " & WSNew.Name & "
manually"
               Err.Clear
           End If
           On Error GoTo 0
           rng.AdvancedFilter Action:=xlFilterCopy, _
                              CriteriaRange:=.Range("IU1:IU2"), _
                              CopyToRange:=WSNew.Range("A1"), _
                              Unique:=False
           WSNew.Columns.AutoFit
       Next
       .Columns("IU:IV").Clear
   End With

   With Application
       .ScreenUpdating = True
       .Calculation = CalcMode
   End With
End Sub
Ron de Bruin - 12 Jan 2007 16:35 GMT
Hi Snapdaddy

For others the code is on this page
http://www.rondebruin.nl/copy5.htm

Add one line before the autofit line to delete the row

WSNew.Rows(1).Delete
WSNew.Columns.AutoFit

Signature

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm

> Hi,
>
[quoted text clipped - 64 lines]
>    End With
> End Sub

Rate this thread:






 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.