有些函数的参数可以用简化或者省略以达到缩短公式的目的,但怎样才算合理、正确的简化呢?希望各位会员朋友在此写一写吧。
我开个头:true、false用1、0代替。
vlookup(lookup_value,table_array,col_index_num,range_lookup)(或者hlookup)的最后一个参数,若省略或为true则大致匹配。
所以我们会用=vlookup(A1,B:C,2,0)类似的东西来精确查找引用
用vlookup(A1,B:C,2)——省略第四个参数是大致匹配,而vlookup(A1,B:C,2,)——省略第四个参数但没省略之前的逗号却还是精确匹配的!!!
match最后参数也是如此,可以省略0或false,但不要省略前面的那个逗号就是精确匹配了。
【注意】帮助文件说false是大致匹配是错误的——应该是精确匹配
《Excel函数与公式实战技巧精粹》已明确“省略”和“简写”概念,详见第15楼http://club.excelhome.net/viewthread.php?tid=147926&page=1#pid2983656
一、概念分析
1、示例:
省略过程 |
简写过程 |
公式1 = VLOOKUP(C1,A:B,2,TRUE)
|
公式4 =VLOOKUP(C1,A:B,2,FALSE)
|
公式2 =VLOOKUP(C1,A:B,2,1)
|
公式5 =VLOOKUP(C1,A:B,2,0)
|
公式3 =VLOOKUP(C1,A:B,2)
|
公式6 =VLOOKUP(C1,A:B,2,)
| 关于“省略”一词,Excel自身帮助文件的说法是比较含糊的,有时候是“省略”有时候是“忽略”,但针对上面表中两列共6个公式,大家可以比较一下,显然:左边3个公式是相互等价的,右边3个公式也是相互等价的。
【问题】如果不分青红皂白都说第4参数“省略”了,很显然就不能区分精确匹配和大致匹配。
【创新】在编著《Excel函数与公式实战技巧精粹》一书过程中,经过反复推敲,最后明确了“省略”与“简写”两个概念: 公式3这种整个参数都去掉的情况,称为VLOOKUP第4参数省略。 公式6这种保留参数前面的逗号的情况,称为VLOOKUP第4参数简写。
MATCH函数也是如此,当然,对此概念并非所有人都接受,正如对于“数组公式”的概念争议一样,最终约定俗成使用统一的概念,才能方便学习。
2、论证过程
(1)被省略的一个关键词: 前段时间看到英文版的帮助文件,并与中文版进行部分对比时,发现英文版帮助文件在描述“省略”或者“简写”时,都使用omitted(省略了的)一词,也难怪中文版的“省略”引起理解的歧义,不过英文版的参数描述中第一个词却是Required.(必需的) Optional.(可选的)比如IF函数的帮助文件中关于参数的描述: logical_test Required. ………… value_if_true Required. ………… value_if_false Optional.…………
中文版帮助信息没有这个词
(2)VBA中的函数与工作表函数区别 1)VBA帮助中关于参数描述,会标明必选(或必要)、可选。 比如: DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) DateDiff 函数语法中有下列命名参数:
部分 |
描述 |
interval |
必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔 |
Date1□date2 |
必要;Variant (Date)。计算中要用到的两个日期。 |
Firstdayofweek |
可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。 |
firstweekofyear |
可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。 |
2)VBA中的函数可选参数,是可以跳过,而工作表函数的参数则是“一个萝卜一个坑”,不可跳过。 比如,运行下面这个程序:- Sub test()<BR>Range("b1") = DateDiff("ww", "2009-1-1", Now, , 2)<BR>End Sub
复制代码 与- Sub test()<BR>Range("b1") = DateDiff("ww", "2009-1-1", Now, 2)<BR>End Sub
复制代码 的效果都是一样的,也就是说DateDiff函数参数变成了DateDiff(interval, date1, date2, firstweekofyear) ,直接跳过Firstdayofweek。
但是工作表函数IF(logical_test,value_if_true,value_if_false),却不可能变为IF(logical_test,value_if_false)
【结论】 综上所述,个人认为: 1、工作表函数参数如果为“可选”参数,则从最后一个参数起,可以依次省略(即整个参数位置全部去掉),比如: OFFSET(reference,rows,cols,height,width) 可以用OFFSET(reference,rows,cols,height)——省略了width参数 或者用OFFSET(reference,rows,cols)——省略了height和width参数
2、而函数的部分参数(不一定需要“可选”参数),可以使用逗号保留参数位置,这种用法为“简写”,比如: 可以用OFFSET(reference,rows,cols,,width)——简写了height参数 或者用OFFSET(reference,,cols)——简写了rows参数,并省略了height和width参数。
[ 本帖最后由 gouweicao78 于 2009-12-9 10:14 编辑 ] |