Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: zjdh

[已解决]如何获得公式的值

[复制链接]
 楼主| 发表于 2014-6-22 16:43 | 显示全部楼层
谢谢你的关注,描述得那样都看不明白,没法与你交流,4楼大师一看就明白。
回复

使用道具 举报

发表于 2014-6-22 16:58 | 显示全部楼层
首先在VBA中 ABC="RANGE("A1")+RANGE("A2")" 这种写法是错误的,会出错(除非括号里面的引号为中文字符)。正确的应该是 ABC="RANGE(“"A1”")+RANGE(“"A2"”)"。
既然是字符串,可以用VBA中字符串处理函数来处理(也可用正则),比如 split 等提取出相应的关键字与表达式再合并成一个VBA中可计算的表达式或直接计算出结果。
回复

使用道具 举报

 楼主| 发表于 2014-6-22 17:08 | 显示全部楼层
本帖最后由 zjdh 于 2014-6-22 17:13 编辑
雪舞子 发表于 2014-6-22 16:58
首先在VBA中 ABC="RANGE("A1")+RANGE("A2")" 这种写法是错误的,会出错(除非括号里面的引号为中文字符)。 ...


现在的情况是 ABC 的值为 RANGE("A1")+RANGE("A2")  一个字符串,不考虑写法错误问题,如何得到该字符串所要达到的值。
回复

使用道具 举报

发表于 2014-6-22 17:18 | 显示全部楼层
zjdh 发表于 2014-6-22 17:08
现在的情况是 ABC 的值为 RANGE("A1")+RANGE("A2")  一个字符串,不考虑写法错误问题,如何得到该字符串 ...

直接计算还没有好的方法。可以变通一下,提取出字符串中的“A1”、“A2” ,带入 ABC=RANGE("A1")+RANGE("A2")中,计算出结果。
回复

使用道具 举报

 楼主| 发表于 2014-6-22 17:21 | 显示全部楼层
本帖最后由 zjdh 于 2014-6-22 17:25 编辑
雪舞子 发表于 2014-6-22 17:18
直接计算还没有好的方法。可以变通一下,提取出字符串中的“A1”、“A2” ,带入 ABC=RANGE("A1")+RANGE( ...


谢谢你!
实际情况还要复杂一点,有加减乘除括弧等,提取A1、A2的值还是比较容易的。
我只是简化一点求助。
我已经迂回处理将问题解决了。
回复

使用道具 举报

发表于 2014-6-22 17:26 | 显示全部楼层
zjdh 发表于 2014-6-22 17:21
谢谢你!
实际情况还要复杂一点,有加减乘除括弧等,提取A1、A2的值还是比较容易的。

可以用instr、split、like或正则等进行定位和替换,虽然麻烦点但解决问题应该不难。当然能找到捷径那就更好了。
回复

使用道具 举报

发表于 2014-6-23 09:28 | 显示全部楼层    本楼为最佳答案   
如果改成正确写法,就不是你说的情况
如果按1楼,直接写出来,这句就变红了,没法测试。要不你给个小例子,再看?


字符串的单元格都是range()的书写方式?如果是
1)把原字符串中的 RANGE("") ,都替换为空
2)得到 "A1+A2",用等号相连,赋给单元格对象。比如[A3]="=A1+A2"

回复

使用道具 举报

 楼主| 发表于 2014-6-23 09:47 | 显示全部楼层
谢谢!
1楼的表达式只是一个意思,我已将之修改。

请教:替换Range(" 语句如何写?
回复

使用道具 举报

发表于 2014-6-23 10:13 | 显示全部楼层
zjdh 发表于 2014-6-23 09:47
谢谢!
1楼的表达式只是一个意思,我已将之修改。


Sub test()
    Dim x As String
   
    [a1] = 3
    [a2] = 4
    x = "RANGE(""A1"")+RANGE(""A2"")"

    x = VBA.Replace(x, "RANGE(""", "")
    x = VBA.Replace(x, """)", "")
    x = "=" & x
    [a3] = x
End Sub

我这么测的,不知有用不
回复

使用道具 举报

发表于 2014-6-23 12:41 | 显示全部楼层
还是用宏表,虽然在vba里
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 07:45 , Processed in 0.272775 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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