Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 57
Default Change part of copied formula from relative to absolute.

Simplified version of my problem:
I have formulas in cells in A1 through A6 as follows:
A1 =B1/B11
A2 =B2/B11
A3 =B3/B11
A4 =B4/B11
A5 =B5/B11
A6 =B6/B11

I can't change the B11 to $B$11 or B$11 (it's a long story). I have a macro
that inserts rows in the above range, say between A3 and A4. The macro
copies the formula from A3 to A4, but returns the relative formula =B4/B13.
The B4 is correct, I want that relative, but I want the B13 to be B12 in the
newly inserted row. How do I copy that part of the formula absolutely?


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default Change part of copied formula from relative to absolute.

Hi John,

The easy way is to use absolute addressing but you have said that is out of
the question.

Therefore not sure if this will help but what about naming the cell B11 and
then using the name in lieu of the address. See Defined name in help for
naming cells. However, using named cells is a form of absolute addressing. If
cell is named MyCell the formula would be like the following.
=B1/MyCell

The next way is naming the cell B11 and then using code to build a relative
formula instead of using the name in the formula.

Firstly name the cell B11 as MyCell.

The following code inserts a row and then creates a relative formula from
the cell above and the named cell.

Suggest you test it with some values like in your post in a new workbook
before deciding to use it.

Sub CreateNewFormula()

Dim strFormula As String
Dim rowToInsert As Long

'Assign the number of the row to insert to a variable
rowToInsert = 4

'Insert the row
Rows(rowToInsert).Insert Shift:=xlDown

'Copy formula from cell above inserted row to _
cell in new row (It won't be correct at this point)
Cells(rowToInsert - 1, "A").Copy Cells(rowToInsert, "A")

'Assign the first part of the formula up to _
division sign to a string variable.
strFormula = Left(Cells(rowToInsert, "A").Formula, _
InStr(1, Cells(rowToInsert, "A").Formula, "/"))

'Create formula in cell in new row by concatenating _
strFormula with relative address of named range
Cells(rowToInsert, "A") = strFormula & Range("MyCell").Address(0, 0)

End Sub

The above could probably be done by extracting the last part of the formula
from the previous row and concatenating that with StrFormula.

Hope it helps.


--
Regards,

OssieMac


"John" wrote:

Simplified version of my problem:
I have formulas in cells in A1 through A6 as follows:
A1 =B1/B11
A2 =B2/B11
A3 =B3/B11
A4 =B4/B11
A5 =B5/B11
A6 =B6/B11

I can't change the B11 to $B$11 or B$11 (it's a long story). I have a macro
that inserts rows in the above range, say between A3 and A4. The macro
copies the formula from A3 to A4, but returns the relative formula =B4/B13.
The B4 is correct, I want that relative, but I want the B13 to be B12 in the
newly inserted row. How do I copy that part of the formula absolutely?



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 50
Default Change part of copied formula from relative to absolute.

Or:
Range.FormulaR1C1 = "=R1C1" 'Absolute style
Range.FormulaR1C1 = "=RC[-1]" 'Relative style
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 57
Default Change part of copied formula from relative to absolute.

This R1C1 may be my answer, but I'm unfamiliar with it and don't understand
how to use it. Any suggestion please?

"NOPIK" wrote in message
...
Or:
Range.FormulaR1C1 = "=R1C1" 'Absolute style
Range.FormulaR1C1 = "=RC[-1]" 'Relative style



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 57
Default Change part of copied formula from relative to absolute.



Maybe I should explain why I think the absolutes won't work, in case there
is a better solution. I have an Excel Table formed of many groups, each
group with a subtotal row. Column A of the Table, for example is as follows:



Row

1 Data

2 Data

3 Data

4 =Sum A1:A3, (among other formulas)



I have a macro to add a group to my table, which copies formulas for my
subtotal rows from another sheet. The formulas on that other sheet are
relative, since it wouldn't copy properly from another location if they
were. Everything works fine until I need to insert a row in a group, which
I made a macro for, which caused my about/relative problem described
earlier. I need to think out of the box, how else can I do this?



"OssieMac" wrote in message
...
Hi John,

The easy way is to use absolute addressing but you have said that is out
of
the question.

Therefore not sure if this will help but what about naming the cell B11
and
then using the name in lieu of the address. See Defined name in help for
naming cells. However, using named cells is a form of absolute addressing.
If
cell is named MyCell the formula would be like the following.
=B1/MyCell

The next way is naming the cell B11 and then using code to build a
relative
formula instead of using the name in the formula.

Firstly name the cell B11 as MyCell.

The following code inserts a row and then creates a relative formula from
the cell above and the named cell.

Suggest you test it with some values like in your post in a new workbook
before deciding to use it.

Sub CreateNewFormula()

Dim strFormula As String
Dim rowToInsert As Long

'Assign the number of the row to insert to a variable
rowToInsert = 4

'Insert the row
Rows(rowToInsert).Insert Shift:=xlDown

'Copy formula from cell above inserted row to _
cell in new row (It won't be correct at this point)
Cells(rowToInsert - 1, "A").Copy Cells(rowToInsert, "A")

'Assign the first part of the formula up to _
division sign to a string variable.
strFormula = Left(Cells(rowToInsert, "A").Formula, _
InStr(1, Cells(rowToInsert, "A").Formula, "/"))

'Create formula in cell in new row by concatenating _
strFormula with relative address of named range
Cells(rowToInsert, "A") = strFormula & Range("MyCell").Address(0, 0)

End Sub

The above could probably be done by extracting the last part of the
formula
from the previous row and concatenating that with StrFormula.

Hope it helps.


--
Regards,

OssieMac


"John" wrote:

Simplified version of my problem:
I have formulas in cells in A1 through A6 as follows:
A1 =B1/B11
A2 =B2/B11
A3 =B3/B11
A4 =B4/B11
A5 =B5/B11
A6 =B6/B11

I can't change the B11 to $B$11 or B$11 (it's a long story). I have a
macro
that inserts rows in the above range, say between A3 and A4. The macro
copies the formula from A3 to A4, but returns the relative formula
=B4/B13.
The B4 is correct, I want that relative, but I want the B13 to be B12 in
the
newly inserted row. How do I copy that part of the formula absolutely?







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
change hyperlinks from relative to absolute Nikki Excel Discussion (Misc queries) 2 April 2nd 23 01:35 PM
Change a cell reference from relative to absolute Fred Holmes Excel Discussion (Misc queries) 2 June 4th 09 02:03 AM
Change Excel hyperlinks from absolute to relative NatalieK Excel Programming 2 October 11th 08 04:38 PM
How can you change excel macros from absolute to relative? Ralonne Excel Worksheet Functions 5 May 30th 06 07:40 PM


All times are GMT +1. The time now is 09:10 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"