以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [灌水] Eval()中变量的确定  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=26789)

--  作者:iyplx2425
--  发布时间:2013/12/17 21:31:00
--  [灌水] Eval()中变量的确定

怎样写Eval()公式,其中有两点最为关键,一是确定变量,二是找准中部。笨人的笨办法,我采用倒推法,极易成功。下面举例说明,与初学者分享。

有如下刷新公式: 

Max(Abs([A] - [B]),Abs([B] - [C]),......,Abs([I] - [J]),Abs([J] - [K]))

公式的含义是,在该列返回[A]、[B]......[J]、[K]诸列两两相邻数值最大差数(以绝对值表示),即[A]-[B]、[B]-[C]、直至[J]-[K]中绝对值最大的。

我们把这个公式变形为 

Max(Abs([

A] - [

B]),Abs([

B] - [

C]),...

...,Abs([

I] - [

J]),Abs([

J] - [

K]))

请注意变形后的公式中,所有的变量A、B、C......I、J、K都被排到了每行的最前面。第一行(紫色)与最后一行(红色)都不包含变量,分别为公式的“头”与“尾”。从第二行到倒数第二行,按绿色与蓝色区分,交替出现,所有绿色与绿色,蓝色与蓝色标注的字符串都完全相同,分别为公式的“中1”和“中2”。

下面请注意,我们把变形了的公式再变一下,将所有绿色标注和蓝色标注的字符串分别用“|”和“@”来替代

Max(Abs([A|B@B|C@,......,@I|J@J|K]))

上述公式中红色部分中的“|”和“@”分别代表原公式中的 ] - [ ]),Abs([ 。f替换后完整的表达式是 

A|B@B|C@C|D@D|E@E|F@F|G@G|H@H|I@I|J@J|K

做好了这一步,我们的Eval()函数就可以很容易写出来了。

第一步,

Eval("")

第二步,写入头部

Eval("Max(Abs([")

第三步,在头部后面置入"++"

Eval("Max(Abs(["++"")

第四步,因为要分别对|和@进行置换,所以在"++"中间添加两个替换函数Substitute(),并把语法符号标注好

Eval("Max(Abs(["+Substitute(Substitute("","",""),"","")+"")

第五步,在"++"后面写入尾部

Eval("Max(Abs(["+Substitute(Substitute("","",""),"","")+"]))")

第六步,写入变量和被替换的字符|和@

Eval("Max(Abs(["+Substitute(Substitute("A|B@B|C@C|D@D|E@E|F@F|G@G|H@H|I@I|J@J|K","|",""),"@","")+"]))")

第七步,分别写入“中1”和“中2”

Eval("Max(Abs(["+Substitute(Substitute("A|B@B|C@C|D@D|E@E|F@F|G@G|H@H|I@I|J@J|K","|","] - ["),"@","]),Abs([")+"]))")

第八步,操作结束。

 


--  作者:lyang70
--  发布时间:2013/12/18 8:48:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:客人
--  发布时间:2013/12/18 15:38:00
--  
谢谢鼓励。
--  作者:iyplx2425
--  发布时间:2013/12/20 16:52:00
--  

Eval()公式的写法可按下面公式的颜色标注作为步骤来进行。

第一步:黑色;

第二步:紫色;

第三步:红色;

第四步:绿色;

第五步:蓝色。

Eval("头部"+Substitute(Substitute("带有将要被替换字符(即例中的"|"和"@")的变量","|","中1"),"@","中2")+"尾部")