1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: xlez

[求助] eval计算大难题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-7-20 09:03 | 显示全部楼层
本帖已被收录到知识树中,索引项:数据类型和基本语句
crazy0qwer 发表于 2013-7-20 08:58
楼主的意思是:要计算的表达式中,还有包含单元格的引用。这个引用也要解析出来。

没什么必要还是换个 ...

evalute本身就能计算包含单元格引用的表达式。

TA的精华主题

TA的得分主题

发表于 2013-7-20 09:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
bluexuemei 发表于 2013-7-20 09:03
evalute本身就能计算包含单元格引用的表达式。

未命名.JPG

TA的精华主题

TA的得分主题

发表于 2013-7-20 09:54 | 显示全部楼层
本帖最后由 bluexuemei 于 2013-7-20 09:57 编辑
crazy0qwer 发表于 2013-7-20 09:21

呵呵,你这样当然不行,你这是在两个单元格,就一个单元格是可以的,比如A1=3,B1=4,C1=A1+B1,然后计算C1,EVALUATE是计算表达式的值的

TA的精华主题

TA的得分主题

发表于 2013-7-20 10:01 | 显示全部楼层
bluexuemei 发表于 2013-7-20 09:54
呵呵,你这样当然不行,你这是在两个单元格,就一个单元格是可以的,比如A1=3,B1=4,C1=A1+B1,然后计算 ...

看 8楼 楼主的说明、

TA的精华主题

TA的得分主题

发表于 2013-7-20 10:12 | 显示全部楼层
crazy0qwer 发表于 2013-7-20 10:01
看 8楼 楼主的说明、

A1=123
B1=sin(30)+3+A1
=jisuan(B1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-20 12:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢大家,我自己搞定了,虽然麻烦点。
思路是把字符串中A1之类提取出来保寸为一个数组a,然后将字符串中A1之类替换为@,再循环数组a,一个@一个@的替换成range(a(i)),麻烦一点但凑合用。

TA的精华主题

TA的得分主题

发表于 2013-7-20 12:52 | 显示全部楼层
xlez 发表于 2013-7-20 12:45
谢谢大家,我自己搞定了,虽然麻烦点。
思路是把字符串中A1之类提取出来保寸为一个数组a,然后将字符串中A ...

下面代码,对于你的要求来说,还差很多。主要难点是乘法、除法以及括号的处理。
如果你有时间,有能力,可以参考下。我是没时间去做了。
  1. Function JISUAN1(Range As Range) As Double
  2.     Dim S As String
  3.     Dim F As String
  4.     Dim N As Double
  5.     Dim M As Long
  6.     S = Range.Value
  7.     M = 1
  8.     For I = 1 To Len(S)
  9.         Select Case Mid(S, I, 1)
  10.             Case "+"
  11.                 N = N + Evaluate(CStr(Evaluate(Mid(S, M, I - M))))
  12.                 M = I + 1
  13.                 F = "+"
  14.             Case "-"
  15.                 N = N - Evaluate(CStr(Evaluate(Mid(S, M, I - M))))
  16.                 M = I + 1
  17.                 F = "-"
  18.         End Select
  19.     Next
  20.         JISUAN = Evaluate(CStr(N) & F & Evaluate(CStr(Evaluate(Mid(S, M)))))
  21. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2013-7-22 11:34 | 显示全部楼层
很不理解各位在讨论什么。。。楼主需要的不是如下的形式?或是我愚钝到完全理解错误?
未命名.PNG

TA的精华主题

TA的得分主题

发表于 2013-7-22 11:46 | 显示全部楼层
lee1892 发表于 2013-7-22 11:34
很不理解各位在讨论什么。。。楼主需要的不是如下的形式?或是我愚钝到完全理解错误?

把 单元格A1 改为  "1+2" , 你就理解了。

TA的精华主题

TA的得分主题

发表于 2013-7-22 11:51 | 显示全部楼层
crazy0qwer 发表于 2013-7-22 11:46
把 单元格A1 改为  "1+2" , 你就理解了。

B列前加一列,先算出结果,修改B列公式引用

吃饱了撑得才干吃力不讨好的事~~

呵呵~~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-3-8 00:36 , Processed in 0.026358 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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