Speeding up execution of a Macro

Q

QuietMan

I'm running a macro that pull data from excel file #1 to Excel File #2

The Macro is in excel file #2
it uses the sumif and offset formulas in combination with a ranged name
linked to excel file #1 (there are 43 worksheets of informatiuon in this
file, I need from 19 of these worksheets)

Formula: [DataArray = range referrenced in Excel file #1, changes based on
column in excel file #2]
ActiveCell.FormulaR1C1 = _
"=SUMIF(" & DataArray & ",RC1,OFFSET(" & DataArray & ",0,R1C,ROWS(" &
DataArray & "),1))"

Excel file #2 has 228 column of data and 1000 rows
I use a nested For Next loop to go through the full range and add the
correct formula to each cell. the copy the full range of data then paste
value it before turning back on calculations.

This works fine but I have to do this for five sheet in the woorbook, and
after running the macro excel becomes slow and slower

does any on have a better way of doinmg this that would be faster?

Thanks
 
J

John Bundy

we'd have to have all the code for anything too detailed, but when you are
working with formulas and such on a worksheet always start your code with

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

and end with


Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
 
T

Tim Zych

Turn calc off, loop through the range by column, add the formular1c1 in one
fell swoop, turn calc on. No need to loop through each cell in the range by
column.
 
Q

QuietMan

I can easily determine the range to apply the formula, but how do I apply
formularr1c1 to an entire range?

Thanks
--
Helping Is always a good thing


Tim Zych said:
Turn calc off, loop through the range by column, add the formular1c1 in one
fell swoop, turn calc on. No need to loop through each cell in the range by
column.

--
Tim Zych
SF, CA

QuietMan said:
I'm running a macro that pull data from excel file #1 to Excel File #2

The Macro is in excel file #2
it uses the sumif and offset formulas in combination with a ranged name
linked to excel file #1 (there are 43 worksheets of informatiuon in this
file, I need from 19 of these worksheets)

Formula: [DataArray = range referrenced in Excel file #1, changes based on
column in excel file #2]
ActiveCell.FormulaR1C1 = _
"=SUMIF(" & DataArray & ",RC1,OFFSET(" & DataArray & ",0,R1C,ROWS(" &
DataArray & "),1))"

Excel file #2 has 228 column of data and 1000 rows
I use a nested For Next loop to go through the full range and add the
correct formula to each cell. the copy the full range of data then paste
value it before turning back on calculations.

This works fine but I have to do this for five sheet in the woorbook, and
after running the macro excel becomes slow and slower

does any on have a better way of doinmg this that would be faster?

Thanks
 
T

Tim Zych

Same as the cell.
rng.FormulaR1C1 = "<R1C1formula>"

That's one of the powers of R1C1 formulas.

--
Tim Zych
SF, CA

QuietMan said:
I can easily determine the range to apply the formula, but how do I apply
formularr1c1 to an entire range?

Thanks
--
Helping Is always a good thing


Tim Zych said:
Turn calc off, loop through the range by column, add the formular1c1 in
one
fell swoop, turn calc on. No need to loop through each cell in the range
by
column.

--
Tim Zych
SF, CA

QuietMan said:
I'm running a macro that pull data from excel file #1 to Excel File #2

The Macro is in excel file #2
it uses the sumif and offset formulas in combination with a ranged name
linked to excel file #1 (there are 43 worksheets of informatiuon in
this
file, I need from 19 of these worksheets)

Formula: [DataArray = range referrenced in Excel file #1, changes based
on
column in excel file #2]
ActiveCell.FormulaR1C1 = _
"=SUMIF(" & DataArray & ",RC1,OFFSET(" & DataArray & ",0,R1C,ROWS(" &
DataArray & "),1))"

Excel file #2 has 228 column of data and 1000 rows
I use a nested For Next loop to go through the full range and add the
correct formula to each cell. the copy the full range of data then
paste
value it before turning back on calculations.

This works fine but I have to do this for five sheet in the woorbook,
and
after running the macro excel becomes slow and slower

does any on have a better way of doinmg this that would be faster?

Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top