Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8806|回复: 10

[已解决]在VBA中,读取单元格内容,作为公式进行运算?

[复制链接]
发表于 2011-10-18 17:02 | 显示全部楼层 |阅读模式
在VBA中,读取某单元格内容,如"B2"中有"x^2",能不能将其作为公式进行运算呢?例如:
For X = 1 To 10
    Cells(X, 1) = Cells(2, 2)   '即想要得到的是1,4,9,16......100
Next
最佳答案
2011-10-18 17:47
本帖最后由 mxg825 于 2011-10-22 14:46 编辑

[B2] 输入 X^2

  1. Sub 按公式返回值()
  2. Dim I%
  3. For I = 1 To 20
  4.     Cells(I, 1) = Application.Evaluate("=" & Replace([B2], "X", I))
  5.     '先将[B2]的X 换成I 变量值,然后把公式转换成 数值
  6. Next
  7. End Sub
复制代码
可以试下把 [B2] 输入: X^2+X
                                      X+3*X
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-10-18 17:05 | 显示全部楼层
For X = 1 To 10
    Cells(X, 1) = x ^ 2
Next
{:041:}
回复

使用道具 举报

 楼主| 发表于 2011-10-18 17:23 | 显示全部楼层
回复 爱疯 的帖子

这个法子地球人都知道啊?
要求是公式必须写在单元格中!
回复

使用道具 举报

发表于 2011-10-18 17:26 | 显示全部楼层
如"B2"中有"2^2"
For X = 1 To 10
    Cells(X, 1) = Application.Evaluate("=" & Cells(X, 2))  '即想要得到的是1,4,9,16......100
Next
回复

使用道具 举报

发表于 2011-10-18 17:35 | 显示全部楼层
爱疯 发表于 2011-10-18 17:05
For X = 1 To 10
    Cells(X, 1) = x ^ 2
Next

学习了。
回复

使用道具 举报

发表于 2011-10-18 17:38 | 显示全部楼层
本帖最后由 mxg825 于 2011-10-18 17:42 编辑

如"【B2】"中有"X^2" (这里的X 要和下面的X大小写一样)

Dim I%
For I = 1 To 10
    Cells(I, 1) = Application.Evaluate("=" & Application.Substitute([B2], "X", I))
Next

楼主应该是要这种效果!

评分

参与人数 1 +1 收起 理由
qpniu + 1 让我长见识了

查看全部评分

回复

使用道具 举报

发表于 2011-10-18 17:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 mxg825 于 2011-10-22 14:46 编辑

[B2] 输入 X^2

  1. Sub 按公式返回值()
  2. Dim I%
  3. For I = 1 To 20
  4.     Cells(I, 1) = Application.Evaluate("=" & Replace([B2], "X", I))
  5.     '先将[B2]的X 换成I 变量值,然后把公式转换成 数值
  6. Next
  7. End Sub
复制代码
可以试下把 [B2] 输入: X^2+X
                                      X+3*X
回复

使用道具 举报

发表于 2011-10-18 18:04 | 显示全部楼层
本帖最后由 fjmxwrs 于 2011-10-18 18:05 编辑
qpniu 发表于 2011-10-18 17:23
回复 爱疯 的帖子

这个法子地球人都知道啊?


地球人都知道?呵呵
这们可行了,你把B2单元格的X可以换成其他任意单个字母或符号。^可以换成任意的运算符
Sub aa()
    Dim r, r1 As String
    r = Left(Cells(2, 2), 1)
    r1 = Mid(Cells(2, 2), 2, Len(Cells(2, 2)))
    For x = 1 To 10
        r = x
        Cells(x, 1) = Application.Evaluate("=" & r & r1)
    Next
End Sub

回复

使用道具 举报

 楼主| 发表于 2011-10-18 19:25 | 显示全部楼层
回复 mxg825 的帖子

感谢高手的指点!
6楼是我想要的结果.
但是还是不太明白,为什么只有用Substitute替换一次变量后才能运行正确?
而直接读取单元格中的公式则不行?尽管保持了"x"的一致,仍是生成  "#NAME?"  这样的报错?
回复

使用道具 举报

 楼主| 发表于 2011-10-18 19:58 | 显示全部楼层
本帖最后由 qpniu 于 2011-10-18 20:10 编辑

回复 qpniu 的帖子

我似乎明白了:
当   x = 2   时
Application.Evaluate()中可以是字符串“2”,才能运算;如果是变量“x”字符本身,则不能运算。

而  Substitute([B2], "x", i)  就是将公式中的字符X替换成了具体的数字字符串“2”

高手们,这是样吧

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 17:45 , Processed in 0.323359 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表