现需要解决一个EXCEL中的问题,公式可能无法解决,能解决更好。实在不行就用VBA。
比如A1=20 B1=3
现C1=A1-B1。D1=A1/B1
当第一次计算后,C1和D1都可得到一个值。
但要求,C1与D1的值将要做为下一次的A1,B1的初始值。即,第二次计算时,A1=C1,B1=D1
以此类推,直到A1〈0时,停止计算,问此时A1,与B1的值是多少?
像这样的问题是不是只能用VBA搞定?
我现在就现在A1,B1中输入值,然后想在另外一个单元格中弄个公式,直接计算出A1,B1最后的值,怎么做?
如能用工式解决的优先加分(包括自定义公式)。如果不能用公式解决,请用VBA帮我解决。谢谢。高分求助!
谢 不亮的灯吴,你说的这方法不行,我不能添加辅助列的。如果添加辅助列当然简单了。VBA的方法你会不?公式的我要只输一个工式就能得到结果的。不能用拖的方法。
EXCEL之如何循环计算?高手指点下
答案:6 悬赏:20 手机版
解决时间 2021-03-18 03:16
- 提问者网友:温柔港
- 2021-03-17 20:30
最佳答案
- 五星知识达人网友:春色三分
- 2021-03-17 21:55
Excel里面通过迭代计算可以实现有条件的循环,但你的问题用excel公式不好实现,还是用代码吧:
Sub 循环()
Dim a As Double, b#, c#, d#
a = Range("A1").Value
b = Range("B1").Value
Do Until a < 0
c = a - b
d = a / b
a = c
b = d
Loop
Range("A1").Value = a
Range("B1").Value = b
End Sub
结果是A1=-0.132198731404159...
B1=0.931944679349769...
Sub 循环()
Dim a As Double, b#, c#, d#
a = Range("A1").Value
b = Range("B1").Value
Do Until a < 0
c = a - b
d = a / b
a = c
b = d
Loop
Range("A1").Value = a
Range("B1").Value = b
End Sub
结果是A1=-0.132198731404159...
B1=0.931944679349769...
全部回答
- 1楼网友:底特律间谍
- 2021-03-18 01:17
用公式:
一楼"不亮的灯吴"的改进:获取序列后在A1,B1中自动显示需要的结果,(每次C1,D1更改后A1,B1自动更改为需要的数值)
在单元格A1中用公式:
=VLOOKUP(TRUE,A2:D11,3,FALSE)
在单元格B1中用公式:
=VLOOKUP(TRUE,A2:D11,4,FALSE)
其余步骤:
在a2单元格中输入 =IF(C1<0,TRUE,C1)
b2单元格输入=D1
c2单元格输入=IF(C1<0,C1,A2-B2)
d2单元格输入=IF(C1<0,D1,A2/B2)
然后把a2,b2,c2,d2单元格都选中,在右下角往下拖拽足够多(100个左右)
- 2楼网友:何以畏孤独
- 2021-03-17 23:45
已有标准出生时,设
a姓名
b列为其出生年月
c列为性别
可用,可用公式,==date(year(d2)+if(b2="干部",(if((c2="男"),60,55)),(if((c2="男"),60,50))),month(d2),day(d2)+1),
用if进行多重判断,有点啰嗦,不过还是可以做出来的。
- 3楼网友:白昼之月
- 2021-03-17 23:37
Sub Macro1()
Dim a As Single, b As Single, c As Single, d As Single
a = 20
b = 3
Do While a >= 0
c = a - b
d = a / b
a = c
b = d
Loop
MsgBox "a" & a & vbCrLf & "b" & b
End Sub
- 4楼网友:低血压的长颈鹿
- 2021-03-17 22:50
用vba比较容易实现,就是一个循环函数就能解决。
如果用公式的话,你看这样是否可以满足需求。
在a2单元格中输入 =IF(C1<0,"",C1)
b2单元格输入=D1
c2单元格输入=A2-B2
d2单元格输入=A2/B2
然后把a2,b2,c2,d2单元格都选中,在右下角往下拖拽,多拽一点,你会看到在a列某行处会有空值,这个地方就是你需要得到的数据了。
- 5楼网友:你可爱的野爹
- 2021-03-17 22:26
EXCEL公式不大可能
在Visual Basic编辑器中输入如下代码:
'-----------------------------------------------------
Public Function LOPAB(ByVal Cell1 As Range, ByVal Cell2 As Range) As String
Dim a, b, c, d As Double
a = Cell1.Value
b = Cell2.Value
Do
c = a - b
d = a / b
a = c
b = d
Loop Until c < 0
LOPAB = a & "," & b
End Function
'---------------------------------------------
在某单元格中输入如下公式:
=LOPAB(A1,B1)
收工!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