ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Excel Iteration Program (https://www.excelbanter.com/excel-discussion-misc-queries/196342-excel-iteration-program.html)

raj74

Excel Iteration Program
 
I have an annoying situation when I each time open the Ms excel file I
have to activate(pressing F2 and entering) the output cell (Col C) which
is having a circular reference with Col A to get the desired value but it is
lost when i reopen it next time and show #value.
The ouput cell C is having a interpolate function (a macro, attached below)
to interpolate from a range of value given separately for the value of
corresponding B
cell which is indirectly having a circular reference with Col A.

To make it clear lets see the File:

The three data range

A1 B1 C1
A2 B2 C2
A3 B3 C3

Now the three cols are linked by following relation

A = 4 + C
B = constvalue x A, Here B1 = 1.0 * A1, B2 = 0.9 * A2, B3 = 0.98 * A3
C = Function of (B)

C value is retrived by interpolation between a range of B & C, Given
separately, For that a macro has been writeen.


The data range from which C will interpolate the output value for
corresponding B value are as follows:
B C
0.00 0.00
2.00 1.00
4.00 2.00
6.00 3.00
8.00 4.00
10.00 5.00
The solution is C1: C2:C3 = 4.00:3.27:3.84

The macro for interpolation function is as below
---------------------------------------------------
Option Explicit

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

' Interpolation Function

Dim i As Integer
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim numRows As Integer


numRows = c1.Rows.Count

For i = 1 To numRows
If c1.Cells(i, 1).Value Target Then
Exit For
End If
Next i

x1 = c1.Cells(i - 1, 1).Value
x2 = c1.Cells(i, 1).Value
y1 = c2.Cells(i - 1, 1).Value
y2 = c2.Cells(i, 1).Value

Interpolate = (y2 - y1) * (Target - x1) / (x2 - x1) + y1

End Function
---------------------------------------------
Could this problem be solved so that iteraion automatically starts without
any activation?? Kindly help.

Regards

Raj


raj74

Excel Iteration Problem/not capable??????????
 
why no expert is replying to my problem, is this a excel bug that it does not
do the iteration properly and need activation?????????????

regards

"raj74" wrote:

I have an annoying situation when I each time open the Ms excel file I
have to activate(pressing F2 and entering) the output cell (Col C) which
is having a circular reference with Col A to get the desired value but it is
lost when i reopen it next time and show #value.
The ouput cell C is having a interpolate function (a macro, attached below)
to interpolate from a range of value given separately for the value of
corresponding B
cell which is indirectly having a circular reference with Col A.

To make it clear lets see the File:

The three data range

A1 B1 C1
A2 B2 C2
A3 B3 C3

Now the three cols are linked by following relation

A = 4 + C
B = constvalue x A, Here B1 = 1.0 * A1, B2 = 0.9 * A2, B3 = 0.98 * A3
C = Function of (B)

C value is retrived by interpolation between a range of B & C, Given
separately, For that a macro has been writeen.


The data range from which C will interpolate the output value for
corresponding B value are as follows:
B C
0.00 0.00
2.00 1.00
4.00 2.00
6.00 3.00
8.00 4.00
10.00 5.00
The solution is C1: C2:C3 = 4.00:3.27:3.84

The macro for interpolation function is as below
---------------------------------------------------
Option Explicit

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

' Interpolation Function

Dim i As Integer
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim numRows As Integer


numRows = c1.Rows.Count

For i = 1 To numRows
If c1.Cells(i, 1).Value Target Then
Exit For
End If
Next i

x1 = c1.Cells(i - 1, 1).Value
x2 = c1.Cells(i, 1).Value
y1 = c2.Cells(i - 1, 1).Value
y2 = c2.Cells(i, 1).Value

Interpolate = (y2 - y1) * (Target - x1) / (x2 - x1) + y1

End Function
---------------------------------------------
Could this problem be solved so that iteraion automatically starts without
any activation?? Kindly help.

Regards

Raj


Dana DeLouis

Excel Iteration Problem/not capable??????????
 
Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

The solution is C1:C3 = 4.00, 3.27, 3.84


Hi. I believe this function in C1:C3 can be eliminated.
In C1, just put the equation =B1/2 and copy down to C3.

As a side note, I believe you can recursively solve your equation when taking the limit at infinity.
I've written it here as a vba function to make it easy to show.
Here, k is your "+4" value, and f is your factor (1, .9, or .98)

Function Fx(k, f)
Fx = (f * k) / (2 - f)
End Function

Sub TestIt()
Debug.Print Fx(4, 1)
Debug.Print Fx(4, 0.9)
Debug.Print Fx(4, 0.98)
End Sub


This returns the 3 solutions given in your example (and at a higher precision I might add)
4
3.27272727272727
3.84313725490196

--
HTH :)
Dana DeLouis


