怎样写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([")+"]))")
第八步,操作结束。