PC Review


Reply
Thread Tools Rate Thread

can anybody speed up this macro

 
 
matthias
Guest
Posts: n/a
 
      16th Oct 2006
Hello guys, i have the following macro that works but it goes very
slowly

What it does, is that applies an autofilter on several columns and then
copies the filtered values from column 1 to a new sheet. If you know
that when there is no filtered range (so there are no values that
fulfill the criterium) nothing has to be copied, is it possible to
speed it up with a if autofilter.range is empty then do next or
something??

thankx

Worksheets("General fields").Activate
Selection.AutoFilter field:=8, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a2")
Selection.AutoFilter field:=8



'short call
Worksheets("General fields").Activate
Selection.AutoFilter field:=9, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a98")
Selection.AutoFilter field:=9


'rsu
Worksheets("General fields").Activate
Selection.AutoFilter field:=12, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a26")
Selection.AutoFilter field:=12

'espp
Worksheets("General fields").Activate
Selection.AutoFilter field:=13, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a50")
Selection.AutoFilter field:=13

'f shares
Worksheets("General fields").Activate
Selection.AutoFilter field:=14, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a74")
Selection.AutoFilter field:=14

'top hat
Worksheets("General fields").Activate
Selection.AutoFilter field:=16, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a122")
Selection.AutoFilter field:=16

'pension
Worksheets("General fields").Activate
Selection.AutoFilter field:=17, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a128")
Selection.AutoFilter field:=17

'degroof AM
Worksheets("General fields").Activate
Selection.AutoFilter field:=19, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a133")
Selection.AutoFilter field:=19

'degroof ANM
Worksheets("General fields").Activate
Selection.AutoFilter field:=20, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a140")
Selection.AutoFilter field:=20

'other bank
Worksheets("General fields").Activate
Selection.AutoFilter field:=21, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a147")
Selection.AutoFilter field:=21

'other
Worksheets("General fields").Activate
Selection.AutoFilter field:=23, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a152")
Selection.AutoFilter field:=23

'liabilities
Worksheets("General fields").Activate
Selection.AutoFilter field:=24, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy
Destination:=Worksheets("Temp").Range("a157")
Selection.AutoFilter field:=24


Worksheets("Temp").Buttons.Delete
Worksheets("General fields").Activate
Selection.AutoFilter field:=6

 
Reply With Quote
 
 
 
 
Don Guillett
Guest
Posts: n/a
 
      16th Oct 2006
something like this (UN tested). I would also change selection to the
range("a2:z2")

Worksheets("General fields").Activate
myarray = Array(8, 9, 12, 13)
For Each i In myarray
'MsgBox i
lastrow=sheets("Temp").cells(.rows.count,"a").end(xlup).row+1
Selection.AutoFilter field:=i, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Columns(1).Copy _
Worksheets("Temp").cells(lastrow,"a")
Next i

--
Don Guillett
SalesAid Software
(E-Mail Removed)
"matthias" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hello guys, i have the following macro that works but it goes very
> slowly
>
> What it does, is that applies an autofilter on several columns and then
> copies the filtered values from column 1 to a new sheet. If you know
> that when there is no filtered range (so there are no values that
> fulfill the criterium) nothing has to be copied, is it possible to
> speed it up with a if autofilter.range is empty then do next or
> something??
>
> thankx
>
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=8, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a2")
> Selection.AutoFilter field:=8
>
>
>
> 'short call
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=9, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a98")
> Selection.AutoFilter field:=9
>
>
> 'rsu
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=12, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a26")
> Selection.AutoFilter field:=12
>
> 'espp
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=13, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a50")
> Selection.AutoFilter field:=13
>
> 'f shares
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=14, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a74")
> Selection.AutoFilter field:=14
>
> 'top hat
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=16, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a122")
> Selection.AutoFilter field:=16
>
> 'pension
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=17, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a128")
> Selection.AutoFilter field:=17
>
> 'degroof AM
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=19, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a133")
> Selection.AutoFilter field:=19
>
> 'degroof ANM
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=20, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a140")
> Selection.AutoFilter field:=20
>
> 'other bank
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=21, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a147")
> Selection.AutoFilter field:=21
>
> 'other
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=23, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a152")
> Selection.AutoFilter field:=23
>
> 'liabilities
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=24, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a157")
> Selection.AutoFilter field:=24
>
>
> Worksheets("Temp").Buttons.Delete
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=6
>



 
Reply With Quote
 
=?Utf-8?B?VG9tIE9naWx2eQ==?=
Guest
Posts: n/a
 
      16th Oct 2006
you can use
set rng = activesheet.autofilter.Range.columns(8).cells
if application.countA(rng) > 1 then ' assume header is not empty
' apply the autofilter and copy
else
' skip this one
end if

--
Regards,
Tom Ogilvy


"matthias" wrote:

> Hello guys, i have the following macro that works but it goes very
> slowly
>
> What it does, is that applies an autofilter on several columns and then
> copies the filtered values from column 1 to a new sheet. If you know
> that when there is no filtered range (so there are no values that
> fulfill the criterium) nothing has to be copied, is it possible to
> speed it up with a if autofilter.range is empty then do next or
> something??
>
> thankx
>
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=8, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a2")
> Selection.AutoFilter field:=8
>
>
>
> 'short call
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=9, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a98")
> Selection.AutoFilter field:=9
>
>
> 'rsu
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=12, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a26")
> Selection.AutoFilter field:=12
>
> 'espp
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=13, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a50")
> Selection.AutoFilter field:=13
>
> 'f shares
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=14, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a74")
> Selection.AutoFilter field:=14
>
> 'top hat
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=16, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a122")
> Selection.AutoFilter field:=16
>
> 'pension
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=17, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a128")
> Selection.AutoFilter field:=17
>
> 'degroof AM
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=19, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a133")
> Selection.AutoFilter field:=19
>
> 'degroof ANM
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=20, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a140")
> Selection.AutoFilter field:=20
>
> 'other bank
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=21, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a147")
> Selection.AutoFilter field:=21
>
> 'other
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=23, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a152")
> Selection.AutoFilter field:=23
>
> 'liabilities
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=24, Criteria1:="<>"
> ActiveSheet.AutoFilter.Range.Columns(1).Copy
> Destination:=Worksheets("Temp").Range("a157")
> Selection.AutoFilter field:=24
>
>
> Worksheets("Temp").Buttons.Delete
> Worksheets("General fields").Activate
> Selection.AutoFilter field:=6
>
>

 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Need to Speed Up A Macro LostInNY Microsoft Excel Programming 2 20th Jul 2009 06:37 PM
Speed up macro =?Utf-8?B?bmM=?= Microsoft Excel Misc 2 23rd Nov 2006 02:10 PM
Help, need to speed up this macro retseort Microsoft Excel Misc 3 12th Jan 2006 12:33 PM
Macro Speed mstover34 Microsoft Excel Discussion 3 3rd Jun 2004 07:41 PM
Using With to speed up macro =?Utf-8?B?V2VzbGV5?= Microsoft Excel Programming 2 30th Dec 2003 10:54 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 05:21 PM.