"raj74" wrote in message ...

why no expert is replying to my problem, is this a excel bug that it does not
do the iteration properly and need activation?????????????

regards

"raj74" wrote:


I have an annoying situation when I each time open the Ms excel file I
have to activate(pressing F2 and entering) the output cell (Col C) which
is having a circular reference with Col A to get the desired value but it is
lost when i reopen it next time and show #value.
The ouput cell C is having a interpolate function (a macro, attached below)
to interpolate from a range of value given separately for the value of
corresponding B
cell which is indirectly having a circular reference with Col A.

To make it clear lets see the File:

The three data range

A1 B1 C1
A2 B2 C2
A3 B3 C3


Now the three cols are linked by following relation

A = 4 + C
B = constvalue x A, Here B1 = 1.0 * A1, B2 = 0.9 * A2, B3 = 0.98 * A3
C = Function of (B)

C value is retrived by interpolation between a range of B & C, Given
separately, For that a macro has been writeen.


The data range from which C will interpolate the output value for
corresponding B value are as follows:
B C
0.00 0.00
2.00 1.00
4.00 2.00
6.00 3.00
8.00 4.00
10.00 5.00
The solution is C1: C2:C3 = 4.00:3.27:3.84

The macro for interpolation function is as below
---------------------------------------------------
Option Explicit

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

' Interpolation Function

Dim i As Integer
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim numRows As Integer


numRows = c1.Rows.Count

For i = 1 To numRows
If c1.Cells(i, 1).Value Target Then
Exit For
End If
Next i

x1 = c1.Cells(i - 1, 1).Value
x2 = c1.Cells(i, 1).Value
y1 = c2.Cells(i - 1, 1).Value
y2 = c2.Cells(i, 1).Value

Interpolate = (y2 - y1) * (Target - x1) / (x2 - x1) + y1

End Function
---------------------------------------------
Could this problem be solved so that iteraion automatically starts without
any activation?? Kindly help.

Regards

Raj

raj74

Excel Iteration Problem/not capable??????????
 
Thanks for the reply.
Actually what I am looking for why excel doesn't recalculate when specfic
UDF (User defined Function) is used. I have given a sample to my problem.In
actual problem my A col data is in circular ref with D col data, again B col
is linked with A Col & C col inked with B col by respective formula. The
output will be in C col based on the B col value. Interpolation fn (UDF) is
used because to get the value of output C for corresponding value of B from a
given (B,C) data range.
Each time I have to activae the output cell py presing [F2] and [Enter] like
similar situation given to you for the results.why it is not shown up
automatically. Still I couldn't found out why, Is their any code to activate
all the UDF or recalculate all the formula in a particular worksheet.
I am using Excel 2000. If I could send you the softcopy...
Any way thanks for your reply.

Sincerely
Raj
New Delhi


"Dana DeLouis" wrote:

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant
The solution is C1:C3 = 4.00, 3.27, 3.84


Hi. I believe this function in C1:C3 can be eliminated.
In C1, just put the equation =B1/2 and copy down to C3.

As a side note, I believe you can recursively solve your equation when taking the limit at infinity.
I've written it here as a vba function to make it easy to show.
Here, k is your "+4" value, and f is your factor (1, .9, or .98)

Function Fx(k, f)
Fx = (f * k) / (2 - f)
End Function

Sub TestIt()
Debug.Print Fx(4, 1)
Debug.Print Fx(4, 0.9)
Debug.Print Fx(4, 0.98)
End Sub


This returns the 3 solutions given in your example (and at a higher precision I might add)
4
3.27272727272727
3.84313725490196

--
HTH :)
Dana DeLouis


"raj74" wrote in message ...
why no expert is replying to my problem, is this a excel bug that it does not
do the iteration properly and need activation?????????????

regards

"raj74" wrote:

