以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]Eval公式  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=26851)

--  作者:iyplx2425
--  发布时间:2014/1/8 19:33:00
--  [求助]Eval公式
有如下自动格式公式: 

IF([" +ColName+ "] = "" And ([" +ColName+ "] =[红

1] Or [" +ColName+ "] = [红

2] Or [" +ColName+ "] =[红

3] Or [" +ColName+ "] =[红

4] Or [" +ColName+ "] =[红

5] Or [" +ColName+ "] =[红

6]),1,IF([" +ColName+ "] <> "" And ([" +ColName+ "] <>[红

1] And [" +ColName+ "] <>[红

2] And [" +ColName+ "] <>[红

3] And [" +ColName+ "] <>[红

4] And [" +ColName+ "] <>[红

5] And [" +ColName+ "] <>[红

6]),2,IF([" +ColName+ "] <> "" And ([" +ColName+ "] = [红

1] Or [" +ColName+ "] = [红

2] Or [" +ColName+ "] = [红

3] Or [" +ColName+ "] = [红

4] Or [" +ColName+ "] = [红

5] Or [" +ColName+ "] = [红

6]),3,"")))

请教:在使用Eval()函数时,能不能将上述公式中的绿色部分先作为尾部植入公式,再在植入的尾部后继续按头、中、 尾三个部分植入……,直到三个转换函数完成?

按上述思路,得到以下公式:

Eval("IF([" +ColName+ "] = """" And ([" +ColName+ "] = [红" +Substitute("1|2|3|4|5|6","|","Or [" +ColName+ "] = [红") + "]),1,IF([" +ColName+ "] <> """" And ([" +ColName+ "] <>[红" +Substitute("1|2|3|4|5|6","|","] And [" +ColName+ "] <> [红") + "]),2,IF([" +ColName+ "] <> """" And ([" +ColName+ "] = [红" +Substitute("1|2|3|4|5|6","|","] Or [" +ColName+ "] <> [红") + "]),3,"""")))")

但运行结果好像不对,请指教。

谢谢。


--  作者:wjq1072
--  发布时间:2014/1/8 21:04:00
--  

发文件上来看看?

列名称可以用ColName写成通用公式;而3个判断其中的1、2、3、4、5、6就不能再使用Eval写了(3个判断条件不同!)

[此贴子已经被作者于2014-1-8 21:35:48编辑过]

--  作者:iyplx2425
--  发布时间:2014/1/9 8:11:00
--  [求助]公式
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:5566.egd


--  作者:iyplx2425
--  发布时间:2014/1/9 8:29:00
--  [求助]公式

另外还有一个关于列名通用公式的问题。

Eval()函数运用中,类似[" +ColName+ "] =[红1] 这种情形,我们是把[" +ColName+ "] 作为[围红_]各列的通用公式来使用的,但公式会不会同时把[" +ColName+ "]指认为[红1]呢?因为[" +ColName+ "] 并没有特指是哪些列。


--  作者:dancedy
--  发布时间:2014/1/9 9:14:00
--  
公式设置在哪一列,colname就代表当前列的列名
--  作者:wjq1072
--  发布时间:2014/1/9 10:55:00
--  

If([红1]="" And [红2]="" And [红3]="",5,

Eval("If(["+ColName+"]="""" And [红1] <> ColName(2) And [红2] <> ColName(2) And [红3] <> ColName(2),1,

If(["+ColName+"]="""" And ([红1]=ColName(2) Or [红2]=ColName(2) Or [红3]= ColName(2)),2,

If(["+ColName+"] <> """" And [红1] <> ColName(2) And [红2] <> ColName(2) And [红3] <> ColName(2),3,

If(["+ColName+"] <> """" And ([红1]=ColName(2) Or [红2]=ColName(2) Or [红3]= ColName(2)),4,""""))))"))

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:5566.egd


--  作者:iyplx2425
--  发布时间:2014/1/9 12:01:00
--  [求助]公式

谢谢各位老师。

有两个问题请教:

1、["+ColName+"]与ColName(2)的使用区别在哪里?

2、式中[红1]、[红2]、[红3]不能用转换函数吗?如果[红]列很多的话,岂不公式会要写很长?

谢谢。


--  作者:wjq1072
--  发布时间:2014/1/9 12:48:00
--  

1、ColName 为的前列的全名称(**_a)"**_a";

2、ColName(2) 为的前列的第二层名称(**_a)"a"。

3、条件不同,不能使用Eval统一简化公式。


--  作者:iyplx2425
--  发布时间:2014/1/9 13:21:00
--  [求助]公式

哦。谢谢老师了。

 


--  作者:iyplx2425
--  发布时间:2014/1/9 13:24:00
--  [求助]公式
可以将ColName(1) 代表第一层吗?(**_a)"**_"或是"**"。