From: melExcel2007 on 4 Jun 2010 15:32 I want a macro to work for a worksheet name which will always be the same directory and file name but the data inside worksheet will periodically change - increase in rows/decrease in rows. # of Columns/Column names will not change. I'm trying to filter for a non-changing set of info, then delete the results. Here's what I get if I record my current run: Workbooks.Open Filename:= _ "***Directory of location and file name here***" Rows("1:1").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$S$746").AutoFilter Field:=5, Criteria1:=Array("10" _ , "11", "12", "13"), Operator:=xlFilterValues Rows("2:28").Select Selection.Delete Shift:=xlUp ActiveSheet.Range("$A$1:$S$719").AutoFilter Field:=5 Rows("1:1").Select Selection.AutoFilter I see the ActiveSheet.Ranges will need to change with each incarnation of the worksheet. So, I could probably set these to A1:S60000 as the spreadsheet will never get beyond that many rows. But, selecting the results of filter - rows to delete portion is problematic. Any suggestions? Or should I filter and set the Operator to delete? If so, what would that look like?
From: Don Guillett on 4 Jun 2010 16:01 If desired, send your file to my address below. I will only look if: 1. You send a copy of this message on an inserted sheet 2. You give me the newsgroup and the subject line 3. You send a clear explanation of what you want 4. You send before/after examples and expected results. -- Don Guillett Microsoft MVP Excel SalesAid Software dguillett(a)gmail.com "melExcel2007" <melExcel2007(a)discussions.microsoft.com> wrote in message news:0E8AEDE2-AED9-44D2-A841-8C135F7EDFB8(a)microsoft.com... >I want a macro to work for a worksheet name which will always be the same > directory and file name but the data inside worksheet will periodically > change - increase in rows/decrease in rows. # of Columns/Column names > will > not change. I'm trying to filter for a non-changing set of info, then > delete > the results. > > Here's what I get if I record my current run: > > Workbooks.Open Filename:= _ > "***Directory of location and file name here***" > Rows("1:1").Select > Selection.AutoFilter > ActiveSheet.Range("$A$1:$S$746").AutoFilter Field:=5, > Criteria1:=Array("10" _ > , "11", "12", "13"), Operator:=xlFilterValues > Rows("2:28").Select > Selection.Delete Shift:=xlUp > ActiveSheet.Range("$A$1:$S$719").AutoFilter Field:=5 > Rows("1:1").Select > Selection.AutoFilter > > I see the ActiveSheet.Ranges will need to change with each incarnation of > the worksheet. So, I could probably set these to A1:S60000 as the > spreadsheet will never get beyond that many rows. But, selecting the > results > of filter - rows to delete portion is problematic. Any suggestions? Or > should I filter and set the Operator to delete? If so, what would that > look > like?
From: melExcel2007 on 4 Jun 2010 17:13 Unfortunately, I cannot share the file - it's a work file. I'm trying to code a "macro" in one worksheet to open a seperate worksheet which will always be named the same and the # of columns will always be the same, but the # of rows and the data in the rows will change. I need to filter the separate worksheet, then delete what I've filtered. Then "find" blank row-entries in specific columns and replace with 0's. 2nd Macro: Then create a Pivot table (in same worksheet but on separate tab) - same table format each time, but rows/info in seperate worksheet will change. Copy and paste value that pivot into another seperate tab and modify it (add columns and formulas). Then save the file as different name from original worksheet. "Don Guillett" wrote: > If desired, send your file to my address below. I will only look if: > 1. You send a copy of this message on an inserted sheet > 2. You give me the newsgroup and the subject line > 3. You send a clear explanation of what you want > 4. You send before/after examples and expected results. > > > -- > Don Guillett > Microsoft MVP Excel > SalesAid Software > dguillett(a)gmail.com > "melExcel2007" <melExcel2007(a)discussions.microsoft.com> wrote in message > news:0E8AEDE2-AED9-44D2-A841-8C135F7EDFB8(a)microsoft.com... > >I want a macro to work for a worksheet name which will always be the same > > directory and file name but the data inside worksheet will periodically > > change - increase in rows/decrease in rows. # of Columns/Column names > > will > > not change. I'm trying to filter for a non-changing set of info, then > > delete > > the results. > > > > Here's what I get if I record my current run: > > > > Workbooks.Open Filename:= _ > > "***Directory of location and file name here***" > > Rows("1:1").Select > > Selection.AutoFilter > > ActiveSheet.Range("$A$1:$S$746").AutoFilter Field:=5, > > Criteria1:=Array("10" _ > > , "11", "12", "13"), Operator:=xlFilterValues > > Rows("2:28").Select > > Selection.Delete Shift:=xlUp > > ActiveSheet.Range("$A$1:$S$719").AutoFilter Field:=5 > > Rows("1:1").Select > > Selection.AutoFilter > > > > I see the ActiveSheet.Ranges will need to change with each incarnation of > > the worksheet. So, I could probably set these to A1:S60000 as the > > spreadsheet will never get beyond that many rows. But, selecting the > > results > > of filter - rows to delete portion is problematic. Any suggestions? Or > > should I filter and set the Operator to delete? If so, what would that > > look > > like? > > . >
From: Dave Peterson on 4 Jun 2010 18:16 When I don't know the number of rows, I'll use something like this if there's a column that can determine where the data stops: Dim LastRow as long .... with activesheet 'use column A to determine the last row lastrow = .cells(.rows.count,"A").end(xlup).row end with Then I could use: ActiveSheet.Range("A1:S" & lastrow).AutoFilter .... (the dollar signs don't help in the code) Or I just use the entire column: activesheet.range("A:S").autofilter ... ======= After the range is filtered, I'd use something like: dim VisRng as range 'near the top .... with activesheet with .autofilter.range 'don't worry about the exact address If .Columns(1).Cells.SpecialCells(xlCellTypeVisible).Count = 1 Then 'nothing visible Set VisRng = Nothing Else 'resize to avoid the header 'and come down one row 'single column of visible cells Set VisRng = .Resize(.Rows.Count - 1, 1).Offset(1, 0) _ .Cells.SpecialCells(xlCellTypeVisible) End If End With End With if visrng is nothing then 'do nothing else visrng.entirerow.delete end if ====== Untested, uncompiled. Watch for typos! melExcel2007 wrote: > > I want a macro to work for a worksheet name which will always be the same > directory and file name but the data inside worksheet will periodically > change - increase in rows/decrease in rows. # of Columns/Column names will > not change. I'm trying to filter for a non-changing set of info, then delete > the results. > > Here's what I get if I record my current run: > > Workbooks.Open Filename:= _ > "***Directory of location and file name here***" > Rows("1:1").Select > Selection.AutoFilter > ActiveSheet.Range("$A$1:$S$746").AutoFilter Field:=5, > Criteria1:=Array("10" _ > , "11", "12", "13"), Operator:=xlFilterValues > Rows("2:28").Select > Selection.Delete Shift:=xlUp > ActiveSheet.Range("$A$1:$S$719").AutoFilter Field:=5 > Rows("1:1").Select > Selection.AutoFilter > > I see the ActiveSheet.Ranges will need to change with each incarnation of > the worksheet. So, I could probably set these to A1:S60000 as the > spreadsheet will never get beyond that many rows. But, selecting the results > of filter - rows to delete portion is problematic. Any suggestions? Or > should I filter and set the Operator to delete? If so, what would that look > like? -- Dave Peterson
|
Pages: 1 Prev: Conditonal Format based on two different criteria Next: Move rows into columns |