首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

关于Excel自动计算公式的有关问题

2012-03-09 
关于Excel自动计算公式的问题在C列输入公式,自动计算的结果显示在D列,我编写了一个宏,输入公式后,再运行宏

关于Excel自动计算公式的问题
在C列输入公式,自动计算的结果显示在D列,我编写了一个宏,输入公式后,再运行宏可自动计算。
现在的问题是,我每次输入完公式,需要点击运行宏,这样太麻烦。
我想输入公式后,点击下一个单元格时,上一行的公式就被计算,不需要再点击运行宏。
请问各位高手,如何实现。

Sub Calc()

Dim d As String
Dim c As String
Dim i As Integer

For i = 4 To 23

d = "d" & i
c = "c" & i

Range(d).Cells = ""

If Range(c).Text <> "" Then
Range(d).Formula = "=" & Range(c).Text
End If

Next i


End Sub



[解决办法]
用 selection chage 事件来判断
符合你的条件后就 call Calc 你的程序
[解决办法]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 1 Then
MsgBox ("运行你的程序")
End If
End Sub

在sheet表加入这么一段程序,条件是对象的行大于1,就运行
[解决办法]
搂住 , 你这个根本不需要VBA呀,

你在 D列里头直接输入公式就好了

D4=if(C4="","","C"&ROW(C4))

下拉到23行即可


再者,如果真要用公式,,我可以教你这样用

比如你写个公式 如下:
Function a(c As Range)
a = Replace(c.Address, "$", "")
End Function

然后在D4 = a(C4),下拉到23行
然后再在C列输入任意内容,看看效果....希望对你有帮助
[解决办法]
公式就可能解决的!
[解决办法]
对呀,只用公式就解决问题了。
[解决办法]
D1=INDIRECT(C1)

下拉, 你要的是这个吗?
[解决办法]
参考一下吧:
第一步:先选C1栏,选择菜单\插入\名称\定义,在名称输入“计算式”,在引用位置输 入=EVALUATE(Sheet1!$C1)。
提示:EVALUATE是Eexcel 4.0版的宏表函数, 对以文字表示的一个公式或表达式求值,并返回结果。
第二步:在D1单元格输入“=IF(C1="","",计算式)”即可,拖曳。
意为:判定如果C1单元格为空,当前单元格也为空,否则当前单元格显示计算式的结果。这样的好处而易见,显示更精练。

热点排行