I have an annoying situation when I each time open the Ms excel file I
have to activate(pressing F2 and entering) the output cell (Col C) which
is having a circular reference with Col A to get the desired value but it is
lost when i reopen it next time and show #value.
The ouput cell C is having a interpolate function (a macro, attached below)
to interpolate from a range of value given separately for the value of
corresponding B
cell which is indirectly having a circular reference with Col A.

To make it clear lets see the File:

The three data range

A1 B1 C1
A2 B2 C2
A3 B3 C3

Now the three cols are linked by following relation

A = 4 + C
B = constvalue x A, Here B1 = 1.0 * A1, B2 = 0.9 * A2, B3 = 0.98 * A3
C = Function of (B)

C value is retrived by interpolation between a range of B & C, Given
separately, For that a macro has been writeen.

The data range from which C will interpolate the output value for
corresponding B value are as follows:
B C
0.00 0.00
2.00 1.00
4.00 2.00
6.00 3.00
8.00 4.00
10.00 5.00
The solution is C1: C2:C3 = 4.00:3.27:3.84

The macro for interpolation function is as below
---------------------------------------------------
Option Explicit

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

' Interpolation Function

Dim i As Integer
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim numRows As Integer


numRows = c1.Rows.Count

For i = 1 To numRows
If c1.Cells(i, 1).Value Target Then
Exit For
End If
Next i

x1 = c1.Cells(i - 1, 1).Value
x2 = c1.Cells(i, 1).Value
y1 = c2.Cells(i - 1, 1).Value
y2 = c2.Cells(i, 1).Value

Interpolate = (y2 - y1) * (Target - x1) / (x2 - x1) + y1

End Function
---------------------------------------------
Could this problem be solved so that iteraion automatically starts without
any activation?? Kindly help.

Regards

Raj


raj74

Excel Iteration Problem/not capable??????????
 
Kindly Ignore the previous post,
The corrected post is here under (some col name was misplaced in the previous)


__________________________________________________ _______________________________
Actually what I am looking for why excel doesn't recalculate a iteration
when specfic UDF (User defined Function) is used. I have given a small
example to my actual problem. In actual problem my A col data is in circular
ref with D col data, again B col is linked with A Col & C col inked with B
col by respective formula. The output will be in D col based on the C col
value. Interpolation fn (UDF) is used to get the value of output D for
corresponding value of C from a given (C,D) data range.
Each time I have to activae the output cell py presing [F2] and [Enter] to
get the correct results like similar situation I had posted previously. why
the output value not shown up automatically. Still I couldn't found out why,
Is their any code to activate all the UDF or recalculate all the formula in a
particular worksheet.
I am using Excel 2000. If I could send you the softcopy...
Any way thanks for your reply.

Sincerely
Raj
New Delhi


"Dana DeLouis" wrote:

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant
The solution is C1:C3 = 4.00, 3.27, 3.84


Hi. I believe this function in C1:C3 can be eliminated.
In C1, just put the equation =B1/2 and copy down to C3.

As a side note, I believe you can recursively solve your equation when taking the limit at infinity.
I've written it here as a vba function to make it easy to show.
Here, k is your "+4" value, and f is your factor (1, .9, or .98)

Function Fx(k, f)
Fx = (f * k) / (2 - f)
End Function

Sub TestIt()
Debug.Print Fx(4, 1)
Debug.Print Fx(4, 0.9)
Debug.Print Fx(4, 0.98)
End Sub


This returns the 3 solutions given in your example (and at a higher precision I might add)
4
3.27272727272727
3.84313725490196

--
HTH :)
Dana DeLouis


"raj74" wrote in message ...
why no expert is replying to my problem, is this a excel bug that it does not
do the iteration properly and need activation?????????????

regards

"raj74" wrote:

I have an annoying situation when I each time open the Ms excel file I
have to activate(pressing F2 and entering) the output cell (Col C) which
is having a circular reference with Col A to get the desired value but it is
lost when i reopen it next time and show #value.
The ouput cell C is having a interpolate function (a macro, attached below)
to interpolate from a range of value given separately for the value of
corresponding B
cell which is indirectly having a circular reference with Col A.

To make it clear lets see the File:

The three data range

A1 B1 C1
A2 B2 C2
A3 B3 C3

Now the three cols are linked by following relation

