Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default a faster method in changing cell value?

Hi,

I would like to know what is the fastest method in changing cell value,
currently, my code is :

---------------------------

myCol = 97
myRow = 1

for i = 0 to 5000
for j = 0 to 20
Range(chr(myCol)&myRow) = "TEST"
next
next

---------------------------

This seems to take 30 second to finish, any improvement can be done? or
the limitation of excel?

Thanks!

Nick
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default a faster method in changing cell value?

Some Corrections..

---------------

myRow = 1

for i = 0 to 5000
myCol = 97 ' 97 mean a
for j = 0 to 20
Range(chr(myCol)&myRow) = "TEST"
myCol = myCol + 1
next
myRow = myRow + 1
next
---------------


Nick wrote:

Hi,

I would like to know what is the fastest method in changing cell value,
currently, my code is :

---------------------------

myCol = 97
myRow = 1

for i = 0 to 5000
for j = 0 to 20
Range(chr(myCol)&myRow) = "TEST"
next
next

---------------------------

This seems to take 30 second to finish, any improvement can be done? or
the limitation of excel?

Thanks!

Nick

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 70
Default a faster method in changing cell value?

Grüezi Nick

Nick schrieb am 17.08.2004

I would like to know what is the fastest method in changing cell value,
currently, my code is :

---------------------------

myCol = 97
myRow = 1

for i = 0 to 5000
for j = 0 to 20
Range(chr(myCol)&myRow) = "TEST"
next
next

---------------------------

This seems to take 30 second to finish, any improvement can be done? or
the limitation of excel?


Actually the following des the same like your code:

Range("A1").Value = "TEST"

....but I think you would fill an etire area or range with a value.
Try it like this:

Range("A1:A100").Value = "TEST"

...or try to explain some more, what you like to do
(in your code you have two count-variables you don't use somewhere)

--
Regards

Thomas Ramel
- MVP for Microsoft-Excel -

[Win XP Pro SP-1 / xl2000 SP-3]
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 70
Default a faster method in changing cell value?

Grüezi Nick

Nick schrieb am 17.08.2004

Some Corrections..


Ahhh, now its clear :-)

You will fill a Range of 20 Columns and 5000 Rows, beginning in A1.

You can do this like the following:

mycol = 20
myrow = 1000
Range("A1").Resize(myrow, mycol).Value = "TEST"

--
Regards

Thomas Ramel
- MVP for Microsoft-Excel -

[Win XP Pro SP-1 / xl2000 SP-3]
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default a faster method in changing cell value?

Hi Thomas,

Thanks for your reply.

In fact, the value going to set is not a static text

for the below code, how it can be optimized ?
---------------------------------------------------------
myRow = 1

for i = 0 to 5000
myCol = 97 ' 97 mean a
for j = 0 to 20
Range(chr(myCol)&myRow) = i & j 'not static!
myCol = myCol + 1
next
myRow = myRow + 1
next
----------------------------------------------------------

Thanks again.

Nick


Thomas Ramel wrote:
Grüezi Nick

Nick schrieb am 17.08.2004


Some Corrections..



Ahhh, now its clear :-)

You will fill a Range of 20 Columns and 5000 Rows, beginning in A1.

You can do this like the following:

mycol = 20
myrow = 1000
Range("A1").Resize(myrow, mycol).Value = "TEST"



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default a faster method in changing cell value?

Sub Tester1()
Dim varr() As String
Dim i As Long, j As Long

ReDim varr(0 To 5000, 0 To 20)
For i = 0 To 5000
For j = 0 To 20
varr(i, j) = i & j 'not static!
Next
Next
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("A1").Resize(50001, 21).Value = varr
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub


took about 20 seconds for me, but most of the time was spend writing to the
worksheet. Building the array was almost instantaneous.

--
Regards,
Tom Ogilvy


"Nick" wrote in message
...
Hi Thomas,

Thanks for your reply.

In fact, the value going to set is not a static text

for the below code, how it can be optimized ?
---------------------------------------------------------
myRow = 1

for i = 0 to 5000
myCol = 97 ' 97 mean a
for j = 0 to 20
Range(chr(myCol)&myRow) = i & j 'not static!
myCol = myCol + 1
next
myRow = myRow + 1
next
----------------------------------------------------------

Thanks again.

Nick


Thomas Ramel wrote:
Grüezi Nick

Nick schrieb am 17.08.2004


Some Corrections..



Ahhh, now its clear :-)

You will fill a Range of 20 Columns and 5000 Rows, beginning in A1.

You can do this like the following:

mycol = 20
myrow = 1000
Range("A1").Resize(myrow, mycol).Value = "TEST"



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default a faster method in changing cell value?

Hi,

After adding Application.ScreenUpdating + Application.Calculation,
performance is better, thanks!

But, it might be silly, what is the exact function of ReSize method?

Nick

Tom Ogilvy wrote:

Sub Tester1()
Dim varr() As String
Dim i As Long, j As Long

ReDim varr(0 To 5000, 0 To 20)
For i = 0 To 5000
For j = 0 To 20
varr(i, j) = i & j 'not static!
Next
Next
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("A1").Resize(50001, 21).Value = varr
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub


took about 20 seconds for me, but most of the time was spend writing to the
worksheet. Building the array was almost instantaneous.

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default a faster method in changing cell value?

to re-size the range

Range("A1").Resize(10,2)

then refers to A1:B10

as an example.

--
Regards,
Tom Ogilvy


"Nick" wrote in message
...
Hi,

After adding Application.ScreenUpdating + Application.Calculation,
performance is better, thanks!

But, it might be silly, what is the exact function of ReSize method?

Nick

Tom Ogilvy wrote:

Sub Tester1()
Dim varr() As String
Dim i As Long, j As Long

ReDim varr(0 To 5000, 0 To 20)
For i = 0 To 5000
For j = 0 To 20
varr(i, j) = i & j 'not static!
Next
Next
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("A1").Resize(50001, 21).Value = varr
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub


took about 20 seconds for me, but most of the time was spend writing to

the
worksheet. Building the array was almost instantaneous.



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Which method is faster matpoh Excel Discussion (Misc queries) 2 October 21st 05 03:12 PM
Can faster CPU+larger/faster RAM significantly speed up recalulati jmk_li Excel Discussion (Misc queries) 2 September 28th 05 10:24 AM
Changing filenames using theSaveAsCopy method davidoo2005 Excel Programming 1 July 10th 04 08:13 AM
Which method is faster? Layman Excel Programming 1 February 27th 04 05:22 PM
Changing Calculation Method Simon Palmer Excel Programming 2 November 26th 03 06:01 PM


All times are GMT +1. The time now is 09:32 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"