求excel公式。初始值0,进行n次叠加,每次叠加值0.1,当叠加值超过5时,每次叠加值变为0.2,求最终值。

如题所述

第1个回答  2014-12-17
需要用到VBA
下面是代码:
Sub hong()
Dim m, n%
m = Range("A1")
n = Range("B1")
For i = 1 To n
If m > 80 And m < 85 Then m = m + 0.034
If m > 75 And m < 80 Then m = m + 0.047
If m < 75 Then m = m + 0.067
Next i
Range("C1") = m
End Sub

PS:注意最终结果大于85,但你说80《A1《85,所以大于85时就不再累加了追问

你的这个也很好,就是用到了VBA,我理解起来困难些,谢谢

第2个回答  2014-12-17
在任意单元格输入公式:
=IF(ROW(A1)<51,(ROW(A1)-1)*0.1,(ROW(A1)-1)*0.2-5)
将公式向下复制。本回答被网友采纳
第3个回答  2014-12-17

=IF(A1<51,A1*0.1,A1*0.2-5)

追问

初始值有时候不为0,每次叠加值是类似0.235这种没法马上用心算可以算出来之前叠加几次的数值。实际问题是初始值A1=72,叠加次数B1=350,当小于75时,每次叠加0.067,当A1被叠加到75<A1<80时,每次叠加0.047,当A1被叠加到80<A1<85时,每次叠加0.034,求最终值C1.。由于A和B是两列数,所以需要公式下拉,谢谢了。这个可能需要用到循环和迭代。

追答

大于85怎么办,下面的公式是大于85只取85,如果任由其扩大,把最外层的求最小值去掉:

=MIN(85,IF(B1<=INT((75-A1)/0.067),A1+B1*0.067,IF(B1<=INT((75-A1)/0.067)+INT((80-INT((75-A1)/0.067)*0.067-A1)/0.047),A1+INT((75-A1)/0.067)*0.067+(B1-INT((75-A1)/0.067))*0.047,A1+INT((75-A1)/0.067)*0.067+INT((80-INT((75-A1)/0.067)*0.067-A1)/0.047)*0.047+(B1-INT((75-A1)/0.067)-INT((80-INT((75-A1)/0.067)*0.067-A1)/0.047))*0.034)))

本回答被提问者采纳