Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I'm trying to seperate a workbook into multiple sheets. I'm creating a
routine that will take the unique values from column 3 and create a new sheet for each value. When I do the filtering I only get a few rows. I've tried multiple criteria and I don't get any better results. 1. create new temp sheet to store values I want to filter and seperate 2. create new sheet and name it with the filter value 3. create the filter formula 4. execute advancefilter and copy the results. Column headings are in row 1 and the data starts in row 9. I want to filter on column C. I have copied the code with some comments. Any help would be appreciated. Option Explicit Sub SeperateConversionType() Dim tmpSheet As Worksheet Dim DataSheet As Worksheet Dim newWkb As Workbook Dim newWks As Worksheet Dim myDatabase As Range Dim listRange As Range Dim myCell As Range Dim dummyRange As Range Const TopLeftCell = "A9" Const KeyColumn = "C" 'Get first sheet and select data THis is about 2000 rows Set DataSheet = Worksheets(1) With DataSheet Set dummyRange = .UsedRange Set myDatabase = .Range(TopLeftCell, ..Cells.SpecialCells(xlCellTypeLastCell)) End With 'add blank sheet for processing Set tmpSheet = Worksheets.Add 'Get unique convertypes, there seems to be a problem when the first two rows are identical it copies both. With DataSheet Intersect(myDatabase, .Columns(KeyColumn)).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=tmpSheet.Range("A1"), _ Unique:=True End With 'Get list of conversion types, type will be E, M, F, or P. Start at A2 because the list always has the first two rows identical. With tmpSheet Set listRange = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp)) End With For Each myCell In listRange.Cells 'change the criteria in the Criteria range Set newWks = Worksheets.Add newWks.Name = myCell.Value newWks.Move After:=Sheets(Sheets.Count) tmpSheet.Range("b2").Value = "=c9" & "=" & myCell.Value myDatabase.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=tmpSheet.Range("b1:b2"), _ CopyToRange:=newWks.Range("A1"), _ Unique:=False Next myCell End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
maybe you could look at the way Debra Dalgleish did it:
http://www.contextures.com/excelfiles.html#Filter She has two versions: Update Sheets from Master -- uses an Advanced Filter to send data from Master sheet to individual worksheets -- creates a list of unique items, creates a sheet for each item, then replaces old data with current. AdvFilterCity.xls 44 kb 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 Dwight Trumbower wrote: I'm trying to seperate a workbook into multiple sheets. I'm creating a routine that will take the unique values from column 3 and create a new sheet for each value. When I do the filtering I only get a few rows. I've tried multiple criteria and I don't get any better results. 1. create new temp sheet to store values I want to filter and seperate 2. create new sheet and name it with the filter value 3. create the filter formula 4. execute advancefilter and copy the results. Column headings are in row 1 and the data starts in row 9. I want to filter on column C. I have copied the code with some comments. Any help would be appreciated. Option Explicit Sub SeperateConversionType() Dim tmpSheet As Worksheet Dim DataSheet As Worksheet Dim newWkb As Workbook Dim newWks As Worksheet Dim myDatabase As Range Dim listRange As Range Dim myCell As Range Dim dummyRange As Range Const TopLeftCell = "A9" Const KeyColumn = "C" 'Get first sheet and select data THis is about 2000 rows Set DataSheet = Worksheets(1) With DataSheet Set dummyRange = .UsedRange Set myDatabase = .Range(TopLeftCell, .Cells.SpecialCells(xlCellTypeLastCell)) End With 'add blank sheet for processing Set tmpSheet = Worksheets.Add 'Get unique convertypes, there seems to be a problem when the first two rows are identical it copies both. With DataSheet Intersect(myDatabase, .Columns(KeyColumn)).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=tmpSheet.Range("A1"), _ Unique:=True End With 'Get list of conversion types, type will be E, M, F, or P. Start at A2 because the list always has the first two rows identical. With tmpSheet Set listRange = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp)) End With For Each myCell In listRange.Cells 'change the criteria in the Criteria range Set newWks = Worksheets.Add newWks.Name = myCell.Value newWks.Move After:=Sheets(Sheets.Count) tmpSheet.Range("b2").Value = "=c9" & "=" & myCell.Value myDatabase.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=tmpSheet.Range("b1:b2"), _ CopyToRange:=newWks.Range("A1"), _ Unique:=False Next myCell End Sub -- Dave Peterson |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I downloaded those examples to start from. Don't know what I'm missing.
"Dave Peterson" wrote in message ... maybe you could look at the way Debra Dalgleish did it: http://www.contextures.com/excelfiles.html#Filter She has two versions: Update Sheets from Master -- uses an Advanced Filter to send data from Master sheet to individual worksheets -- creates a list of unique items, creates a sheet for each item, then replaces old data with current. AdvFilterCity.xls 44 kb 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 Dwight Trumbower wrote: I'm trying to seperate a workbook into multiple sheets. I'm creating a routine that will take the unique values from column 3 and create a new sheet for each value. When I do the filtering I only get a few rows. I've tried multiple criteria and I don't get any better results. 1. create new temp sheet to store values I want to filter and seperate 2. create new sheet and name it with the filter value 3. create the filter formula 4. execute advancefilter and copy the results. Column headings are in row 1 and the data starts in row 9. I want to filter on column C. I have copied the code with some comments. Any help would be appreciated. Option Explicit Sub SeperateConversionType() Dim tmpSheet As Worksheet Dim DataSheet As Worksheet Dim newWkb As Workbook Dim newWks As Worksheet Dim myDatabase As Range Dim listRange As Range Dim myCell As Range Dim dummyRange As Range Const TopLeftCell = "A9" Const KeyColumn = "C" 'Get first sheet and select data THis is about 2000 rows Set DataSheet = Worksheets(1) With DataSheet Set dummyRange = .UsedRange Set myDatabase = .Range(TopLeftCell, .Cells.SpecialCells(xlCellTypeLastCell)) End With 'add blank sheet for processing Set tmpSheet = Worksheets.Add 'Get unique convertypes, there seems to be a problem when the first two rows are identical it copies both. With DataSheet Intersect(myDatabase, .Columns(KeyColumn)).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=tmpSheet.Range("A1"), _ Unique:=True End With 'Get list of conversion types, type will be E, M, F, or P. Start at A2 because the list always has the first two rows identical. With tmpSheet Set listRange = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp)) End With For Each myCell In listRange.Cells 'change the criteria in the Criteria range Set newWks = Worksheets.Add newWks.Name = myCell.Value newWks.Move After:=Sheets(Sheets.Count) tmpSheet.Range("b2").Value = "=c9" & "=" & myCell.Value myDatabase.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=tmpSheet.Range("b1:b2"), _ CopyToRange:=newWks.Range("A1"), _ Unique:=False Next myCell End Sub -- Dave Peterson |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I didn't read all your code, but the description of your data sounds odd
-- column headings in row 1 and data starting in row 9. Perhaps Excel is treating row 9 as the heading row, and that's causing some of the problems. Dwight Trumbower wrote: I downloaded those examples to start from. Don't know what I'm missing. "Dave Peterson" wrote in message ... maybe you could look at the way Debra Dalgleish did it: http://www.contextures.com/excelfiles.html#Filter She has two versions: Update Sheets from Master -- uses an Advanced Filter to send data from Master sheet to individual worksheets -- creates a list of unique items, creates a sheet for each item, then replaces old data with current. AdvFilterCity.xls 44 kb 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 Dwight Trumbower wrote: I'm trying to seperate a workbook into multiple sheets. I'm creating a routine that will take the unique values from column 3 and create a new sheet for each value. When I do the filtering I only get a few rows. I've tried multiple criteria and I don't get any better results. 1. create new temp sheet to store values I want to filter and seperate 2. create new sheet and name it with the filter value 3. create the filter formula 4. execute advancefilter and copy the results. Column headings are in row 1 and the data starts in row 9. I want to filter on column C. I have copied the code with some comments. Any help would be appreciated. Option Explicit Sub SeperateConversionType() Dim tmpSheet As Worksheet Dim DataSheet As Worksheet Dim newWkb As Workbook Dim newWks As Worksheet Dim myDatabase As Range Dim listRange As Range Dim myCell As Range Dim dummyRange As Range Const TopLeftCell = "A9" Const KeyColumn = "C" 'Get first sheet and select data THis is about 2000 rows Set DataSheet = Worksheets(1) With DataSheet Set dummyRange = .UsedRange Set myDatabase = .Range(TopLeftCell, .Cells.SpecialCells(xlCellTypeLastCell)) End With 'add blank sheet for processing Set tmpSheet = Worksheets.Add 'Get unique convertypes, there seems to be a problem when the first two rows are identical it copies both. With DataSheet Intersect(myDatabase, .Columns(KeyColumn)).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=tmpSheet.Range("A1"), _ Unique:=True End With 'Get list of conversion types, type will be E, M, F, or P. Start at A2 because the list always has the first two rows identical. With tmpSheet Set listRange = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp)) End With For Each myCell In listRange.Cells 'change the criteria in the Criteria range Set newWks = Worksheets.Add newWks.Name = myCell.Value newWks.Move After:=Sheets(Sheets.Count) tmpSheet.Range("b2").Value = "=c9" & "=" & myCell.Value myDatabase.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=tmpSheet.Range("b1:b2"), _ CopyToRange:=newWks.Range("A1"), _ Unique:=False Next myCell End Sub -- Dave Peterson -- Debra Dalgleish Excel FAQ, Tips & Book List http://www.contextures.com/tiptech.html |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Advance Filter Problem | Excel Worksheet Functions | |||
Advance Filter | Excel Discussion (Misc queries) | |||
Advance Filter | Excel Discussion (Misc queries) | |||
Advance Filter | Excel Discussion (Misc queries) | |||
Advance Filter | Excel Programming |