Apply any formula n times without using VBA?
up vote
5
down vote
favorite
I have the following cells:
A1:
justsometext
B1:
3
C1:
=DOSOMETHING(A1)
I want to apply the formula in C1
n times (n being 3, the value in B1
), so in this case it would mean:
C1:
=DOSOMETHING(DOSOMETHING(DOSOMETHING(A1)))
Is there any possibility to do this without a macro, maybe by using array formulas?
UPDATE:
The number of repetitions will not always be 3, but will change over time and/or differ from line to line.
Here is a simple example of what it should look like:
Please note that the solution should work for any formula, and not just for appending a constant string like in the example.
microsoft-excel worksheet-function
New contributor
add a comment |
up vote
5
down vote
favorite
I have the following cells:
A1:
justsometext
B1:
3
C1:
=DOSOMETHING(A1)
I want to apply the formula in C1
n times (n being 3, the value in B1
), so in this case it would mean:
C1:
=DOSOMETHING(DOSOMETHING(DOSOMETHING(A1)))
Is there any possibility to do this without a macro, maybe by using array formulas?
UPDATE:
The number of repetitions will not always be 3, but will change over time and/or differ from line to line.
Here is a simple example of what it should look like:
Please note that the solution should work for any formula, and not just for appending a constant string like in the example.
microsoft-excel worksheet-function
New contributor
Do you have a specific formula in mind you're trying to run multiple times? This sounds a lot like a potential XY Problem. Can you briefly describe what you're trying to accomplish/*why* to run the formula three times? In a way, what you used as an example (=value&"_checked"
) would have a different way than if you wanted to run anIndex/Match
three times or so...
– BruceWayne
2 hours ago
add a comment |
up vote
5
down vote
favorite
up vote
5
down vote
favorite
I have the following cells:
A1:
justsometext
B1:
3
C1:
=DOSOMETHING(A1)
I want to apply the formula in C1
n times (n being 3, the value in B1
), so in this case it would mean:
C1:
=DOSOMETHING(DOSOMETHING(DOSOMETHING(A1)))
Is there any possibility to do this without a macro, maybe by using array formulas?
UPDATE:
The number of repetitions will not always be 3, but will change over time and/or differ from line to line.
Here is a simple example of what it should look like:
Please note that the solution should work for any formula, and not just for appending a constant string like in the example.
microsoft-excel worksheet-function
New contributor
I have the following cells:
A1:
justsometext
B1:
3
C1:
=DOSOMETHING(A1)
I want to apply the formula in C1
n times (n being 3, the value in B1
), so in this case it would mean:
C1:
=DOSOMETHING(DOSOMETHING(DOSOMETHING(A1)))
Is there any possibility to do this without a macro, maybe by using array formulas?
UPDATE:
The number of repetitions will not always be 3, but will change over time and/or differ from line to line.
Here is a simple example of what it should look like:
Please note that the solution should work for any formula, and not just for appending a constant string like in the example.
microsoft-excel worksheet-function
microsoft-excel worksheet-function
New contributor
New contributor
edited 6 hours ago
robinCTS
3,92441527
3,92441527
New contributor
asked 7 hours ago
Scripter22
262
262
New contributor
New contributor
Do you have a specific formula in mind you're trying to run multiple times? This sounds a lot like a potential XY Problem. Can you briefly describe what you're trying to accomplish/*why* to run the formula three times? In a way, what you used as an example (=value&"_checked"
) would have a different way than if you wanted to run anIndex/Match
three times or so...
– BruceWayne
2 hours ago
add a comment |
Do you have a specific formula in mind you're trying to run multiple times? This sounds a lot like a potential XY Problem. Can you briefly describe what you're trying to accomplish/*why* to run the formula three times? In a way, what you used as an example (=value&"_checked"
) would have a different way than if you wanted to run anIndex/Match
three times or so...
– BruceWayne
2 hours ago
Do you have a specific formula in mind you're trying to run multiple times? This sounds a lot like a potential XY Problem. Can you briefly describe what you're trying to accomplish/*why* to run the formula three times? In a way, what you used as an example (
=value&"_checked"
) would have a different way than if you wanted to run an Index/Match
three times or so...– BruceWayne
2 hours ago
Do you have a specific formula in mind you're trying to run multiple times? This sounds a lot like a potential XY Problem. Can you briefly describe what you're trying to accomplish/*why* to run the formula three times? In a way, what you used as an example (
=value&"_checked"
) would have a different way than if you wanted to run an Index/Match
three times or so...– BruceWayne
2 hours ago
add a comment |
4 Answers
4
active
oldest
votes
up vote
4
down vote
Then I would use = Value & REPT("_checked", NoOfExecutions)
.
If you always need to do stuff like the one on the example (concatenating strings), it works pretty well.
If you need to use other formulas, this is what I can think of:
we separate the function you will need to use: beginning (everything that should go before the main argument) and end (anything that follows the argument, including additional arguments). For example if we use the function
LEFT(value, 2)
,LEFT(
will go in the Beginning,, 2)
in the End.we build the formula as text with concatenation and
REPT
. Referring to the example in the picture, formula in cell C6 will be:
= "=" &REPT($B$2,B6) & $A6 & REPT($B$3,$B6)
Then you need to copy the cell and paste it as values in cell D6; then click on the formula in the formula bar and press Enter on your keyboard.
It's a few steps but it avoids VBA.
New contributor
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.
– robinCTS
5 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula=LEFT(A1,LEN(A1)-1)
can't be expanded at all by usingREPT()
.)
– robinCTS
4 hours ago
add a comment |
up vote
1
down vote
No, sorry, this is not possible in the general case for any formula plus
having it update automatically. Without using VBA, that is.
However,it can be done for a very small number of specific formula (like concatenating a constant string). It can also be done, but with manual updating, for a certain set of formulas as cleverly shown in VFor's answer.
The closest you can get to a general solution is to rearrange the cells, embed the DOSOMETHING
formula in a special wrapper formula, and use helper columns.
For your supplied example worksheet:
Rearrange it like this:
Enter the following formula in D2
and ctrl-enter/copy-paste/fill-down&right/auto-fill into the rest of the table's columns:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Enter the following formula in B2
and ctrl-enter/copy-paste/fill-down/auto-fill into the rest of the table's column:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Note that the number of helper columns required is the maximum allowable value of n plus one. If there aren't enough of them for an entered value, an error ensues:
Explanation:
The generalised wrapper formula for the helper columns is:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
where DOSOMETHING(C2)
is any formula based on C2
only (for example, LEFT(C2,LEN(C2)-1)
which progressively removes the last character).
The wrapper formula works by operating on the cell to the left, thus effectively "nesting" the formulas the further to the right in the row it goes.
The IF(COLUMN()-COLUMN($C2)>$A2,"§",
part uses the column indexes to count down the number of times the DOSOMETHING
formula is nested, and once the number of times specified in column A
has been achieved it outputs terminator strings. These strings do not necessarily need to be §
. They just need to be something that will never be the result of the evaluation of any number of nested formulas for any allowable Value
.
The Result
formula looks trickier. However, the C2:INDEX(2:2, 1, COLUMNS(2:2))
parts are simply the sub-range of row 2
to the right of the Result
column.
The formula is thus essentially the same as:
=INDEX(2:2,MATCH("§",2:2,0)-1)
which makes it easier to understand.
(Note that this formula actually works if iterative calculations are enabled.)
Looking at this simpler formula, it is clear that the formula returns the n-level nested DOSOMETHING
function result.
add a comment |
up vote
0
down vote
To apply Formula in Cell `C1' n Numbers of times you need to apply Iteration.
How it works:
- Click File, Option then Formula.
- Find Enable Iterative Calculation Check box & just Check it.
- For Maximum Iterations write the value, for example 5.
- Write this formula in Cell
C1
=B1+C1
You find Excel calculates the Formula in C1
five times.
You can set New Value as many times you need, by following the Steps from 1 to 3.
1
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
add a comment |
up vote
0
down vote
It can be done via the Evaluate and Rept functions.
The Evaluate can only be called via name manager, see
evaluate function. Evalute evaluates a string as a formula, so anything that can be built as a string can be used as a formula.
Press Ctrl+F3, press New...
In the Name field, name your function (e.g. Repeater)
In the Reference field write your formula, using Rept:
=Evaluate(rept("sin(",b2) & a2 & rept(")",b2))and in your cell, you use =Repeater and specify number of repeats in B2 and the parameter in A2
Its a bit tricky, so a user defined formula in VBA might be easier
add a comment |
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
Then I would use = Value & REPT("_checked", NoOfExecutions)
.
If you always need to do stuff like the one on the example (concatenating strings), it works pretty well.
If you need to use other formulas, this is what I can think of:
we separate the function you will need to use: beginning (everything that should go before the main argument) and end (anything that follows the argument, including additional arguments). For example if we use the function
LEFT(value, 2)
,LEFT(
will go in the Beginning,, 2)
in the End.we build the formula as text with concatenation and
REPT
. Referring to the example in the picture, formula in cell C6 will be:
= "=" &REPT($B$2,B6) & $A6 & REPT($B$3,$B6)
Then you need to copy the cell and paste it as values in cell D6; then click on the formula in the formula bar and press Enter on your keyboard.
It's a few steps but it avoids VBA.
New contributor
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.
– robinCTS
5 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula=LEFT(A1,LEN(A1)-1)
can't be expanded at all by usingREPT()
.)
– robinCTS
4 hours ago
add a comment |
up vote
4
down vote
Then I would use = Value & REPT("_checked", NoOfExecutions)
.
If you always need to do stuff like the one on the example (concatenating strings), it works pretty well.
If you need to use other formulas, this is what I can think of:
we separate the function you will need to use: beginning (everything that should go before the main argument) and end (anything that follows the argument, including additional arguments). For example if we use the function
LEFT(value, 2)
,LEFT(
will go in the Beginning,, 2)
in the End.we build the formula as text with concatenation and
REPT
. Referring to the example in the picture, formula in cell C6 will be:
= "=" &REPT($B$2,B6) & $A6 & REPT($B$3,$B6)
Then you need to copy the cell and paste it as values in cell D6; then click on the formula in the formula bar and press Enter on your keyboard.
It's a few steps but it avoids VBA.
New contributor
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.
– robinCTS
5 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula=LEFT(A1,LEN(A1)-1)
can't be expanded at all by usingREPT()
.)
– robinCTS
4 hours ago
add a comment |
up vote
4
down vote
up vote
4
down vote
Then I would use = Value & REPT("_checked", NoOfExecutions)
.
If you always need to do stuff like the one on the example (concatenating strings), it works pretty well.
If you need to use other formulas, this is what I can think of:
we separate the function you will need to use: beginning (everything that should go before the main argument) and end (anything that follows the argument, including additional arguments). For example if we use the function
LEFT(value, 2)
,LEFT(
will go in the Beginning,, 2)
in the End.we build the formula as text with concatenation and
REPT
. Referring to the example in the picture, formula in cell C6 will be:
= "=" &REPT($B$2,B6) & $A6 & REPT($B$3,$B6)
Then you need to copy the cell and paste it as values in cell D6; then click on the formula in the formula bar and press Enter on your keyboard.
It's a few steps but it avoids VBA.
New contributor
Then I would use = Value & REPT("_checked", NoOfExecutions)
.
If you always need to do stuff like the one on the example (concatenating strings), it works pretty well.
If you need to use other formulas, this is what I can think of:
we separate the function you will need to use: beginning (everything that should go before the main argument) and end (anything that follows the argument, including additional arguments). For example if we use the function
LEFT(value, 2)
,LEFT(
will go in the Beginning,, 2)
in the End.we build the formula as text with concatenation and
REPT
. Referring to the example in the picture, formula in cell C6 will be:
= "=" &REPT($B$2,B6) & $A6 & REPT($B$3,$B6)
Then you need to copy the cell and paste it as values in cell D6; then click on the formula in the formula bar and press Enter on your keyboard.
It's a few steps but it avoids VBA.
New contributor
edited 5 hours ago
robinCTS
3,92441527
3,92441527
New contributor
answered 6 hours ago
VFor
415
415
New contributor
New contributor
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.
– robinCTS
5 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula=LEFT(A1,LEN(A1)-1)
can't be expanded at all by usingREPT()
.)
– robinCTS
4 hours ago
add a comment |
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.
– robinCTS
5 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula=LEFT(A1,LEN(A1)-1)
can't be expanded at all by usingREPT()
.)
– robinCTS
4 hours ago
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Pleas read the clarification I added to the end of the question. A general solution is required.
– robinCTS
6 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
Thanks for your help, robinCTS; I was just about to write something similar. What I am looking for is a general solution. But nice to have this very easy solution for string concatenation. Thanks, VFor.
– Scripter22
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an
@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.– robinCTS
5 hours ago
@Scripter22 You're welcome. FYI, you need to prepend an
@
to a username in order for them to get pinged if they aren't the poster of the question/answer you are commenting on. See How do comment @replies work? for the full details.– robinCTS
5 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula
=LEFT(A1,LEN(A1)-1)
can't be expanded at all by using REPT()
.)– robinCTS
4 hours ago
Nice try for a general solution! It doesn't quite work as the OP intends, though. The idea is to allow n to be changed and have the result automatically update. However, the main problem is that this only works for a limited number of formulas where "Value" only occurs once. (For example, the simple formula
=LEFT(A1,LEN(A1)-1)
can't be expanded at all by using REPT()
.)– robinCTS
4 hours ago
add a comment |
up vote
1
down vote
No, sorry, this is not possible in the general case for any formula plus
having it update automatically. Without using VBA, that is.
However,it can be done for a very small number of specific formula (like concatenating a constant string). It can also be done, but with manual updating, for a certain set of formulas as cleverly shown in VFor's answer.
The closest you can get to a general solution is to rearrange the cells, embed the DOSOMETHING
formula in a special wrapper formula, and use helper columns.
For your supplied example worksheet:
Rearrange it like this:
Enter the following formula in D2
and ctrl-enter/copy-paste/fill-down&right/auto-fill into the rest of the table's columns:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Enter the following formula in B2
and ctrl-enter/copy-paste/fill-down/auto-fill into the rest of the table's column:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Note that the number of helper columns required is the maximum allowable value of n plus one. If there aren't enough of them for an entered value, an error ensues:
Explanation:
The generalised wrapper formula for the helper columns is:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
where DOSOMETHING(C2)
is any formula based on C2
only (for example, LEFT(C2,LEN(C2)-1)
which progressively removes the last character).
The wrapper formula works by operating on the cell to the left, thus effectively "nesting" the formulas the further to the right in the row it goes.
The IF(COLUMN()-COLUMN($C2)>$A2,"§",
part uses the column indexes to count down the number of times the DOSOMETHING
formula is nested, and once the number of times specified in column A
has been achieved it outputs terminator strings. These strings do not necessarily need to be §
. They just need to be something that will never be the result of the evaluation of any number of nested formulas for any allowable Value
.
The Result
formula looks trickier. However, the C2:INDEX(2:2, 1, COLUMNS(2:2))
parts are simply the sub-range of row 2
to the right of the Result
column.
The formula is thus essentially the same as:
=INDEX(2:2,MATCH("§",2:2,0)-1)
which makes it easier to understand.
(Note that this formula actually works if iterative calculations are enabled.)
Looking at this simpler formula, it is clear that the formula returns the n-level nested DOSOMETHING
function result.
add a comment |
up vote
1
down vote
No, sorry, this is not possible in the general case for any formula plus
having it update automatically. Without using VBA, that is.
However,it can be done for a very small number of specific formula (like concatenating a constant string). It can also be done, but with manual updating, for a certain set of formulas as cleverly shown in VFor's answer.
The closest you can get to a general solution is to rearrange the cells, embed the DOSOMETHING
formula in a special wrapper formula, and use helper columns.
For your supplied example worksheet:
Rearrange it like this:
Enter the following formula in D2
and ctrl-enter/copy-paste/fill-down&right/auto-fill into the rest of the table's columns:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Enter the following formula in B2
and ctrl-enter/copy-paste/fill-down/auto-fill into the rest of the table's column:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Note that the number of helper columns required is the maximum allowable value of n plus one. If there aren't enough of them for an entered value, an error ensues:
Explanation:
The generalised wrapper formula for the helper columns is:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
where DOSOMETHING(C2)
is any formula based on C2
only (for example, LEFT(C2,LEN(C2)-1)
which progressively removes the last character).
The wrapper formula works by operating on the cell to the left, thus effectively "nesting" the formulas the further to the right in the row it goes.
The IF(COLUMN()-COLUMN($C2)>$A2,"§",
part uses the column indexes to count down the number of times the DOSOMETHING
formula is nested, and once the number of times specified in column A
has been achieved it outputs terminator strings. These strings do not necessarily need to be §
. They just need to be something that will never be the result of the evaluation of any number of nested formulas for any allowable Value
.
The Result
formula looks trickier. However, the C2:INDEX(2:2, 1, COLUMNS(2:2))
parts are simply the sub-range of row 2
to the right of the Result
column.
The formula is thus essentially the same as:
=INDEX(2:2,MATCH("§",2:2,0)-1)
which makes it easier to understand.
(Note that this formula actually works if iterative calculations are enabled.)
Looking at this simpler formula, it is clear that the formula returns the n-level nested DOSOMETHING
function result.
add a comment |
up vote
1
down vote
up vote
1
down vote
No, sorry, this is not possible in the general case for any formula plus
having it update automatically. Without using VBA, that is.
However,it can be done for a very small number of specific formula (like concatenating a constant string). It can also be done, but with manual updating, for a certain set of formulas as cleverly shown in VFor's answer.
The closest you can get to a general solution is to rearrange the cells, embed the DOSOMETHING
formula in a special wrapper formula, and use helper columns.
For your supplied example worksheet:
Rearrange it like this:
Enter the following formula in D2
and ctrl-enter/copy-paste/fill-down&right/auto-fill into the rest of the table's columns:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Enter the following formula in B2
and ctrl-enter/copy-paste/fill-down/auto-fill into the rest of the table's column:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Note that the number of helper columns required is the maximum allowable value of n plus one. If there aren't enough of them for an entered value, an error ensues:
Explanation:
The generalised wrapper formula for the helper columns is:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
where DOSOMETHING(C2)
is any formula based on C2
only (for example, LEFT(C2,LEN(C2)-1)
which progressively removes the last character).
The wrapper formula works by operating on the cell to the left, thus effectively "nesting" the formulas the further to the right in the row it goes.
The IF(COLUMN()-COLUMN($C2)>$A2,"§",
part uses the column indexes to count down the number of times the DOSOMETHING
formula is nested, and once the number of times specified in column A
has been achieved it outputs terminator strings. These strings do not necessarily need to be §
. They just need to be something that will never be the result of the evaluation of any number of nested formulas for any allowable Value
.
The Result
formula looks trickier. However, the C2:INDEX(2:2, 1, COLUMNS(2:2))
parts are simply the sub-range of row 2
to the right of the Result
column.
The formula is thus essentially the same as:
=INDEX(2:2,MATCH("§",2:2,0)-1)
which makes it easier to understand.
(Note that this formula actually works if iterative calculations are enabled.)
Looking at this simpler formula, it is clear that the formula returns the n-level nested DOSOMETHING
function result.
No, sorry, this is not possible in the general case for any formula plus
having it update automatically. Without using VBA, that is.
However,it can be done for a very small number of specific formula (like concatenating a constant string). It can also be done, but with manual updating, for a certain set of formulas as cleverly shown in VFor's answer.
The closest you can get to a general solution is to rearrange the cells, embed the DOSOMETHING
formula in a special wrapper formula, and use helper columns.
For your supplied example worksheet:
Rearrange it like this:
Enter the following formula in D2
and ctrl-enter/copy-paste/fill-down&right/auto-fill into the rest of the table's columns:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Enter the following formula in B2
and ctrl-enter/copy-paste/fill-down/auto-fill into the rest of the table's column:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Note that the number of helper columns required is the maximum allowable value of n plus one. If there aren't enough of them for an entered value, an error ensues:
Explanation:
The generalised wrapper formula for the helper columns is:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
where DOSOMETHING(C2)
is any formula based on C2
only (for example, LEFT(C2,LEN(C2)-1)
which progressively removes the last character).
The wrapper formula works by operating on the cell to the left, thus effectively "nesting" the formulas the further to the right in the row it goes.
The IF(COLUMN()-COLUMN($C2)>$A2,"§",
part uses the column indexes to count down the number of times the DOSOMETHING
formula is nested, and once the number of times specified in column A
has been achieved it outputs terminator strings. These strings do not necessarily need to be §
. They just need to be something that will never be the result of the evaluation of any number of nested formulas for any allowable Value
.
The Result
formula looks trickier. However, the C2:INDEX(2:2, 1, COLUMNS(2:2))
parts are simply the sub-range of row 2
to the right of the Result
column.
The formula is thus essentially the same as:
=INDEX(2:2,MATCH("§",2:2,0)-1)
which makes it easier to understand.
(Note that this formula actually works if iterative calculations are enabled.)
Looking at this simpler formula, it is clear that the formula returns the n-level nested DOSOMETHING
function result.
edited 1 hour ago
answered 5 hours ago
robinCTS
3,92441527
3,92441527
add a comment |
add a comment |
up vote
0
down vote
To apply Formula in Cell `C1' n Numbers of times you need to apply Iteration.
How it works:
- Click File, Option then Formula.
- Find Enable Iterative Calculation Check box & just Check it.
- For Maximum Iterations write the value, for example 5.
- Write this formula in Cell
C1
=B1+C1
You find Excel calculates the Formula in C1
five times.
You can set New Value as many times you need, by following the Steps from 1 to 3.
1
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
add a comment |
up vote
0
down vote
To apply Formula in Cell `C1' n Numbers of times you need to apply Iteration.
How it works:
- Click File, Option then Formula.
- Find Enable Iterative Calculation Check box & just Check it.
- For Maximum Iterations write the value, for example 5.
- Write this formula in Cell
C1
=B1+C1
You find Excel calculates the Formula in C1
five times.
You can set New Value as many times you need, by following the Steps from 1 to 3.
1
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
add a comment |
up vote
0
down vote
up vote
0
down vote
To apply Formula in Cell `C1' n Numbers of times you need to apply Iteration.
How it works:
- Click File, Option then Formula.
- Find Enable Iterative Calculation Check box & just Check it.
- For Maximum Iterations write the value, for example 5.
- Write this formula in Cell
C1
=B1+C1
You find Excel calculates the Formula in C1
five times.
You can set New Value as many times you need, by following the Steps from 1 to 3.
To apply Formula in Cell `C1' n Numbers of times you need to apply Iteration.
How it works:
- Click File, Option then Formula.
- Find Enable Iterative Calculation Check box & just Check it.
- For Maximum Iterations write the value, for example 5.
- Write this formula in Cell
C1
=B1+C1
You find Excel calculates the Formula in C1
five times.
You can set New Value as many times you need, by following the Steps from 1 to 3.
edited 7 hours ago
answered 7 hours ago
Rajesh S
3,5481522
3,5481522
1
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
add a comment |
1
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
1
1
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
That's not exactly what I'm looking for. I updated the question for clarification.
– Scripter22
6 hours ago
add a comment |
up vote
0
down vote
It can be done via the Evaluate and Rept functions.
The Evaluate can only be called via name manager, see
evaluate function. Evalute evaluates a string as a formula, so anything that can be built as a string can be used as a formula.
Press Ctrl+F3, press New...
In the Name field, name your function (e.g. Repeater)
In the Reference field write your formula, using Rept:
=Evaluate(rept("sin(",b2) & a2 & rept(")",b2))and in your cell, you use =Repeater and specify number of repeats in B2 and the parameter in A2
Its a bit tricky, so a user defined formula in VBA might be easier
add a comment |
up vote
0
down vote
It can be done via the Evaluate and Rept functions.
The Evaluate can only be called via name manager, see
evaluate function. Evalute evaluates a string as a formula, so anything that can be built as a string can be used as a formula.
Press Ctrl+F3, press New...
In the Name field, name your function (e.g. Repeater)
In the Reference field write your formula, using Rept:
=Evaluate(rept("sin(",b2) & a2 & rept(")",b2))and in your cell, you use =Repeater and specify number of repeats in B2 and the parameter in A2
Its a bit tricky, so a user defined formula in VBA might be easier
add a comment |
up vote
0
down vote
up vote
0
down vote
It can be done via the Evaluate and Rept functions.
The Evaluate can only be called via name manager, see
evaluate function. Evalute evaluates a string as a formula, so anything that can be built as a string can be used as a formula.
Press Ctrl+F3, press New...
In the Name field, name your function (e.g. Repeater)
In the Reference field write your formula, using Rept:
=Evaluate(rept("sin(",b2) & a2 & rept(")",b2))and in your cell, you use =Repeater and specify number of repeats in B2 and the parameter in A2
Its a bit tricky, so a user defined formula in VBA might be easier
It can be done via the Evaluate and Rept functions.
The Evaluate can only be called via name manager, see
evaluate function. Evalute evaluates a string as a formula, so anything that can be built as a string can be used as a formula.
Press Ctrl+F3, press New...
In the Name field, name your function (e.g. Repeater)
In the Reference field write your formula, using Rept:
=Evaluate(rept("sin(",b2) & a2 & rept(")",b2))and in your cell, you use =Repeater and specify number of repeats in B2 and the parameter in A2
Its a bit tricky, so a user defined formula in VBA might be easier
answered 40 mins ago
Stefan
1011
1011
add a comment |
add a comment |
Scripter22 is a new contributor. Be nice, and check out our Code of Conduct.
Scripter22 is a new contributor. Be nice, and check out our Code of Conduct.
Scripter22 is a new contributor. Be nice, and check out our Code of Conduct.
Scripter22 is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1382937%2fapply-any-formula-n-times-without-using-vba%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Do you have a specific formula in mind you're trying to run multiple times? This sounds a lot like a potential XY Problem. Can you briefly describe what you're trying to accomplish/*why* to run the formula three times? In a way, what you used as an example (
=value&"_checked"
) would have a different way than if you wanted to run anIndex/Match
three times or so...– BruceWayne
2 hours ago