A = 4 + C
B = constvalue x A, Here B1 = 1.0 * A1, B2 = 0.9 * A2, B3 = 0.98 * A3
C = Function of (B)

C value is retrived by interpolation between a range of B & C, Given
separately, For that a macro has been writeen.

The data range from which C will interpolate the output value for
corresponding B value are as follows:
B C
0.00 0.00
2.00 1.00
4.00 2.00
6.00 3.00
8.00 4.00
10.00 5.00
The solution is C1: C2:C3 = 4.00:3.27:3.84

The macro for interpolation function is as below
---------------------------------------------------
Option Explicit

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

' Interpolation Function

Dim i As Integer
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim numRows As Integer


numRows = c1.Rows.Count

For i = 1 To numRows
If c1.Cells(i, 1).Value Target Then
Exit For
End If
Next i

x1 = c1.Cells(i - 1, 1).Value
x2 = c1.Cells(i, 1).Value
y1 = c2.Cells(i - 1, 1).Value
y2 = c2.Cells(i, 1).Value

Interpolate = (y2 - y1) * (Target - x1) / (x2 - x1) + y1

End Function
---------------------------------------------
Could this problem be solved so that iteraion automatically starts without
any activation?? Kindly help.

Regards

Raj


Dana DeLouis

Excel Iteration Problem/not capable??????????
 
I'm not sure, but under Tools | Options, do you have "enable iterative calculation" turned on?
I'm using Excel 2007, so I'm trying to remember the wording. It should be similar.

I thought for sure you would like the formula instead of looping?
= (0.9*4) / (2 - 0.9)
--
Dana DeLouis


"raj74" wrote in message ...

Kindly Ignore the previous post,
The corrected post is here under (some col name was misplaced in the previous)


__________________________________________________ _______________________________
Actually what I am looking for why excel doesn't recalculate a iteration
when specfic UDF (User defined Function) is used. I have given a small
example to my actual problem. In actual problem my A col data is in circular
ref with D col data, again B col is linked with A Col & C col inked with B
col by respective formula. The output will be in D col based on the C col
value. Interpolation fn (UDF) is used to get the value of output D for
corresponding value of C from a given (C,D) data range.
Each time I have to activae the output cell py presing [F2] and [Enter] to
get the correct results like similar situation I had posted previously. why
the output value not shown up automatically. Still I couldn't found out why,
Is their any code to activate all the UDF or recalculate all the formula in a
particular worksheet.
I am using Excel 2000. If I could send you the softcopy...
Any way thanks for your reply.

Sincerely
Raj
New Delhi



"Dana DeLouis" wrote:


Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant
The solution is C1:C3 = 4.00, 3.27, 3.84

Hi. I believe this function in C1:C3 can be eliminated.
In C1, just put the equation =B1/2 and copy down to C3.

As a side note, I believe you can recursively solve your equation when taking the limit at infinity.
I've written it here as a vba function to make it easy to show.
Here, k is your "+4" value, and f is your factor (1, .9, or .98)

Function Fx(k, f)
Fx = (f * k) / (2 - f)
End Function

Sub TestIt()
Debug.Print Fx(4, 1)
Debug.Print Fx(4, 0.9)
Debug.Print Fx(4, 0.98)
End Sub


This returns the 3 solutions given in your example (and at a higher precision I might add)
4
3.27272727272727
3.84313725490196

--
HTH :)
Dana DeLouis


"raj74" wrote in message ...
why no expert is replying to my problem, is this a excel bug that it does not
do the iteration properly and need activation?????????????

regards

"raj74" wrote:

I have an annoying situation when I each time open the Ms excel file I
have to activate(pressing F2 and entering) the output cell (Col C) which
is having a circular reference with Col A to get the desired value but it is
lost when i reopen it next time and show #value.
The ouput cell C is having a interpolate function (a macro, attached below)
to interpolate from a range of value given separately for the value of
corresponding B
cell which is indirectly having a circular reference with Col A.

To make it clear lets see the File:

The three data range

A1 B1 C1
A2 B2 C2
A3 B3 C3

Now the three cols are linked by following relation

A = 4 + C
B = constvalue x A, Here B1 = 1.0 * A1, B2 = 0.9 * A2, B3 = 0.98 * A3
C = Function of (B)

C value is retrived by interpolation between a range of B & C, Given
separately, For that a macro has been writeen.

