My objective is to do a sum of previous values based on ranges.
I have an index of 0 to 25. I have a base rate at index 0 to be 0.142857.
The final result is a percentage. I have 3 formula's I know...
Base Rate * 0.1 is the increment if the result is <30%
Base Rate * 0.02 is the increment if the result is <32%
If the result is above 32%, do nothing else, show it as a hard cap of 32%
So for example:
So the problem is that I hardcoded column C with the increment per index. I need this to be smart enough to know, hey if this would go above 30% then use the next formula and if it would go above 32% then cap it. Any ideas on how I could do this in Excel or Google Sheets without using scripts or VBA?
paste in B3 and drag down:
=IF(IF(B2< 30%, B2+($B$2*0.1)) < 30%, B2+($B$2*0.1),
IF(IF(B2< 32%, B2+($B$2*0.02))< 32%, B2+($B$2*0.02),
IF(IF(B2>=32%, B2+($B$2*0.02))>=32%, 32%)))
cell C2 could be: =ARRAYFORMULA({TEXT(B2:B27, "00.00%")})
=IF(B2< 30%, B2+($B$2*0.1),
IF(B2< 32%, B2+($B$2*0.02),
IF(B2>=32%, 32%)))
or combo:
=IF(B2< 30%, B2+($B$2*0.1),
IF(IF(B2< 32%, B2+($B$2*0.02))< 32%, B2+($B$2*0.02),
IF(IF(B2>=32%, B2+($B$2*0.02))>=32%, 32%)))
Related
enter image description hereI am trying to figure out how I can solve the following problem in Excel.
First "buis" with the highest "contract tarief" should cost 100% of the "contract tarief" price. The following highest "buis" should cost 50% of the "contract tarief price" all the other "buizen" will cost 25% of the mentioned "contract tarief" price.
For example 6 "buizen" in total 2 of 200mm 1 of 150mm 1 of 125mm and 2 of 100mm. Normally that would cost 8 + 3 + 2 ++ 2 = 15. But the first "highest price one" is 200mm that one will be 4 and the next 2 the rest will be 25% so 25% of 11. And that will be the total price.
So I am trying to make it automated that it automaticly finds the 2 highest costing "buizen" and calculate that they cost 1x100% and 1x50% and then totalling all of the rest "buizen" with the 25% cost.
I hope I make sense. I am from the Netherlands so please ask if you need more clarification. I appreciate your help.
I don't know the layout of your spreadsheet, but;
if column A is your price and B contains your 'contract tarief' then in cell C2 you could enter:
=IF($B2 = MAX($A:$A), $B2, IF(RANK($A2, $A:$A, 0)+COUNTIF($A:$A, $A2)-1 = 2, $B2*0.5, $B2*0.25))
You'll want to adapt that to match your layout of course.
Note that this will return the 100% tarief for all lines with the max value, the 50% for all lines with the second value, and the 25% for everything lower than that (things with duplicate values will get duplicate tariefs).
To give credit where it's due, I copied the unique ranking formula from here.
If one has Excel O365, you could try:
Formula in F2:
=LET(X,SORT(FILTER(A2:D6,D2:D6>0),1,-1),Y,SUM(INDEX(X,0,4)*(INDEX(X,0,3)/4)),Z,SUM(INDEX(X,0,4)),A,INDEX(X,1,4),Y+INDEX(X,1,3)*0.75+IF(Z=1,0,INDEX(X,IF(A>1,1,2),3)/4))
This is long and wordy and paining my head, I'm sure someone can come up with something clever =)
EDIT: The proper Dutch translation of this formula:
=LET(X;SORTEREN(FILTER(A2:D6;D2:D6>0);1;-1);Y;SOM(INDEX(X;0;4)*(INDEX(X;0;3)/4));Z;SOM(INDEX(X;0;4));A;INDEX(X;1;4);Y+INDEX(X;1;3)*0,75+ALS(Z=1;0;INDEX(X;ALS(A>1;1;2);3)/4))
I'm trying to calculate an average score based on a list of parameter scores (between 0 and 5). The trick is that I want to be able to weight each parameter.
Eg:
Parameter A Parameter B Parameter C
Weight 100% 70% 0%
Score 4 5 0
In the above example, the average score should be 3,75 as parameter c is left out.
I've tried with this formula: =IF.ERROR(SUM((A3*A5);(B3*B5);(C3*C5))/COUNTA(A3:C3);""). The formula seems to work if none of the parameters weight is equal to 0. How can I adjust the formula, so it excludes a score if weight is equal to zero?
I think it should be rather easy, I just can't get it to work.
Check this :
=SUMPRODUCT( A2:A4, B2:B4 ) / SUM( B2:B4 )
Source : https://exceljet.net/formula/weighted-average
With COUNTA you are counting the non empty cells, while you should count the non zero cells. So, assuming that the weights are in A3:C3 and the scores in A5:C5:
=IFERROR(SUMPRODUCT(A3:C3;A5*C5)/COUNTIF(A3:C3;">0");"Error: all the weigths are 0")
It would be like this:
(1*4 + 0.7*5) / 2 = 3.75
In other world the formula is:
((WeightA/100 * scoreA) + (WeightB/100 * scoreB) + (WeightC/100 * scoreC)) / 3
=SUMPRODUCT(A1:A3;B1:B3) / COUNTIF(B1:B3;"<>0") / 100
Something like this would work
I have a column with numbers and a reference column. I'm trying to separate the numbers column into first third, second third, and last third and take the average of each.
Values Ref column
1.7 cow
2.3 cow
2.6 cow
1.8 sheep
1.3 sheep
2.2 sheep
1.5 sheep
1.2 sheep
2.3 sheep
1.5 goose
2.5 goose
So, for example, the average of the first two values for "sheep", second two, and last two. In other words, I want to take the average of each 1/3 of cells adjacent to "sheep".
Add a column to cumulatively count the instances of the word you're looking at, then check that row number in your AVERAGE.
C2 = =CountIf($B$2:$B2, $B2) and fill down => values should be {1,2,3,1,2,3,4,5,6,1,2}
E1 = sheep
E2 = =CountIf($B:$B, $E$1) => 6
E3 = {=Average(If(($B:$B = $E$1) * ($C:$C <= $E$2 / 3), $A:$A))} (note this is an array formula, as designated by the {} around it) => 1.55
E3 = {=Average(If(($B:$B = $E$1) * ($C:$C > $E$2 / 3) * ($C:$C <= 2 * $E$2 / 3), $A:$A))} => 1.85
E3 = {=Average(If(($B:$B = $E$1) * ($C:$C > 2 * $E$2 / 3), $A:$A))} => 1.75
Array formulas, if I remember correctly, are entered the same as normal formulas (don't include the {}, that gets entered automatically), but you press Ctrl (and possibly Shift) with Enter when you finish.
NB - these look at the entire column. You can speed them up by changing $A:$A to $A$2:$A$12 (likewise for $B:$B and $C:$C). Just bear in mind that for any data you append to this list, you'll need to update the formulas; but you can insert data into the middle of the list and it will update them automatically.
use a formula like this:
=AVERAGE(INDEX(A:A,MATCH($D$2,B:B,0)+(D3-1)*COUNTIF(B:B,$D$2)/3):INDEX(A:A,MATCH($D$2,B:B,0)+((D3)*COUNTIF(B:B,$D$2)/3)-1))
This does require that the ref column be sorted and like references grouped.
This array formula will return the averages even if not sorted:
=AVERAGE(INDEX(INDEX(A:A,N(IF({1},MODE.MULT(IF($B$1:$B$12=$D$2,ROW($A$1:$A$12)*{1,1}))))),N(IF({1},ROW(INDEX(A:A,1+(D3-1)*COUNTIF(B:B,$D$2)/3):INDEX(A:A,D3*COUNTIF(B:B,$D$2)/3))))))
array formula need to be entered with Ctrl-Shift-enter instead of Enter when exiting edit mode.
Well supposing there were 7 sheep values and you wanted to do a weighted mean (e.g. the first mean would be calculated from the first two sheep plus a third of the third one)?
I have attempted a general solution for this dividing any number of animals into any number of fractions and finding their average values. My approach is to use the elegant overlap formula from #Barry Houdini as used here and work out the overlap between the intervals (in the case of 7 animals divided into 3):
0 to 2.33
2.33 to 4.67
4.67 to 7
and the numbers of the animals
0 to 1
1 to 2
2 to 3
and so on.
In H4
=IF(ROWS($1:1)<=$H$2,ROWS($1:1)/$H$2*COUNTIF(B$2:B$16,$G$2),"")
In G4
=IF(H4="","",H4-COUNTIF(B$2:B$16,$G$2)/$H$2)
The main formula in I4 is
=IF(H4="","",SUM(TEXT(IF(C$2:C$16<H4,C$2:C$16,H4)-IF((C$2:C$16-1)>G4,C$2:C$16-1,G4),"general;\0")
*A$2:A$16*(B$2:B$16=$G$2))/(COUNTIF(B$2:B$16,$G$2)/$H$2))
entered as an array formula.
The fractions can be changed to halves, quarters etc. by changing the number in H2.
I have four groups with individual proportions: p1, p2, p3, p4. Taking a random sample from this, the sum of the four values should equal 20 for each generation.
I have seen how to create four random values that sum to a number, but how do I factor in that they have these initial probabilities of being chosen?
*******Maybe I should elaborate on the question. There are four groups of candy being chosen to create a package of 20. The proportions are 20%, 25%, 30%, and 25% of the candies on an assembly line. Candies are selected randomly from this process and placed in the packages of 20 pieces. I am to simulate the process of creating 1000 of these packages. All 1000 generations should add up to 20.****
Just wondering if we are talking about something like the below?
Perc =RAND() =B2*C2 =D2/SUM($D$2:$D$5) =E2*20
P1 5% 0.168440417 0.008422021 0.026888651 0.537773022
P2 15% 0.23130968 0.034696452 0.110773983 2.215479657
P3 25% 0.424406873 0.106101718 0.338746737 6.774934746
P4 55% 0.2981786 0.16399823 0.523590629 10.47181258
Where the formulas are pasted in row 2, and copied down?
After seeing the edits to your question, I'm thinking maybe the below would be better?
F3:Y1003 has the formula: =RANDBETWEEN(1,20)
A3 has the formula: =COUNTIFS($F5:$Y5,">=1",$F5:$Y5,"<=4") (equivalent of 20%)
B3 has the formula: =COUNTIFS($F5:$Y5,">=5",$F5:$Y5,"<=9") (equivalent of 25%)
C3 has the formula: =COUNTIFS($F5:$Y5,">=10",$F5:$Y5,"<=15") (equivalent of 30%)
D3 has the formula: =COUNTIFS($F5:$Y5,">=16",$F5:$Y5,"<=20") (equivalent of 25%)
Then copy A3:D3 down to A1003:D1003.
I am a bit stumped with this issue, I was wondering if anyone could suggest a solution. In Excel I have a table which looks like this:
1 2 3 4 5 Result Score
80% 85% 90% 95% 100% 92.5% 3.50
What I am trying to calculate is that proportional score, based on where the result falls within the preset decimal 1-5 score.
Thanks.
In your case where each increment is 5% you could use a simple calculation like
=MAX(0,F2-75%)*20
[where result is in F2]
....but assuming that you want to interpolate the score given potentially less linear values in your table try this formula where your table is in A1:E2
=LOOKUP(F2,A2:E2,A1:E1+(F2-A2:D2)*(B1:E1-A1:D1)/(B2:E2-A2:D2))
for linear interpolation this would be general formula, just name the ranges or replace with cell references:
= (perc - minperc) / (maxperc - minperc) * (maxscore - minscore) + minscore