当前位置:编程学习 > VB >>

一个必须用iif完成的多种判断嵌套语句

solidworks软件里面的方程式只支持IIF函数,现在想完成以下要求,应该怎样写?
1、当a=1.78时,b=0则c=2.4,b=1则c=3.5,b=2则以C=4.7
2、当a=2.62时,b=0则c=3.6,b=1则c=4.7,b=2则以C=5.8
3、当a=3.53时,b=0则c=4.8,b=1则c=5.8,b=2则以C=6.8

以上三条各自单独用IIF函数完成均没问题,但要把它们合并为一条语句仅用IIF函数表达可能吗? 

--------------------编程问答-------------------- IIF只能判断真假2中情况,能用decode吗 --------------------编程问答-------------------- 没“solidworks软件”,在 VB6 中测试了一下:
'假设 a 只取值 1.78/2.62/3.53 ,b(整数类型) 只取值 0/1/2
'如果 b 为浮点类型,把 b=* 的地方都换成 clng(b)=*
IIf CLng(a * 100) = 178, IIf(b = 0, c = 2.4, IIf(b = 1, c = 3.5, c = 4.7)), IIf(CLng(a * 100) = 262, IIf(b = 0, c = 3.6, IIf(b = 1, c = 4.7, c = 5.8)), IIf(b = 0, c = 4.8, IIf(b = 1, c = 5.8, c = 6.8)))


不清楚你用的环境下的语法格式。如果最外层 IIf 要加括号,就改成:
IIf(CLng(a * 100) = 178, IIf(b = 0, c = 2.4, IIf(b = 1, c = 3.5, c = 4.7)), IIf(CLng(a * 100) = 262, IIf(b = 0, c = 3.6, IIf(b = 1, c = 4.7, c = 5.8)), IIf(b = 0, c = 4.8, IIf(b = 1, c = 5.8, c = 6.8))))

--------------------编程问答-------------------- 有个简单的方法:
Dim strTemp As String
strTemp = "2.43.54.73.64.75.84.85.86.8"
c = Val(Mid$(strTmpA, Fix(a) * 9 + b * 3 - 8, 3))

--------------------编程问答-------------------- 3F 的代码仍然是:
假设 a 只取值 1.78/2.62/3.53 ,b(整数类型) 只取值 0/1/2
--------------------编程问答-------------------- 在solidworks中只能用IIF函数,其它的都不行,如上1、2、3条可以分别写成:
1、IIf(a = 1.78, IIf(b = 0, 2.4, IIf(b = 1, 3.5, 4.7)) 
2、IIf(a = 2.62, IIf(b = 0, 3.6, IIf(b = 1, 4.7, 5.8)) 
3、IIf(a = 2.62, IIf(b = 0, 4.8, IIf(b = 1, 5.8, 6.8))

关键是不用其它的函数及语句,只用IIF怎么把它们合并。楼上的出现
“CLng”等在solidworks中均无法识别,当然运算符号是可以出现的。

--------------------编程问答-------------------- 3条都少了括号,第三条的a值错了,应该是3.53,好象这里不能编辑帖子呀? --------------------编程问答--------------------

a = 3.53
b = 1
x = IIf(a = 1.78, IIf(b = 0, 2.4, IIf(b = 1, 3.5, 4.7)), IIf(a = 2.62, IIf(b = 0, 3.6, IIf(b = 1, 4.7, 5.8)), IIf(a = 3.53, IIf(b = 0, 4.8, IIf(b = 1, 5.8, 6.8)), 0)))

--------------------编程问答--------------------
引用 7 楼 chinaboyzyq 的回复:
VB code

a = 3.53
b = 1
x = IIf(a = 1.78, IIf(b = 0, 2.4, IIf(b = 1, 3.5, 4.7)), IIf(a = 2.62, IIf(b = 0, 3.6, IIf(b = 1, 4.7, 5.8)), IIf(a = 3.53, IIf(b = 0, 4.8, IIf(b = 1, 5.8, 6.8)), 0)))


……


iif还能这么用,在VB下吗?iif能嵌套多少层级. --------------------编程问答-------------------- 项下贴子,赚点分 --------------------编程问答-------------------- UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP --------------------编程问答-------------------- 不能用函数,必须全部用IIF,不会真是用在软件设计中的吧 --------------------编程问答--------------------
引用 5 楼 xiadavid72 的回复:
在solidworks中只能用IIF函数,其它的都不行,如上1、2、3条可以分别写成:
1、IIf(a = 1.78, IIf(b = 0, 2.4, IIf(b = 1, 3.5, 4.7))  
2、IIf(a = 2.62, IIf(b = 0, 3.6, IIf(b = 1, 4.7, 5.8))  
3、IIf(a = 2.62, IIf(b = 0, 4.8, IIf(b = 1, 5.8, 6.8))

关键是不用其它的函数及语句,只用IIF怎么把它们合并。楼上的出现
“CLng”等在solidworks中均无法识别,当然运算符号是可以出现的。

我用 CLng() 的目的是避免“浮点数精度问题”。
你说在 solidworks软件 中无法识别,那就直接用 a=xxx 好了。

不过,我2F确实把代码写错了………… 

正确的用法是按 2F 的第二个代码写、但把所有的 c = 去掉;然后在最前面加上一个 c = 。


不知道我在 3F 的方法,在你的 solidworks软件 中能使用不?
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,