The data range from which C will interpolate the output value for
corresponding B value are as follows:
B C
0.00 0.00
2.00 1.00
4.00 2.00
6.00 3.00
8.00 4.00
10.00 5.00
The solution is C1: C2:C3 = 4.00:3.27:3.84

The macro for interpolation function is as below
---------------------------------------------------
Option Explicit

Function Interpolate(c1 As Range, c2 As Range, Target As Double) As Variant

' Interpolation Function

Dim i As Integer
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim numRows As Integer


numRows = c1.Rows.Count

For i = 1 To numRows
If c1.Cells(i, 1).Value Target Then
Exit For
End If
Next i

x1 = c1.Cells(i - 1, 1).Value
x2 = c1.Cells(i, 1).Value
y1 = c2.Cells(i - 1, 1).Value
y2 = c2.Cells(i, 1).Value

Interpolate = (y2 - y1) * (Target - x1) / (x2 - x1) + y1

End Function
---------------------------------------------
Could this problem be solved so that iteraion automatically starts without
any activation?? Kindly help.

Regards

Raj

raj74

Excel Iteration Problem/not capable??????????
 
Everything I have checked in for iteration process like you mentioned in tool
option calculation. I have interested not the result of the file I have

posted (in my first post) but the activation it requires (output cell having
an UDF) to get the correct result.
I was reading something called application.volatile in excel to force to
start the calculation of UDF (user define function) to recalculate a
particular sheet. But i don't know how to write the code or whether it is
useful for my case.
As an alternative soln, if any code can be written so that after running it,
it will activate a formula (my interpolate UDf function) of a particular col
(say, D1:D40)l and enter it to get all the output result what I am doing
mannually.

Thanks anyway for giving your time.

sincerely

Raj

"Dana DeLouis" wrote:

I'm not sure, but under Tools | Options, do you have "enable iterative calculation" turned on?



raj74

Excel Iteration Problem/not capable??????????
 
Hellio!!!!!!!!!!

Thanks anyway, but I have dealing with 15 worksheet in my real problem and
each time re enter all values is not possible. but I have got the answer from
a friend of mine. Paste the below module and run the macro, which will give
give you the result.


Sub WorkaroundToForceUDFCalculation()
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Worksheets
With sht
.Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart,
SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False,
ReplaceFormat:=False
End With
Next sht
End Sub

Sincerely

Raj
New Delhi


"Dana DeLouis" wrote:

Hi. What I believe is happening is the following.
Both A1, & B1 are not numbers, but are the results of a Custom Function in
C1.

When the Workbook is open, A1 & B1 do not have any information. This lack
of Information is passed to your vba Function, and this returns a #Value
error.
This value error is passed back to A1 & B1, and the error goes back into
C1. Hence you are stuck, and can't get out of this error loop.
I don't believe Excel has any logic to get itself out of these types of
loops when opened.
You will have to re-enter the data in order for Excel to pick up the
calculation again.

The workaround for your situation might be the following.
In the vba editor (Alt+F11) enter the following code on the "ThisWorkbook"
module.
When this particular workbook is opened, we make sure Iteration is turned
on, and we re-enter your Formulas.
This worked well for me using Excel 2007.

Private Sub Workbook_Open()
With Application
'// Make Sure Iteration is turned on
.Iteration = True
.MaxIterations = 1000
.MaxChange = 0.0000001

'Re-Enter Formulas
[C1:C3].Formula = [C1:C3].Formula
End With
End Sub

--
"To understand recursion, one must first understand recursion."
Dana DeLouis




"raj74" wrote in message
...
Everything I have checked in for iteration process like you mentioned in

tool
option calculation. I have interested not the result of the file I

have
posted (in my first post) but the activation it requires (output cell

having
an UDF) to get the correct result.
I was reading something called application.volatile in excel to force to
start the calculation of UDF (user define function) to recalculate a
particular sheet. But i don't know how to write the code or whether it

is
useful for my case.
As an alternative soln, if any code can be written so that after running

it,
it will activate a formula (my interpolate UDf function) of a particular

col
(say, D1:D40)l and enter it to get all the output result what I am doing
mannually.

Thanks anyway for giving your time.

sincerely

Raj

"Dana DeLouis" wrote:

I'm not sure, but under Tools | Options, do you have "enable iterative

calculation" turned on?




All times are GMT +1. The time now is 02:50 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com