The bad news is that you're looping through the cells in that column. And if
there are duplicates, you're processing that data more than once.
Instead of modifying the code you have, you may want to look here:
Ron de Bruin's EasyFilter addin:
http://www.rondebruin.nl/easyfilter.htm
Code from Debra Dalgleish's site:
http://www.contextures.com/excelfiles.html
Create New Sheets from Filtered List -- uses an Advanced Filter to create
separate sheet of orders for each sales rep visible in a filtered list; macro
automates the filter. AdvFilterRepFiltered.xls 35 kb
Update Sheets from Master -- uses an Advanced Filter to send data from
Master sheet to individual worksheets -- replaces old data with current.
AdvFilterCity.xls 55 kb
If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
Dow wrote:
>
> I need some help modifying this macro. I found this in a post by
> Bernie Deitrick:
>
> Sub ExportDatabaseToSeparateFiles()
> 'Export is based on the value in the desired column
> Dim myCell As Range
> Dim mySht As Worksheet
> Dim myName As String
> Dim myArea As Range
> Dim myShtName As String
> Dim KeyCol As Integer
>
> myShtName = ActiveSheet.Name
> KeyCol = InputBox("What column # within database to use as key?")
>
> Set myArea = ActiveCell.CurrentRegion.Columns(KeyCol).Offset(0,
> 0).Cells
>
> Set myArea = myArea.Resize(myArea.Rows.Count - 1, 1)
>
> For Each myCell In myArea
> On Error GoTo NoSheet
> myName = Worksheets(myCell.Value).Name
> GoTo SheetExists:
> NoSheet:
> Set mySht = Worksheets.Add(before:=Worksheets(1))
> mySht.Name = myCell.Value
> With myCell.CurrentRegion
> .AutoFilter Field:=KeyCol, Criteria1:=myCell.Value
> .SpecialCells(xlCellTypeVisible).Copy _
> mySht.Range("A1")
> mySht.Cells.EntireColumn.AutoFit
> .AutoFilter
> End With
> Resume
> SheetExists:
> Next myCell
>
> 'Optional section to export the sheets to separate files
> 'For Each mySht In ActiveWorkbook.Worksheets
> 'If mySht.Name = myShtName Then
> 'Exit Sub
> 'Else
> 'mySht.Move
> 'ActiveWorkbook.SaveAs "Workbook " & ActiveSheet.Name & ".xls"
> 'ActiveWorkbook.Close
> 'End If
> 'Next mySht
>
> End Sub
>
> And it does almost what I want it to do. Unfortunately I have 2
> worksheets and when this divides the data out it overwrites everything
> from the first worksheet. I have tried to find some Append macros to
> combine with this but I am not very proficient in visual basic.
> Anyone out there know have some ideas?
>
> Thank you for the help,
>
> Dow.
--
Dave Peterson