各位大神,VB里面求和SUM公式里可以有IF条件吗?

chenxi891127 2017-11-09 10:10:10
各位大神,VB里面求和SUM公式里可以有IF条件吗?
比如,我是从Excel中拷出来的公式
=IF(MOD(A8,4)=0,SUM(IF(SIN(A12)>0,((B5/2+D5)*SIN(A12))^2*2,0),IF(AND(A8/2>2,SIN(2*A12)>0),((B5/2+D5)*SIN(2*A12))^2*2,0),IF(AND(A8/2>3,SIN(3*A12)>0),((B5/2+D5)*SIN(3*A12))^2*2,0),IF(AND(A8/2>4,SIN(4*A12)>0),((B5/2+D5)*SIN(4*A12))^2*2,0),IF(AND(A8/2>5,SIN(5*A12)>0),((B5/2+D5)*SIN(5*A12))^2*2,0),IF(AND(A8/2>6,SIN(6*A12)>0),((B5/2+D5)*SIN(6*A12))^2*2,0),IF(AND(A8/2>7,SIN(7*A12)>0),((B5/2+D5)*SIN(7*A12))^2*2,0),IF(AND(A8/2>8,SIN(8*A12)>0),((B5/2+D5)*SIN(8*A12))^2*2,0),IF(AND(A8/2>9,SIN(9*A12)>0),((B5/2+D5)*SIN(9*A12))^2*2,0),IF(AND(A8/2>10,SIN(10*A12)>0),((B5/2+D5)*SIN(10*A12))^2*2,0),IF(AND(A8/2>11,SIN(11*A12)>0),((B5/2+D5)*SIN(11*A12))^2*2,0),IF(AND(A8/2>12,SIN(12*A12)>0),((B5/2+D5)*SIN(12*A12))^2*2,0),IF(AND(A8/2>13,SIN(13*A12)>0),((B5/2+D5)*SIN(13*A12))^2*2,0),IF(AND(A8/2>14,SIN(14*A12)>0),((B5/2+D5)*SIN(14*A12))^2*2,0),IF(AND(A8/2>15,SIN(15*A12)>0),((B5/2+D5)*SIN(15*A12))^2*2,0),IF(AND(A8/2>16,SIN(16*A12)>0),((B5/2+D5)*SIN(16*A12))^2*2,0),IF(AND(A8/2>17,SIN(17*A12)>0),((B5/2+D5)*SIN(17*A12))^2*2,0),IF(AND(A8/2>18,SIN(18*A12)>0),((B5/2+D5)*SIN(18*A12))^2*2,0),IF(AND(A8/2>19,SIN(19*A12)>0),((B5/2+D5)*SIN(19*A12))^2*2,0),IF(AND(A8/2>20,SIN(20*A12)>0),((B5/2+D5)*SIN(20*A12))^2*2,0))
这个可以在VB中实现吗?
...全文
719 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2017-11-10
  • 打赏
  • 举报
回复
反正Excel公式的长度(公式的总字符数)、嵌套层数,都是有限制的;   VB/VBA代码的IIf ( )函数 照样有“层数限制(应该其它函数也一样)。 具体是多少限制,不清楚…… 总之,允许层数不会特别多,但目前没有遇到”不够用“的情况。
舉杯邀明月 2017-11-10
  • 打赏
  • 举报
回复
最简单的做法: 可以“从内层到外层”把它们拆开成一系列的 If……Else……End If 。需要多层嵌套。 第二种方法就是用IIf( )函数了,跟Excel的IF公式是一样的。   这个缺点是运行效率低,因为它总是要把True/False对应的两个表达式的值计算出来(在某些特定情况下可能会引起异常);   而用If……Else……的话,肯定只会计算“需要的那一个”表达式了,另一个是不会被计算的。 If……Else……End If 可以嵌套几十层(具体不清楚,反正目前我写过的代码似乎没有超过10层)。 你那一串“公式”,我没兴趣去“整理一下,看看究竟有多少层嵌套”,方法给你说了,具体的自己去做……
  • 打赏
  • 举报
回复
可以啊,就看你设计的思路了
舉杯邀明月 2017-11-10
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
[quote=引用 6 楼 Chen8013 的回复:] 反正Excel公式的长度(公式的总字符数)、嵌套层数,都是有限制的;   VB/VBA代码的IIf ( )函数 照样有“层数限制(应该其它函数也一样)。 具体是多少限制,不清楚…… 总之,允许层数不会特别多,但目前没有遇到”不够用“的情况。
真不够用了,还可以写成调用一个函数,在函数里面又可以嵌套更深的if; 函数嵌套太深导致堆栈不够用的时候,还可以切换到另一端内存当堆栈用,又可以嵌套更深的if; 所有内存都不够用时,还可以用磁盘文件模拟一段内存,又可以嵌套更深的if; ……[/quote]
赵4老师 2017-11-10
  • 打赏
  • 举报
回复
引用 6 楼 Chen8013 的回复:
反正Excel公式的长度(公式的总字符数)、嵌套层数,都是有限制的;   VB/VBA代码的IIf ( )函数 照样有“层数限制(应该其它函数也一样)。 具体是多少限制,不清楚…… 总之,允许层数不会特别多,但目前没有遇到”不够用“的情况。
真不够用了,还可以写成调用一个函数,在函数里面又可以嵌套更深的if; 函数嵌套太深导致堆栈不够用的时候,还可以切换到另一端内存当堆栈用,又可以嵌套更深的if; 所有内存都不够用时,还可以用磁盘文件模拟一段内存,又可以嵌套更深的if; ……
chenxi891127 2017-11-09
  • 打赏
  • 举报
回复
那这个IFF函数怎么求和呢?
赵4老师 2017-11-09
  • 打赏
  • 举报
回复
IIf 函数 根据表达式的值,来返回两部分中的其中一个。 语法 IIf(expr, truepart, falsepart) IIf 函数的语法含有下面这些命名参数: 部分 描述 expr 必要参数。用来判断真伪的表达式。 truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。 falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。 说明 由于 IIf 会计算 truepart 和 falsepart,虽然它只返回其中的一个。因此要注意到这个副作用。例如,如果 falsepart 产生一个被零除错误,那么程序就会发生错误,即使 expr 为 True。 IIf 函数示例 本示例使用 IIf 函数来判断 CheckIt 过程之 TestMe 参数的值,如果参数值大于 1000 则传回“Large”;否则传回“小图标”。 Function CheckIt (TestMe As Integer) CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
tzmtx 2017-11-09
  • 打赏
  • 举报
回复
引用 2 楼 chenxi891127 的回复:
那这个IFF函数怎么求和呢?
看你用在哪里了

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