Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default How to fill range with formula using VBA?

I have code that creates new worksheets using automation. I need to fill a
range in each worksheet with a formula after it is created. What I
currently have looks like this:

With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
lc = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
lr = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
.Cells(1).EntireRow.HorizontalAlignment = xlCenter
.Cells(1).EntireRow.Font.Bold = True
.Range("B2:B" & lr).Formula = "=AVERAGE(E2:AH2)"
End With

The problem is I don't know how many columns I'm going to have. So
"=AVERAGE(E2:AH2)" is just a guess - I could have more or less columns than
"AH". I have the value of the last column expressed as an integer in the
variable lc - but how do I use this? Is there a way to translate that value
to the corresponding letter value? The formula has to be a sting value to
fill down to the last column, correct?

This may be a simple question, but I have not worked with Excel to much...

Thanks.


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 81
Default How to fill range with formula using VBA?

Try something along these lines.

lcl = Left(Columns(lc).Address(0, 0), 2 + (lc < 27))
MyRange = "E2:" & lcl + "2"
Range("a7") = "=Average(" & MyRange + ")"
Donna

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default How to fill range with formula using VBA?

With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
lc = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
lr = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
.Cells(1).EntireRow.HorizontalAlignment = xlCenter
.Cells(1).EntireRow.Font.Bold = True
.Range("B2",.Cells( lr,lc).Formula = "=AVERAGE(E2:AH2)"
End With

--
Regards,
Tom Ogilvy

"deko" wrote in message
om...
I have code that creates new worksheets using automation. I need to fill

a
range in each worksheet with a formula after it is created. What I
currently have looks like this:

With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
lc = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
lr = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
.Cells(1).EntireRow.HorizontalAlignment = xlCenter
.Cells(1).EntireRow.Font.Bold = True
.Range("B2:B" & lr).Formula = "=AVERAGE(E2:AH2)"
End With

The problem is I don't know how many columns I'm going to have. So
"=AVERAGE(E2:AH2)" is just a guess - I could have more or less columns

than
"AH". I have the value of the last column expressed as an integer in the
variable lc - but how do I use this? Is there a way to translate that

value
to the corresponding letter value? The formula has to be a sting value to
fill down to the last column, correct?

This may be a simple question, but I have not worked with Excel to much...

Thanks.




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default How to fill range with formula using VBA?

With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
lc = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
lr = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
.Cells(1).EntireRow.HorizontalAlignment = xlCenter
.Cells(1).EntireRow.Font.Bold = True
.Range("B2",.Cells( lr,lc).Formula = "=AVERAGE(E2:AH2)"
End With


Actually, the range in which the formula is inserted is okay. It's the
range specified within the formula that needs to be made dynamic.

"=AVERAGE(E2:AH2)" specifies a fixed number of columns. I need a way to
dynamically adjust up to AI or down to AG, for example. I'm wondering if I
can use a different syntax within the formula - will the R1C1 syntax work?
That way I could substitute the lc variable for AH. I suppose I could write
a function that translates the lc value into a letter value... but I doubt
that's the best soution.


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default How to fill range with formula using VBA?

"=AVERAGE(" & .Range(.Cells(2,5),.Cells(rw,col).Address & ")"


rw and col are integers.
--
Regards,
Tom Ogilvy


"deko" wrote in message
. com...
With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
lc = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
lr = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
.Cells(1).EntireRow.HorizontalAlignment = xlCenter
.Cells(1).EntireRow.Font.Bold = True
.Range("B2",.Cells( lr,lc).Formula = "=AVERAGE(E2:AH2)"
End With


Actually, the range in which the formula is inserted is okay. It's the
range specified within the formula that needs to be made dynamic.

"=AVERAGE(E2:AH2)" specifies a fixed number of columns. I need a way to
dynamically adjust up to AI or down to AG, for example. I'm wondering if

I
can use a different syntax within the formula - will the R1C1 syntax work?
That way I could substitute the lc variable for AH. I suppose I could

write
a function that translates the lc value into a letter value... but I doubt
that's the best soution.






  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 53
Default How to fill range with formula using VBA?

"=AVERAGE(" & .Range(.Cells(2,5),.Cells(rw,col).Address & ")"

This is close:

With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
.Range("B2:B" & lr).Formula = "=AVERAGE(" & xlapp.Workbooks _

(strXlsFile).Worksheets(sn(i)).Range(xlapp.Workboo ks(strXlsFile).Worksheets
_
(sn(i)).Cells(2, 5),
xlapp.Workbooks(strXlsFile).Worksheets(sn(i)).Cell s _
(2, lc)).Address & ")"
End with

The problem is that the formula appearing in the worksheet looks like this:

=AVERAGE($E$2:$AG$2)

so the same formula is applied to the entire B column. The formula should
be relative to the B cell:

=AVERAGE(E2:AG2)
=AVERAGE(E3:AG3)
=AVERAGE(E4:AG4)

and so on.

Is there a way to make the range relative?


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default How to fill range with formula using VBA?

"=AVERAGE(" & .Range(.Cells(2,5),.Cells(rw,col).Address(0,0) & ")"

--
Regards,
Tom Ogilvy

"deko" wrote in message
. com...
"=AVERAGE(" & .Range(.Cells(2,5),.Cells(rw,col).Address & ")"


This is close:

With xlapp.Workbooks(strXlsFile).Worksheets(sn(i))
.Range("B2:B" & lr).Formula = "=AVERAGE(" & xlapp.Workbooks _


(strXlsFile).Worksheets(sn(i)).Range(xlapp.Workboo ks(strXlsFile).Worksheets
_
(sn(i)).Cells(2, 5),
xlapp.Workbooks(strXlsFile).Worksheets(sn(i)).Cell s _
(2, lc)).Address & ")"
End with

The problem is that the formula appearing in the worksheet looks like

this:

=AVERAGE($E$2:$AG$2)

so the same formula is applied to the entire B column. The formula should
be relative to the B cell:

=AVERAGE(E2:AG2)
=AVERAGE(E3:AG3)
=AVERAGE(E4:AG4)

and so on.

Is there a way to make the range relative?




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
Fill range don't change the formula, Help was no help. Please hel Trussell Excel Worksheet Functions 3 October 19th 08 04:30 AM
I Need a Formula to Auto-fill Phone Numbers in a Range twd3lr Excel Worksheet Functions 4 February 4th 05 08:38 PM
Formula to count the cells in a range that have a fill color. Slainteva Excel Discussion (Misc queries) 2 January 19th 05 08:25 PM
Formula to count the cells in a range that have a fill color. Molly F Excel Discussion (Misc queries) 2 January 19th 05 06:15 PM
Excel - formula to calculate colored fill cells within a range wi. MA Excel Worksheet Functions 1 January 7th 05 04:06 PM


All times are GMT +1. The time now is 09:47 PM.

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"