- 第 I 条 前 言
- 第 II 条 初识函数
- 节 2.01 初学07 版的相关问题
- 节 2.02 桩功练习
- 节 2.03 函数初识
- 节 2.04 Excel公式的优势
- 节 2.05 自学函数
- 节 2.06 编辑公式之公式中的字符
- 节 2.07 编辑公式之鼠标点选
- 节 2.08 编辑公式之函数提示工具
- 节 2.09 编辑函数公式的策略
- 节 2.10 审核公式
- 节 2.11 飘逸的剪切
- 节 2.12 璀璨的项链,灵动的挂坠
- 节 2.13 格式转换
- 节 2.14 功能性符号的作用
- 节 2.15 形参表达中的玄机
- 节 2.16 参数类型的玄机续:
- 节 2.17 闲谈错误值
- 节 2.18 闲谈错误值- 续
- 节 2.19 玉不琢不成器
- 节 2.20 君君臣臣 父父子子
- 节 2.21 公式中的单元格引用
- 第 III 条 嵌入式应用开篇
- 第 IV 条 条件格式
- 第 V 条 数据有效性
- 第 VI 条 筛选
- 第 VII 条 回帖补充资料
- 第 VIII 条 数组公式
- 第 IX 条 自定义函数
- 第 X 条 最常用的函数
目 录
前 言
1-1 初识函数
1-2 初学07版的相关问题
1-3 桩功练习
1-4 函数初识
1-5 自学函数
1-6 编辑公式之公式中的字符
1-7 编辑公式之鼠标点选
1-8 编辑公式之函数提示工具
1-9 编辑函数公式的策略
1-10 审核公式
1-11 飘逸的剪切
1-12 璀璨的项链,灵动的挂坠
1-13 格式转换
1-14 功能性符号的作用
1-15 形参表达中的玄机
1-16 参数类型的玄机续:
1-17 闲谈错误值
1-18 闲谈错误值-续
1-19 玉不琢不成器
1-20 君君臣臣 父父子子
二、 嵌入式应用开篇
2-1 名称
2-2 用活名称的秘密
2-3 再识名称-名花无主
2-4 再识名称之谁人不识君
2-5 栖息地
2-6 谁人不识君补充及用活名称的秘密演练
2-7 SUMIF复杂逻辑解析-插曲
2-8 谁人不识君-相约在“公式记忆式键入”
三、 条件格式
3-1 条件格式秀
3-2 条件格式桩功之单元格引用格式
3-3 条件格式桩功2
3-4 桩功点评及思维上的进阶
3-5 管理器简介
3-6 绚丽落幕
四、 数据有效性
4-1 数据有效性桩功演练
4-2 公式切入口
4-3 管理面板简介
4-4 有效性应用两三例
五、 筛选
5-1 07版筛选秀-让你一见倾心
5-2 高级筛选(筛选不重复系列)
5-3 条件语法与关键字
5-4 关键字之似曾相识
5-5 移花接木,倒打一钯
六、 回帖补充资料
6-1 学生名册
**
第 I 条 前 言
从今天开始,我会花一定的精力来耕耘这个帖子,争取让她成为大家学好函数公式的一个筑基好帖。让更多的人来了解函数公式,来感受函数公式的魅力,来分享函数公式给我们带来的快乐。
在身边同事的心目中我是函数公式的高手,其实我掌握的函数并不多,对单个函数的挖掘也并不十分透彻,于是我也很少能写出比较精妙的函数公式,甚至想在函数公式的竞赛区捞点分都比较困难。
看到这里也许你比较失意,甚至有点沮丧—这家伙自己都不怎么样,看来也学不到什么东西—-,当然也有些嗅觉特敏锐的同学,一定感觉到这里将来一个小小的转折。是的,看问题我们需要经常变换着角度来看,大家也可以把上面这些消极的信息转换成积极的:要成为函数公式高手,并不需要掌握一大堆的函数,也并不要求对单个函数有特别深入的研究。
开心吗?开心就鼓鼓掌吧,呵呵。
其实,这一点也不假,而且事物是相通的,打斯诺克就是一个很好的例子,一个斯诺克高手的厉害不在于他的某一项技术(比如远台强行拉杆、全台直线球精准度),也不要求他精通各种杆法,他所擅长的是使用自己熟悉的杆法,合理的控制母球,在不经意之间就拿下一个高分,而中间似乎都没有一个特别精彩的进球。
函数公式有很多问题我不明白,有很多知识我也缺乏,但有一点是肯定的,我会将我所知道的毫无保留的传授给你,而且我确信:当你真正掌握了这些知识,就为成为一个函数公式的高手打下了坚实的基础,而是否能成为真正的函数高手就看你是否愿意帮助大家了!
开心吗?开心就再鼓点掌吧,呵呵
本贴我定位为筑基帖,使用“筑基”两字我是想以练功的方式来讲函数公式的学习,希望能带来一点新意。
本贴是迎接刚刚从基础版转战而来的朋友的,所以我会从基础讲起,并倡导使用平实的函数公式,说实话很精妙的函数应用我自己都不太会,呵呵。
要学好函数公式,需要做到“静”,不可浮华;还有“敬”,当然啦不是“敬”我,只是我觉得怀着一个“敬”字来做一件事情容易有心得和收获;另外就是“放下”,不要过多的去争,去比,自己有所收获才是最重要的;最后就是“练”,我师爷在初学太极十三字诀中提到总诀就是一个“练”字,函数公式同样是需要“练”的,只有通过一定时间的磨练,那些要记忆的东西才能固化到身体里面,用我的话说就是固化在手指尖上了,这样大脑才能腾出足够的空间来处理更高层次的逻辑关系…那怎么练?用kevin的话讲就是“在帮助别人的同时提升自己”。
当然啦,需要掌握的函数不是太多,但也不能太少,巧妇难为无米之炊么。计数我熟悉的常用函数,十个手指头是打不住的,不过加上它们的那些近亲兄弟们就差不多了,呵呵上路吧==================================================================================
脑瓜中一团浆糊,目前的状态就像是从脑瓜中抽了个线头,抽丝…
函数是要放在实际场景中使用的,单独去讲解一个一个函数的功能,必然事倍功半。函数与图表、函数与数据有效性、函数与条件格式的结合能够体现出函数独特的魅力。
**
第 II 条 初识函数
节 2.01 初学07版的相关问题
节 2.02 桩功练习
练拳不练功,到老一场空。连太极是从桩功开始的,这里我也借鉴一下。此处介绍的这个“桩功”是贯穿整个函数公式的学练进程的,算是一种基础的能量流,主要是要体会、领悟公式中单元格的引用格式对公式在复制、拖拉,以及日后在条件格式、数据有效性、名称中使用时的规律性。这个是比较容易领悟的,但需要一定的演练才能将妙处谨记在心,进而能所心所欲的使用。
新建一个工作簿,并在其中一个工作表中码上如下文本“体悟公式中单元格的不同引用方式给公式复制、拖拉带来的影响”,如下图所示。
2桩功练习附件
节 2.03 函数初识
函数,是意味着我们必须编程吗?
初识函数的时候我自己确实有过这样的担心,因为大学时学编程语言做的最多的就是写函数,于是听到函数一词还是挺紧张的。不过接触函数以后,我欣喜地发现此处的函数公式不是编程,更像是一堆积木,我们要做的就是根据逻辑将这些积木进行拼装组合…
函数可以看成一个处理器或说一个黑箱,我们只要关心它的输入与输出,对里面的具体实现我们无需关心。这些黑箱能对输入进行某种处理,最后输出结果,这些输入就叫参数(概念上类似数学里函数概念中的自变量),各参数之间用半角的逗号”,”来划分,输出就是函数返回值,而黑箱可以用一对半角状态的括号“(”,“)”来表示,比较形象,一来是将参数包裹起来,而来就是表达内部处理对外层函数(涉及嵌套时)来说是不可见的,是透明的(这点比较重要)。当然拉,人有姓,树有名,为了对这些黑箱起个标识作用,就在括号之前贴上了“标签”,这个标签就是函数名。函数名除用于标识外还起到一定的功能描述作用。
当然啦,就像一个人回到古代,即使用尽最贴切的比喻也难以让古人对三明治有真切的认识,最好的最直接的方式就是带块三明治,然后让古人尝一口,然后告诉他,这就是三明治。如此,即使了解不是太全面,那也一定真切。现在我们就来咬一口我们的三明治。
拿vlookup函数开刀。大家可以下载附件,以更好的理解。同时看下图,请尝试对以上概念进行对号,以明晰概念。
当然拉,这只是让大家看了下三明治的解剖图,要真正咬它一口还请劳驾下载附件,完成里面的任务。相信这会给你带来真切的体会。
学习函数,重要的一点就是练,直接去做例子。这回给你带来丰富的感性认识。当然,光练还不够,还需要悟。悟,具体怎么做呢?最初级的,可以用自己的语言,结合其参数来描述这个函数的功能,使得看到这个函数,就能理解各参数的意义,不用去记住整个语法,但碰到了就能知道怎么使用…切记,不要去背,只要学会对应就行了,尽可能地减轻记忆的负担。
上眼,下图就是给大家准备的三明治,呵呵,咬它一口吧。
3初识函数附件
节 2.04 Excel公式的优势
节 2.05 自学函数
如果把编辑公式比作造句,那么函数好比组成句子的词汇。如果在一个句子中遇上一两只拦路虎就会对理解造成一定影响,虽然可以揣摩,但毕竟有点隔靴搔痒,尤其大家刚学函数,碰到这样或那样的拦路虎的几率还是非常大的,那怎么办呢?
读书时对付此类拦路虎的方式就是备一本字典,现在也差不多,不过我们用的是帮助。怎么用呢?比较简单,比脑筋急转弯“把大象装进冰箱”要容易那么一点,少一步。
把“大象装进冰箱”大致要三步,分别为打开冰箱、将大象放进冰箱、关上冰箱,我们这里只要两步:定位函数、调出对应的帮助,哈哈,等于没讲,呵呵。
在“初识函数”中提过,函数就是一个黑箱,定位函数就是要找到那个黑箱,而黑箱就是那一对括号“(”,“)”。所以第一步要做的就是将光标定位到对应函数的括号内部。此时,EXCEL就会弹出对应的“函数提示工具”(这个东西非常重要,是编辑公式的趁手利器),就是一个“函数结构示意”,如下图所示。

单击其中的函数名,就会弹出对应的帮助文档,如下图所示。
不过现在想来,初次见面还是要重视一下,大略看一下整个语法讲解也是好的,是否掌握倒在其次,主要混个脸熟。碍于时间,就不在上图标示中修改了
当然,要查看函数帮助,还可以直接按F1调出帮助窗口,然后再搜索栏中输入对应的函数名即可。当然啦,方法不在于多,大家只要选一种自己的方式即可。本人喜欢直接在单元格公式中定位对应函数,然后单击“函数提示工具”中的函数名的方式来查看对应的帮助。
查看帮助时尽量以解决当前问题为度,不要想着把帮助中的各种细节都掌握。欲速则不达。运用函数以解决实际问题为首要,当实际应用时发现新的问题,这时带着问题再看帮助就能牢牢的记住其中细节的意义,进而提高对这个函数的认识…多磨砺几遍,这些细节就不需要去记了,不用记就不会忘。
要真正咬一口三明治,那么还请下载附件,直接在单元格上演练一把。里面虽然有很多函数你不认识,没有关系,你可以揣摩,也可以查找帮助,尽可能的克服这些拦路虎。碰到哪个函数就消化那个函数,当然这里的消化层次定位在能应用其基本功能。
掌握了“自学函数”的方式,那么应用时只要记住函数名就可以了,函数名一般与其功能对应,因此记忆量锐减,得到函数名我们就能顺藤摸瓜掌握这个函数的基本用法,当然啦,最好是看到这个函数,根据函数提示工具就能摸索着使用这个函数。如果每次都要求助帮助,那么在思路上就会不断打断…
4自学函数附件
节 2.06 编辑公式之公式中的字符
公式中功能性的字符,比如表征黑箱的左右括号”(“,”)”,间隔参数的逗号”,”,用来封装文本的双引号“””等等,最好都使用半角状态的字符。虽然,有些时候EXCEL会帮我们进行智能的转换,但养成好习惯还是值得的。实战时,将输入法切换至英文状态即可。而这一法则,即”功能性字符使用半角状态的字符”不仅仅适用于公式,养成习惯必将免去不少麻烦。
初学时,另一个常犯的错误就是…卖个关子,看这个公式,大家看了就知道,也许你也同样犯过错误,呵呵
“=if(a1>60,及格,不及格)”
刚开始,我左看、右看我,上看、下看,可是我怎么看都没有发现哪里不一般?不一般….
但是,Excel返回错误值:#NAME?
EXCEL是说,公式里用了名称(NAME)?,但它怎么就没发现定义过这个名称,问我是否搞错了?当然,刚开始,看到错误是不会去理会的,错了就直接盯着公式看,看看哪里是否多了什么头发丝,呵呵。其实,其实这里”及格”、”不及格”这两个参数少了双引号来封装。当缺少双引号封装时,EXCEL就会将其当成“名称”处理,而检索“名称”列表如果未发现有此名称,就报上面的错误了。
这种错误初学时会犯,即使熟练后待头昏脑胀时依旧会犯,而且还查不出错误来,呵呵。所以这个习惯一定要养成。顺便透露一下,真正的”名称”在编辑公式时字体是彩色的,那些单元格引用也是彩色的,所以鲜亮的一般是没有问题,我们查错误时可以把重点放在那些黑白的字符上,看看是否缺了双引号“””,另一种可能就是把函数名拼错了,不过同样符合上面的方向,函数名都是黑白的。
节 2.07 编辑公式之鼠标点选
编辑公式,初学函数时会发觉编辑公式是一件头疼的事情。码字!尤其要输入大量类似“$A$1”的单元格引用地址时,更是叫苦不迭!其实,编辑公式并非一兵一卒都需要纯手工输入,鼠标、“函数提示工具”,复制粘贴、F3粘贴名称(先可以不理会这个概念)、等手段都可以极大的提升编辑效率。

例如上图F1单元格中的公式:“=A1+C1*E1”,这是一个非常简单的公式,但如果每个字符都需要手工输入,那么也是件繁琐的事情,当遇到公式字符几十甚至上百时更是件苦参事。我相信很多同学不怕苦,这很好,但有些事情还出力不讨好的。对于上百字符的公式,如果纯手工码字方式来编辑,那么输入差错就会让人崩溃…公式会不断报错。
其实,这个公式可以如此编辑:F1中输入“=”,进入公式编辑状态,用鼠标单击单元格A1,此时字符A1被直接添加至F1单元格中光标活动位置,此时公式变成:“=A1”,而活动光标顺延其后,这里的关键就是使用鼠标单击动作替代了输入字符 A1,这样极大的提高了输入准确率,尤其当需要变换单元格引用格式,结合F4功能键,就能简化 “$” 的录入。依照该方法,可以比较快捷准确的录入上述公式。详见动态图:
使用鼠标点选单元格来提取单元格地址,除了便捷外还有一个特点就是格式准确。其格式准确的优点在下文介绍INDIRECT函数时还会讲到,是一项非常实用的技巧。
5编辑公式附件
节 2.08 编辑公式之函数提示工具
手术台可以用来砧板,但只把手术台拿来当砧板就不能物尽所用了。前文介绍,通过”函数提示工具”的函数名可以用来访问函数帮助,但“函数提示工具”的作用却远不止于此。
编辑公式时,在输完函数名及其左扩号时,对应的“函数提示工具”就会弹将出来,如果没有那很可能是你输入的函数名有误(这个也很重要,不是吗,呵呵),并且第一“形式参数”字体加粗变黑,当输入“,”后,第二“形式参数”加粗变黑。这一点在编辑嵌套关系比较复杂的公式时相当有用,有定位指示的作用,否则自己都会迷茫,不知道在编辑哪个内容了。
请看下图,注意输入函数的”(“时弹出对应“函数提示工具”,当输入函数的”)”时关闭对应的“函数提示工具”,(如果有)弹出外层函数的“函数提示工具”,当输入参数分隔符“,”号时,相应的提示工具的形式参数字体加粗变黑。
以上这点只要心细留意就会发觉,作用方向为编辑公式对“函数提示工具”的影响。反方向的应用同样具有极强的实用性。单击“函数提示工具”上的形式参数,就会选定对应的参数字符,这是一项非常有用的功能,不仅可以用来审查嵌套层次是否符合编辑思路,如下图所示:

同时使得可以直接使用CTRL+C来复制代码段。如果在同一公式中对某段代码要多次使用,那么这是相当有用的。虽然可以使用鼠标来手动选中目标代码,但这大大增加了出错的概率,而且会打断思路。—-这是个小技巧,但非常实用。如下图所示。

插一句,让我在没有“函数提示工具”的EXCEL版本上编辑公式,我常常崩溃…写完公式后就被拖入无尽的查错恶梦中。
F3功能键,按F3功能键就能弹出当前可用的名称(“名称”可以理解为一个变量,封装了一个公式),然后就可以直接使用鼠标选取需要的名称到正在编辑的公式中了。这么做同样是提高了录入时的准确率…同时,另一个好处依然是不会打断思路,因为不用去思考到底为某个特定功能的公式取了什么名字。
这里提到了名称,蜗牛为梦想而生,对于名称我的感觉就是“名称”为函数公式而生。大家先有个印象,以后碰到了要和名称多亲多近,搞好关系。名称用多了,名称会保佑你的!
最后再介绍一个功能键,F2,F2的功能就是进入编辑状态,虽然在单元格编辑公式时显示不出有什么用,当在基本菜单功能的对话框编辑公式时就比较有用。省去了腾出手去控制鼠标进入对应公式编辑框中,这看上去没有什么,但相信我,以后你会觉得很好用的。
节 2.09 编辑函数公式的策略
关于编辑函数公式前面已讲了函数公式中的字符选用、码字、审核结构的技巧,这里将一下策略。对于比较简短公式策略师用不到的,当需要编辑的公式比较复杂,需要中间打断一下的时候策略就比较有用。
这里的策略是指构建函数公式时的一种停顿处理。在编辑一个复杂的公式时,如果没有编辑完成,但又已经编辑了很大一段,这个时候如果确实需要停顿一下也是很正常的。但这个时候按公式编辑栏的√吧,直接报错,按×吧,先前努力付之东流…进退不是,甚为苦恼呀。
如果单纯是需要停顿,有一个比较简单的方法,方法简单,但比较解决问题,在公式前导符“=”之前插入一个空格即可。如此,单元格的格式属性就变了,原先是功能性的公式,现在就变成了普通文本,这样就为中场休息提供了保障。也许有些同学会说,“倒,这也算技巧?”,呵呵,确实比较简单,但还是挺有用的。
第二,不是时间上需要停顿,而是思维上需要停顿,这个也是很正常的。在写一个比较负责的条件公式时,分支多,层次深,很难一下子把公式全都书写到位的,这个时候可以使用“空文本”的方式先来填充,或者使用一段有意义的字符串先来占一个位,这个也是非常重要的。这样就在思维上将一个复杂的问题切割成几块来解决,降低了思维上的难度。
在编写函数公式的过程中,及时将完整的可重复利用的模块用名称封装起来也是值得提倡的。可以先有个印象,以后介绍名称后可以尝试。在书写复杂的公式时,你会对这句话有深一度的了解。那时很可能先把小的逻辑模块封装好,再使用这些小模块来堆砌我们的函数公式的。
===========================
此处没有补上贴切的图,征集呀….因为根据经验,后来自己是没有心思处理细节的,不过也不一定,呵呵
节 2.10 审核公式
公式编辑完成,但EXCEL一个劲的报错,这个时候就需要审核公式了。这时的主要问题就是函数结构层次错误,具体的说就是那些左右括号所在的位置和预想的不同,导致语法审核不通过。比如说,IF函数它应该有三个参数,那意味着它的括号内部应该只有2个逗号,如果由于某种查错导致一个括号内有4个参数那么它就会报错了。
这时就要审核函数公式的逻辑层次了,或板块层次。使用什么工具呢?—-“函数提示工具”。可以从最外层函数开始,利用单击形式参数直接选中对应代码块的特性,查看各形式参数的结构布局是否符合要求…然后依次逐层剥茧,很快就能找到错误所在了。这是个小技术,但非常有效,多使用几次提高信心后效果更佳!
此处征集使用该方法解决嵌套错误的实例!
当然,要尽量避免这类错误还是有方法的,就是养成良好的书写习惯。每输入一个函数,输入左括号后直接输入右括号,然后再填充参数。这样就会大大降低此类错误的发生。当然,没个人都有自己的喜欢,这个不强求。
如果审核通过,但返回值与预想有差别,那么依然使用以上手段,首选查看函数结构是否符合要求。如果这一步通过没有问题,那么就需要使用新式武器了,F9功能键。这就是论坛中常提到了独孤九剑。
对F9,独孤九剑 如果没有感性认识的话,请看下图,这是热心的 Fehr 提供的

这里提一下,在EXCEL中对于公式审核有很多工具,我曾经也使用过其中的“公式求值”,但接触F9功能键后我就只用该工具了。理由:简单方便,让我觉得自己是一个剑客,而不是一个机械化工具的操作员。工具的关键不是在于它有多强大,而是用得趁手,简单有效。伏羲造八卦,只用了3位二进制数字,用了最简单的符号,因为太过复杂的东西对大多数人来说是没有意义的。这里也是一样。至少到目前为止,所有的审核,纠错我就只使用以上这两个主要工具。
又为大家节省了很多时间爱你学习哪些复杂的审核工具。好在我们只求实战,如果考试的话估计要吃亏的,但考试真那么重要吗?
F9的使用依然是和手术台(函数提示工具)密不可分的,手术台结合鼠标为其定位攻击方向,锁定目标(直接抹黑选定目标),然后直接F9执行运算,查看是否返回错误值,或者返回值是否合理。F9和手术台绝对是天生一对,可谓人为鱼肉,我为刀俎呀。
此外,作为一个剑客,还需要犀利的目光。进入单元格编辑状态时,公式中的各成分会着上五彩的霞光,同时长城内外,大河上下,目光所及,那些被公式引用的单元格及单元格区域也将淡妆浓抹,光艳照人。凭借这些可以查看,公式的引用区域是否正确,公式成分是否有误…
这里提到的工具相当简单,但假以时日不断磨练很快就能练就一身厉害的厨艺,为你的函数公式历程增添光彩。
需补充一些图片让其更加精彩。
====================================================================================
配合使用 函数提示工具 和 F9 可以将逐层对逻辑块求值,这里可能又涉及一个回退的问题,就是怎么将 F9求值结果返回为原始公式代码? 记得可以使用CTRL+Z,另一个更彻底地是按公式编辑栏中的 叉叉 ,这样一次性返回到原始状态—即纯函数公式状态。其中那个 单击 叉叉×,可以用 ESC键替代。
这些都是小技巧,但很实用。
节 2.11 飘逸的剪切
在前文桩功练习中,我们充分体会了公式复制时,其引用的单元格地址会根据不同的引用方式而随之变化。经过“函数初识”篇的附件练习,相信这一特性你已经掌握得差不多了。这里再分享一个有趣的事情,以“剪切-粘贴”方式,记住是剪切而不是复制,来对数据源进行重新布局,这个时候我们会发现这个动作居然可以直接修改宿主单元格的公式,奇哉怪哉!也真是太好了,不需要因为稍稍的变动而一一修改目标公式了。
如图所示。
看到这个现象,你有什么想法吗?感觉“奇怪,奇怪…”,但就是没有什么想法?这里可能蕴藏着很深沉,很本质的东西,大家可以想想,猜想,遐想…当然,这个对于成为函数高手没有多大关系,但有点想象力总是好的,生活就不会无趣了。
猜想的东西往往是错的,但只有大胆的猜想才能发现新的东西,这个是更重要的。
这里我抛砖引玉一下,这个也是刚刚想到的:
1.目标公式在提取引用单元格的值时,并不是直接从工作表上按地址行列来取的。
2.引用单元格和目标公式之间是通过第三方关联起来的,这个第三方估计是内存。
3.引用单元格1—链接1—对应内存—链接2—目标公式,剪切时只是链接1得到了更新,链接2是没有断的,所以公式能自动更新单元格引用地址。
4.内存中一定包含行列信息。
仅供参考与讨论。
本节,大家只要感受一下剪切的飘逸即可,到时省得大面积修改公式。希望你喜欢
6 飘逸的剪切附件
节 2.12 璀璨的项链,灵动的挂坠

此处征集赞美词,先胡诌一段。
你是不世的红绳,为珍珠玛瑙牵线;你是绝世的搭扣,成就璀璨的珠链;你是电,你是光,你是唯一的神话,我只爱你,you are my super star! 是你!成就了函数公式的节节贯穿、变幻莫测、充满灵气。
先罗列一下在函数公式中可以出现的独立成分:函数、运算式、单元格引用、名称、”字符串”及运算符等。除“运算符”以外,其他成分可以直接使用 & 来拼装,组合成一个新的字符串,由于可以自由组装,使函数公式极具智能性。字符串在函数公式中具有特殊的地位:
1.她是信息的承载者,比如公式“=if(a2>60,”绿灯”,”红灯”)”中,函数返回值就需要使用”字符串”来承载,这是基础。
2.有很多函数的参数类型是字符串,这就为字符串创造了广袤的用武之地。
比如公式:”=sumif(a2:a21,”>60”,a2:a21)”,其第二参数是字符串,值为”>60”。这里逻辑比较符”>”和比较值“60”可以分割成两个更小的逻辑意义,这样可以为公式增添智能性。由于,A1单元格存储不同的逻辑比较符,b1单元格存储不同的比较值,那么上述sumif函数的第二参数可以如此细化:”>60”=”>”&”60”=a1&b1(字符串”>60”相当于将字符串 “>” 和 字符串 “60”连接(&)起来,如果 a1单元格 承载了 比较符号 “>”,b1单元格承载了 比较数 60,那么就可以表示成 A1&B1了。关键是说,把逻辑细分以后可以更加灵活了。),这样在无需修改公式的前提下,简单设置A1,B1单元格的内容就能表达新的逻辑意义了。
3.EXCEL有一族字符串处理函数,比如:left,right,mid,substitute,find,len…使得字符串可以进行精细化加工,这是技术保证。比如,上述单元格B1值为“分数60”而不是直接的“60”,这样有点就是可读性增加,这个时候上述SUMIF的第二参数就不能直接使用 “a1”&”b1”,但经过处理可以修改为”a1”&mid(b1,3,100)。这样有了技术上的保证,大大增加了灵活性。
爱上&吧,她会给你自由。
这里大家也可以揣摩,很多函数公式的参数类型设置为文本字符串,其中应该也是看上了字符串处理的灵活性。
当然啦,想戴项链还是下载附件尝试一下吧。
7 灵动的挂坠附件
节 2.13 格式转换
格式转换主要是指将文本型数字数字转换成数值型数字,或者将数值型数字转换成文本型数字。实际应用时碰到前一种情况比较多,但从思路和技巧上来讲两者是想通的。
文本型数字在单元格中一般靠左对齐,并常有一个绿色小三角标记;数值型数字在单元格中一般靠右对齐。其实,站左站右俺到不在乎,关键是公式处理时他就区别对待,如下图所示:

那怎么办呢?进行处理改造呗。核心思想就是让数据参与运算,在运算的过程中EXCEL自然会将其调整为合适的格式类型。数值运算(+,-,×,/等等)自然是将操作数转换为数值型数字,文本运算就会将操作数转换为文本型数字。而我们要得到的效果往往仅仅是格式的转变,其他均保持不变。于是,要转化为数值型,可以用+0,×1,—(双重求反)等,而要转化为文本型自然可以使用 &””,其中“”””表示一个空文本。如下图所示:

使用基本操作也可以转换格式,比如使用选择性粘贴:就是复制一个空白单元格,然后以选择性粘贴-运算-加的方式 粘贴到目标单元格,将目标区域文本型数字转换成数值型数字。这个时候实质依然是使用了数值运算,让Excel强行转换了合适的格式,如下图所示:

此外,还可以使用数据-分列功能,将文本型数字转换成数值型数字,我想是否可以将分列也看成是一个运算呢。这个不管,反正基础操作时使用分列也可以实习格式的转化。
自然选择,选择的依据自然是哪个简单、方便用哪个,所以大家以后经常会看到—,+0,*1,&””等比较特别的字符,这个时候往格式转换上想想,也许就知道其用意了。
此外,逻辑值TURE,FALSE和1,0之间的转换也是经常要做的。数据在函数公式之内流淌时0、1比TRUE、FALSE具有更好的通用性。比如在SUM函数中直接对逻辑值求值返回0,这显然不是我们想要的,对逻辑值进行转换以后就能返回正确值了。另有如,在MMULT函数(这是个强大的函数,有个印象就行)的参数必须是数值的,所以很多时候就要将生成的逻辑值返回为1、0.不过,万变不离其中,让他们参与运算!请看下图:

上图中的数据源攫取自monvzhilei 兄的 ]计算机等级考试题目汇总的第2楼,本帖以后还会继续借用这个帖子的附件。里面的考试题也正好可以用来练手,呵呵。
8格式转换附件
节 2.14 功能性符号的作用
公式中很多字符是功能性的,比如 函数的左右括号,+ ,-,*,/,””,单元格引用。但如果他们成为了字符串内容(就是用””扩起来的那种)的一部分,那么他们就是普通的文本字符了。这种差别就像 功能性 的字符是一个活生生的活物能执行一定的任务,而充当字符串的字符,就像是标本,或者是画中之物了,失去了活性。
& 是一个字符串连接符,是功能性的,B4是单元格引用也是功能性的,用来替代B4单元格的数据,但 “&B4” 用引号将它们束缚起来以后他们就是普通的文本的。
现在明白了吗,揣摩一下,尝试一下自己的理解。这样就能真正看懂他们的意思了,而不会是简单拼凑了。
节 2.15 形参表达中的玄机
形参,调出一个函数的“函数提示工具”就能看到形参列表。根据形参的英文描述,我们就能拼凑出这个函数的功能,进而回想起这个函数该如何用,例如SUMIF函数和VLOOKUP函数
SUMIF(range,criteria,sum_range)
翻译:
SUMIF(区域,关键字,汇总区域),再根据SUMIF(汇总?条件?),那么自然就能拼凑出这个函数的功能,对“range”进行“criteria”约束,并对“sum_range”汇总,简称为SUMIF(条件求和)。
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
翻译:
VLOOKUP(查找值,表格数组,(表格数组的)列索引号,区域的查找(方式)),这里个人感觉range_lookup 换成table_lookup应该更贴切。
这样组词造句也就比较难走样了,大约就是根据vlookup_value,在table_array中查找。如果想到V代表垂直
,那么也不难揣摩查找应该是按列,并有理由相信是第一列去查找,然后返回col_index_num字段的元素,再确定
查找方式range_lookup,这里 range_lookup=0(0有种无差别的感觉),于是可以联想为精确查找,range_lookup<>0时就是不精确查找(模糊查找)。当然,熟悉函数以后会发现精确查找一般都是查找方式设置为0。
这样,只要用过一次VLOOKUP函数,吃过这块三明治,那么我相信再次见到它时我们马上还能回味出它的味道。
刚开始的时候做到这样就足够了。当然如果有精力,我们还可以再从这些形参描述中提取更多信息。节
能减排么,充分利用资源自然是很重要的。
再看SUMIF的形参,range,criteria,sum_range,有发现什么特点吗?呵呵,如果是初学,又仅仅看到一个函数的形参是不能发现什么规律的。找规律也是有技巧的,要学会归一性原则,就是控制一个因素变化,其他因素都保持不变,然后才能让这个因素的影响显现出来。
有点扯远了。我们这里可以粗糙的划分成两类(应该可以划分更精细,有兴趣者可以尝试,我没有深究下):形参类型 描述,形参功能 描述(这里纯是我自己擅自划分的,不具权威性,只是为了能让大家从形参中再得到些东西)
SUMIF
range:形参类型 描述,形参类型为 单元格区域;(这点是本节重点)
criteria:形参功能性 描述
sum_range:这个是带有 功能修饰的形参类型 描述,偏正短语,也归为形参类型 描述。
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
lookup_value:形参功能性 描述
table_array:带有功能修饰的形参类型 描述,偏正短语….
col_index_num:形参功能性 描述
range_lookup:形参功能性 描述
大家看了还是会觉得紊乱,惭愧。归纳一下,形参主干是 range、reference或array、vector的我这里称它们为形参类型描述,这里range、reference是的要求是单元格区域或引用,这个要求比array、vector要严格多了,所以很多初学时感觉很亲切的函数,在以后学数组公式时会发觉其参数限定是太死板了。我自己揣摩,这些函数可能就是为初学函数的同学配置的,他们的优点也很鲜明,使用简单。
这里讲玄机了,功能性描述的参数不要求是单元格引用的,所以不会带来参数类型限制造成的麻烦,更重要的是以后可以通过该参数的数组化来实现函数的数组应用。形参为类型描述的,且主干词为range、reference的就要求参数属性是单元格引用了,于是就不能使用纯数组(这里只是却别于属性为单元格区域的特殊数组),在数组公式应用时会有很大限制。
看个例子:SUMIF,COUNTIF
先感叹一下,本台电脑Snagit不能用,实在烦心,先文字表达,上附件,有空换台电脑再不上。
比如在A1:A10单元格中依次输入了数字1-10,然后写了一个条件计数的公式:=COUNTIF(A1:A10,”>5”),结果正确,返回5,但如果你尝试:=countif({1;2;3;4;5;6;7;8;9;10},”>5”),想想应该也对吧,但EXCEL就会报错,这个时候你就很快就会意识到可能第一参数直接写这样的 常数数组 是不对的。(这当然是得益于归一化原则的好处,就这里一个地方不同,人家用单元格地址是对的,你用常数数组不对,那就是常数数组不对了)。而这里的根源就是COUNTIF的第一参数是要求range的。
这个时候可能有朋友会说,不错不错,但这样的错误一般不会去犯。恩,这是最直接的情况,当然很少回去犯,即使犯了也很快会意识到错误所在。但完成一个任务,函数经常是像积木一样灵活组合的。就是说,那个常数数组你是不会直接去用,但如果嵌套时,COUNTIF的第一参数是由其他函数的返回值充当的,这个时候这个错误就具有隐秘性了,不太容易发现。
如:我们使用嵌套,依然是条件计数:=COUNTIF(OFFSET(A1,,,10,),”>5”),这里OFFSET函数返回的是一个单元格区域引用,所以结果正确。(OFFSET如果不熟悉,那么建议使用前文介绍“自学函数”一文自我修炼一下,这个函数很灵活,在初级阶段你回爱上他的,呵呵)
另一个公式: =countif(match(A1:A10,A1:A10,0),”>5”),这里MATCH函数返回结果作为COUNTIF的第一参
数,但这个返回结果的属性是纯数组,没有单元格引用的属性,所以报错。
在这个情况下要迅速扎到出错根源相对就难了,需要一定的积累。所以,我觉得通过本节大家多留心,知道有这么回事,那么出现此类错误时可能就会想到了,那就会大大节省你的时间。
本节就是留心留意函数参数类型,重点关注range、reference的参数类型,这些是有限制的。爱她,更要了解她,强迫她做他不能做的事情显然是要搞僵的,呵呵。
另外,本节提到的 归一性 法则很有用,尤其在纠错、统计分析某些规律的时候
==========================================================================================
节 2.16 参数类型的玄机续:
形参类型为array(数组)、vector(向量,其实就是一维的数组,就是说也是数组)就比较灵活了,用单元格区域引用可以,用常数数组可以,用数组公式传递的内存数组也可以,这就大大的加强了这类函数的功能。因为函数要实现某种功能主要还是要组合运用的,要实现复杂的功能的更是数组来数组去的,因此参数是否能接受内存数组将大大影响这个函数在数组公式应用中的地位的。
=vlookup(lookup_value,table_array,col_index_num,range_lookup),这里的table_array就比较好伺候了,大家可以看下图:

上图表达的是根据 姓名 返回 学号,这里函数有点吃不透不要紧,这里的重点是说array类型的参数比较好招呼,这里用CHOOSE函数返回了一个array,完成的任务是让 姓名 位于第一列。
功能性描述的参数也不限定非得使用单元格区域。使用功能性的词来描述参数也许正是因为Excel没有必要强调他非得是单元格引用吧。这类参数可以试探性使用常数数组或内存数组以实现数组应用。这话听上去没有什么,但看一下你会比较有感觉的。

本贴续的部分两个公式都比较难,有兴致的同学可以揣摩一下,如果有点领悟也算是数组公式有点启蒙了,呵呵。
上面列了一个VLOOKUP函数的语法结构提示,也许有同学会感叹“胡版好耐心”
,“一个一个码字,而且丝毫不差,佩服”。其实这里有一个快捷方式将这个 函数提示公式 直接复制到单元格的。具体过程就是在调出 函数提示工具 时按

上图中快捷键应该为 Ctrl+Shift+A,有空立马改。算了不改了,算是清晰地记录吧,呵呵


参数类型附件
参数类型的玄机附件
节 2.17 闲谈错误值
错误值,相信很多朋友都不陌生,尤其当一次次的报错却找不到根源,甚至连让我们挥剑(F9)除魔的机会都不给时,这种挫败感更是让我们记忆犹新。
首先,我想说“错误值”是朋友不是敌人。虽然它的直率和坦诚常常让我们接受不了,但毕竟忠言逆耳么,至少它及时告诉我错了,这也是个重要的信息。信息社会就要充分利用信息。首先,我们来看一下“实战技巧精粹”中罗列的错误值,看看这些信息是否可以帮助我们更快的找到病因,从而对症下药。

春花、秋月…挨个过过场,我们来点评一下,呵呵。
#####
时间值列宽不够:
这个简单,大概大家也接触过。一般将鼠标指向列标边沿,当指针变成左右箭头时进行双击,列宽会自动调整到合适大小,#####也就恢复真容了,如下图所示。

使用了“负”的日期或时间:
这也不难,看到返回值为#号并列,如果不是列宽问题,那么我会直接给它一剑(使用F9功能键求整个公式的返回值),看看到底是什么值。本情况显然是负值了(而单元格格式设置了日期类型)。这种原因也许可以扩展为在单元格格式为日期类型前提下,单元格数据不符合日期的数值要求。
#VALUE 使用的参数或操作数类型错误
说真的,这个原因看上去很明白,但不是很真切。所以我觉得还是得去咬一口,呵呵。任意选一个单元格,输入“=”文本来运算”+1+”应该算操作数类型错误吧””。“当然这个也太BT了,实战不可能这么写的?”“呵呵,但可以感受一下其所谓的 操作数类型 错误,如下图所示”。

当然,出现#VALUE值的另一个可能是没有以 Ctrl+Shift+Enter 三键方式输入数组公式。所以,我看到#value,第一个反应就是进入单元格编辑状态 然后按一下 Ctrl+Shift+Enter,如果依然报错再深入分析。
#DIV/0!
这个就不用讲了吧,简直就是一个象形字,除数为零,太简单了。再讲就侮辱大家的智商了,呵呵。
#NAME? Excel未识别公式中的文本
这个也有点象形字的意味,NAME(名字),?(有误)。这个前面讲过,一般不是函数名拼写错误就是字符串忘了加双引号,以至于Excel找不到对应的函数或名称。
#N/A 数值对函数或公式不可用
这个描述又是那种看上去明确但不是太真切。详细的大家可以查帮助,如果嫌烦那就屈就听我比较片面的理解吧。缺少数据时就会出现这个#N/A,其他的原因没什么印象。比如选中一列5个单元格,输入=row($1:$4),按

#REF! 引用的单元格无效
在讲格式类型时提过,有种类型是refenrence(引用),这样简写就成了REF,在其后面意味深长的加一个“ !”绝不是表示感谢,而是一种激愤情绪,如是可理解为,”引用呢?,你的引用无效!”。
这种情况一般也简单的,进入公式的编辑状态,这个时候就能看到很多参数的位置出现了#REF。很明显公式中的这种#REF绝不会是我们自己输入的。一般是在公式拖拉复制的过程中产生的。举个例子,如果我们在A18单元格中输入公式:“=H2”(能说明问题就行,就用最简单的了,呵呵),然后往上拖拉复制,这个A17的公式自然变成“=H1”,那么A16的公式呢?“=H0”?,显然Excel也不知道该怎么表达了,所以就是用“=#REF!”来报错了。如下图所示

另外一种稍微隐蔽点,就是”#REF!”不是由单元格引用变异来的,而是由引用函数返回来的,如公式:=OFFSET($H$2,-ROW(A2),) 在往下拖拉复制时就会报 #REF!错误,但进入编辑状态却看不到直接的#REF!,如下图所示

这里大家不用太认真的去记,有个印象就行,后面会介绍一般的处理过程。
#NUM! 公式或函数中使用无效数字值
这个没有什么印象,大家可以查帮助,字面理解可能是 参数类型 不对,需要 数值(NUM)却未被满足,于是它就开始叫嚣,“注意数值格式!”,呵呵。
#NULL! 指定并不相交的两个区域的交集。相交运算符为空格
这个与其说是一个错误,不如说是一种返回结果,可以直接加以利用。因为它表示两个区域不相交,显然这也是一种明确可利用的结果。
这里值得一提的倒是交叉运算,既然碰到了,就做个介绍,如下图所示。

===================================================================================
待续
简谈错误值附件
节 2.18 闲谈错误值-续
在前文的“闲谈错误值”中,我们首先指出了“错误值”是友不是敌这个基本立场,随后对各种“错误值”进行了点评,以期让大家对“错误值”有个概要了解。比如,看到#####能想到和日期有关,看到#REF!想到和引用有关,看到NAME?就想到函数名拼错或字符串遗漏双引号等等。
这里我们讲一下对“错误值”进行跟踪追击的一般思路,及其对错误值的利用。我目前从事的工作是和告警相关的,厂商在上报告警时有这么一个普适的规律:一个模块的众多信号量中只要有一个告警,则整个模块就显示告警;当一个设备的众多模块中有一个告警,则这个设备就显示告警;当一个机房的众多设备中有一个设备告警,这个机房就显示告警。“错误值”也是一种告警,所以我尝试将这个规律移植到公式上报“错误值”的机制上。
如果把一个机房等价成一个公式,那么我们所谓的跟踪“错误值”就是要找到那个最底层的告警信号。于是,首先查看机房中哪个设备在告警,定位故障设备后再定位哪个模块在告警。这样顺藤摸瓜,就是让故障点无处可逃。在公式中就是先查看错误值根源自公式的哪个并列成分,假设这个成分是一个多层嵌套的函数,那么就再查看是其哪个参数报错,这个参数值本身可能又是一个嵌套函数…但不管如何,这样层层剥茧的方式一定可以找到真凶,然后加以根除。
在搜索错误值时使用的武器还是F9,不过这里需要不断的配合
此处征集一个插图,用来表示逐层剥茧的纠错过程。一时想不起好的例子,惭愧…
这里再提一个技巧,一般练习时是碰不到的,但真正实际使用时可能就会碰到。我们使用F9来核查对应的逻辑块是否是错误值,但当F9的执行对象返回的字符过多时就无法进行正常显示。这个时候就到了前文所说的“连让我们挥剑(F9)除魔的机会都不给了”。怎么办呢,最彻底的方法就是把这个模块单独拎出来,让他显示在单元格区域中,这招还是很有用滴,是公式编辑中组装、拆卸的思想。不过暂时你可能也用不上,留个印象就行了,呵呵。
上面是纠错的一般思路,当然要练就好的嗅觉还是要多练,积累。下面我再将一下对“错误值”的利用。“错误值”还能利用索?也许你会这么问。是的,“错误值”也是一种信息,就像面无表情也是一种表情。如上文介绍的#NULL!,其实他也明确的提供了有效信息:没有交集。然后我们可以根据这个判断进行后续处理。
这里介绍一个函数,ISERROR,分解一下 IS(是),ERROR(错误),合起来就是“是错误值”,如果参数(一般就是一个复杂函数)确实是错误值,那么ISERROR函数就返回TRUE,否则就返回FALSE,这个很好理解。使用这个函数可以用来“美化”公式。如下图所示:

上图要达到的逻辑是,根据F3的“姓名”值在左表姓名列中进行匹配(MATCH),返回对应的位置,再根据这个位置返回学历列的学历值。如果匹配不到,就会出现错误值 #N/A,就比较不美观,于是可以使用IF(ISERROR(处理公式),匹配不到时的处理,处理公式)这样的结构来美化。大家可以下载附件好好练下手,也熟悉一下前文介绍的 函数提示工具 、F9、Ctrl+Z的组合应用。
简谈错误值-续附件
纠错是需要一点想象力的,比如你的错误值 #N/A,缺数据,如果能解读出EXCEL的意思“ vlookup_value 值,在表格中并未出现”就会尝试去核对两个数据了。我一般会 =单元格1=单元格2,先来看看是否相等。
其实要查错误,一般的过程就是把公式的执行过程去“走一遍”,利用F9,这样就能找到症结了。这里VLOOKUP查找,你就收工 CTRL+F,用查找功能找到对应的有空格的数据(如果数据量多的话就要查找功能了,本列就不用跑流程了),然后比对一下是否相同,呵呵。
节 2.19 玉不琢不成器
“玉不琢不成器”,这里是指复杂完美的公式不是一蹴而就的,而是不断修改、雕琢出来的。
初学函数公式时我也感叹:那些函数公式的高手真是太了不起了,这么长的公式可以直接写出来,佩服佩服!但现在我想,除了个别已经成型的函数组合应用外,碰到新问题一般都是一步一步雕琢出来的。这个过程需要活跃的思维、熟练的公式编辑技能,是公式综合编辑能力的体现。
纯语言描述非常空洞,我们就那一个具体的实例吧,所要完成的任务如下图
所示:

具体讲就是要把左图转换成三列,第一列为X值,第二列为Y值,第三列X、Y值所对应的数据。要求在H2单元格写入公式,然后向左向下拖拉单元格公式进行填充完成三列。
写公式,尤其只是为了更好更快的解决问题,随时定义名称是一个很好的习惯,增加可读性便于维护。下面我们来定义几个名称,顺便让大家接触一下名称,不至于后文中提高时过于突兀。
X:引用地址为$B$1:$F$1; Y:引用地址为$A$2:$A$10; DATA:引用地址为$B$2:$F$10;
具体过程如下图所示:

当然,定位名称的方式有多种,这只是其中最通用的一种。如果是03版的,原理也是一样的,菜单入口为“插入”—》“名称”—-》“定义命名”。如此定义名称后,就可以直接使用X、Y、DATA来直接指代那些单元格了,编辑公式时更是可以利用F3功能键来快捷准确的录入了。顺便补一个利用F3编辑公式的贴图吧,呵呵。

图中停顿处是按了 F3 ,调出了“粘贴名称”对话框
好了,回到正题。我们的任务是要完成三列,那么先分解一下,先写第一列。
步骤1在H2单元格:=INDEX(X,,ROW()-1),值为A,满足要求。然后往下拖拉复制,这个时候马上会发现,H3单元格的值为B,不符合。这个时候很容易想到INDEX函数的第三参数必须重复9次(就是Y数组的个数,ROWS(Y))。
步骤2修改,H2单元格:=INDEX(X,,(ROW()-1)/ROWS(Y)),这个时候返回显然是错误值,此时马上会发现第三参数小于1(修改时直接添加1),并且也马上会想到不是整数(修改时外套INT),于是再修改。
步骤3修改,H2单元格:=INDEX(X,,INT(1+(ROW()-1)/ROWS(Y))),然后再往下拖拉公式,开始都正常,但是在H10单元格时返回值变成了“B”而不是预想的“A”。
此时,仔细分析,第三参数INT(1+(ROW()-1)/ROWS(Y))=int(1+(10-1)/9)=2,这个时候就是希望在ROW()=10时能等于1,因此也不难想到再修改(将ROW()替换为ROW()-0.5)。
步骤4修改,H2单元格公式:=INDEX(X,,INT(1+(ROW()-1-0.5)/ROWS(Y)))
整个编辑过程可以如下图所示,当然啦,实际编辑时没有那么快速的,会有点停顿思考的,呵呵

大家也看到这里的关键就是抠出INDEX的第三参数,就是表格中DATA对于那个的列。
这样第一列就算完成了。
第二列,大家可以根据这个思路尝试一步一步雕琢,预祝大家成功,呵呵。
最后I2的公式为:
=INDEX(Y,IF(MOD(ROW()-1,ROWS(Y)),MOD(ROW()-1,ROWS(Y)),ROWS(Y)))
关键1:他是循环的,于是不难想到用MOD,由于MOD会 出现0,我们把这个出现0时换成ROWS(Y)就行了。
其实,这里的关键是抠出INDEX的第二个参数,就是表格中DATA对应的那个行。
第三列,行列都扣出来了,第三列就最简单了。
最后J2:=INDEX(DATA,IF(MOD(ROW()-1,ROWS(Y)),MOD(ROW()-1,ROWS(Y)),ROWS(Y)),INT(1+(ROW()-1-0.5)/ROWS(Y)))
其中INDEX的第二参数使用了第二列公式中INDEX的第二参数,第三参数使用了第一列公式中INDEX的第三参数。
完成了吗?也许有同学会问,不是最后要合成一个公式吗?那还不简单,用IF判断所在列,然后填写对应的公式就可以了。这里我再秀一下IF函数,顺便大家再熟悉一下名称定义,引用地址是公式,呵呵。
将H2中的公式定义为“X公式”。
步骤1选中H2单元格,进入编辑状态,复制整个公式。
步骤2开启“定义名称”对话框,或者直接进入“名称管理器”对话框,新建名称,名称名称,如“X公式”,然后在“引用地址”文本框中粘贴刚才H2中的公式。

按以上介绍方法依次定义“Y公式”、“DATA公式”。
然后在H2单元格中输入=IF(COLUMN()=8,X公式,IF(COLUMN()=9,Y公式,DATA公式))
看图

============================================================================================
大家不要太看重这个例子本身,这里主要讲函数公式不是很一蹴而就的,是不断修改雕琢的。当然里面有些东西你没怎么接触的话正好熟悉熟悉(比如定义名称什么),这倒是很有用的,呵呵。
玉不琢不成器附件
玉不琢不成器-IF提高2003附件
节 2.20 君君臣臣 父父子子
不知道大家是否听说过“OSI网络七层协议”,就是那些什么“物理层、数据链路层、传输层…”的结构体系。可能大家一听到这些层的第一感觉就复杂,其实这是一种创造性的思想,用来对付更加复杂的数据传递和处理的。
在这个体系中,每个层只要完成特定的任务即可,人际关系也非常简单,就是从上一层接收数据,处理数据,把未尽事宜交给下一层。这样对维护管理就非常有利。
如果大家对这个例子不熟悉,那么我再讲一个例子,例子原型采自《明朝那些事》。作为一个村长,每天的工作就是从村东走到村西进行巡视,看看李家门是否忘了关,孙家小两口是否在吵架,然后有重要事情就向乡长报告;作为乡长,每隔一天对各个村进行巡视,听取各村长的报告,然后有重要事情就向县令报告…这样一级一级,最后就到丞相、皇上那里了。
在这里,每一个级别的官职就相当与一个OSI结构中的层,我们也可以对应成公式中的一个函数。如果某函数A充当了另一个函数B的参数,那么函数B就可看成函数A的父函数,如果函数A的某个参数又是由另一个函数C充当的,那么函数C又是函数A的子函数了。如果函数A有多个子函数,如C1,C2,那么他们之间就是兄弟函数了。
啰嗦了很多,关键是抓住一点,这个是本节的关键,而且在日后编写复杂的数组公式时对理清数组结构非常有帮助。看一个公式,每一次焦点都放在一个函数上,只要关心它的父函数与子函数即可,而它的爷爷函数和孙子函数,以及兄弟函数等都不用去理会,这样就能有效的集中精力进行重点分析。
模块化思想是层次体系的基础,层次体系是对模块的组织。我们这里先来谈谈模块化思想。学一个函数,首先是要了解函数的功能,了解参数之间的逻辑关系,这样写参数时就能根据功能自然的把参数对号入座,对函数理解也就深刻牢固了。但如果要把函数用活,随心所欲的嵌套各种函数来实现复杂的功能就要改变视角。所谓改变视角就是要着眼函数的各个参数,把参数看成一个个独立的功能模块,以模块为单位来逐个填写函数。这样思路一下就会开阔很多,否则往往会被函数本身限制住。这里就是要有一种活字印刷的思想。
以VLOOKUP函数为例,最常用的功能就是“根据一个查找值去一个表中查找,然后返回对应行对应列的值”。了解这个总体功能后再配合“函数提示工具”,写起公式来就会很顺手。活字印刷思想是指各参数部分可以是一个复杂的公式,只要他的返回值是需要类型的类型就可以了。对于查找值,不需要在意它是怎么产生的,只要最后的返回值是需要的类型就可以了;对于查找表参数,他可以是一个区域引用,也可以是一个二维数组,而不要在意它是怎么生成的;同样对于返回列号参数,他是一个数字,我们可以用COLUMN,MATCH等能返回数字的函数来替代完成更智能的功能。
对于初学函数的同学来说把参数分割开来考虑,能一下子开阔思路,能一下子提升函数的运用能力。
有意者请下载本附件,里面以VLOOKUP为例,讲解了模块化思想的应用
vlookup-君君臣臣,父父子子附件 
节 2.21 公式中的单元格引用
Excel关于引用有两种表示的方法,即A1 和 R1C1 引用样式。
(a) (1)引用样式一(默认)—A1
A1的引用样式是Excel的默认引用类型。这种类型引用字母标志列(从 A 到 IV ,共 256 列)和数字标志行(从 1 到 65536)。这些字母和数字被称为行和列标题。如果要引用单元格,请顺序输入列字母和行数字。例如,C25 引用了列 C 和行 25 交叉处的单元格。如果要引用单元格区域,请输入区域左上角单元格的引用、冒号(:)和区域右下
角单元格的引用,如A20:C35。
(b) (2)引用样式二—R1C1
在 R1C1 引用样式中,Excel 使用”R”加行数字和”C”加列数字来指示单元格的位置。例如,单元格绝对引用 R1C1 与 A1 引用样式中的绝对引用 $A$1 等价。如果活动单元格是 A1,则单元格相对引用 R[1]C[1] 将引用下面一行和右边一列的单元格,或是 B2。
在R1C1引用样式下,列标签是数字而不是字母。例如,在工作表列的顶部看到的是 1、2、3 等而不是 A、B 和 C。
R1C1 引用样式对于计算位于宏内的行和列很有用。在 R1C1 样式中,Excel 指出了行号在 R 后而列号在 C 后的单元格的位置。
引用 含义
R[-2]C 对在同一列、上面两行的单元格的相对引用
R[2]C[2] 对在下面两行、右面两列的单元格的相对引用
R2C2 对在工作表的第二行、第二列的单元格的绝对引用
R[-1] 对活动单元格整个上面一行单元格区域的相对引用
R 对当前行的绝对引用
当您录制宏时,Excel 将使用 R1C1 引用样式录制命令。例如,如果要录制这样的宏,当单击“自动求和”按钮时该宏插入将某区域中的单元格求和的公式。Excel 使用 R1C1 引用样式,而不是 A1 引用样式来录制公式。
打开或关闭 R1C1 引用样式,请执行下列步骤:
启动 Microsoft Excel。
EXCEL2003及早期版本
在“工具”菜单上,单击“选项”。
单击“常规”选项卡。
在“设置”下,单击以清除“R1C1 引用样式”复选框(左上角),然后单击“确定”。
EXCEL2007/2010版本
在EXCEL2010中没有工具菜单,那么,我们可以在“文件”标签下选择“选项”,然后在打开的EXCEL选项对话框中选择“公式”下面的“使用公式”,单击以清除“R1C1引用样式(R)”,确定之后就会发现EXCEL2010的引用模式改为A1模式了。
如果选中“R1C1 引用样式”复选框,Excel 就会将行标题和列标题的引用样式以及单元格引用从 A1 样式更改为 R1C1 样式。
第 III 条 嵌入式应用开篇
函数公式是Excel的精髓,一方面函数公式本身的单打独斗能力就极具威力,尤其在应对突发性事件时表现出的反应速度,更是迷倒千万少女;另一方面函数公式又具备良好的合作精神,在很多基本的内置功能中都能进行嵌入式应用,而这个“嵌入式”让我领悟到“精髓”二字中“髓”的真谛,非常切合。而“嵌入式”应用就能发挥出“1+1>2”的效果了。
没有函数公式支撑的内置功能就缺乏灵性、失去了灵魂,好比一台传统的老机械,只有几种固定的选项设置,已不能满足现代化生产中灵活多变的设置要求;植入函数公式的内置功能,老机械就瞬间变身为数控机床,散发出无限的生机。
本篇将抓住“函数公式”这个核心来简要介绍一些主要的内置功能,重点将放在嵌入式应用时的一些特点。好了,我们一起上路吧。
节 3.01 名称
名称-上天的眷顾
在前文我提到过,“蜗牛为梦想而生,名称为函数公式而生”。真的,我真的太爱名称了,我感觉它为函数公式插上了飞翔的翅膀….
好了,打住了,免得大家把隔夜饭都吐出来了,呵呵。
菜单位置:
03版,“插入”—》“名称”。
07版,“公式选项卡”—-“定义的名称”功能组。
如图所示:

初学基本菜单时总有点蹑手蹑脚,深怕还关联到其他的知识点,心理很是没底。那么,我告诉你学习“名称”时,只要牢牢抓住这个菜单就可以了,把心放下来,不用怕。
定义名称:
1.使用名称框:先用鼠标选中一个区域,然后在名称框中输入对应的名称代号,即可。如果下图所示。

使用名称框来定义名称应该是一个比较快捷的技巧,不过我平时是从来不用的,呵呵。不是贬低这种方式,只是自己习惯了一个好用的方式后就不太原因改变。
不过,刚刚我测试了一下,这种方式只能用来定义比较死板的单元格区域,不能用来定义函数公式,觉得用不少后悔,呵呵。
不过,我觉得使用名称框来查看一些引用位置为“固定的单元格区域”的名称还是比较方便。
2.批量定义名称:选中目标单元格区域,单击“公式”选项卡中的“根据所选内容创建”按钮调出“以选定区域创建名称”对话框,根据实际情况勾选对应的复选框,如下图所示

批量创建名称的优势就是快捷!
在03版中的入口是:“插入”—-》“名称”—-》“指定”。
3.最通用的方式:最通用的方式就是在“新建名称”对话框中进行创建。该对话框可以通过单击“公式”选项卡中的“定义名称”按钮来开启。除鼠标外,也可以通过键盘按
然后就在“名称”框中输入合适的 名称,在“引用地址”框中输入合适的公式。因为可以写公式,那就自由多了,就像剑客手中有了剑,乐师手中有了琴,就尽情发挥了。
如果是单纯替代一个固定的单元格区域,那么就直接在“引用地址”框中敲入“=”然后用鼠标到工作表中选择区域就行,而且可以鼠标键盘组合使用,很方便。也可以单击“引用地址”框右侧的“折叠对话框”控件,然后接着用鼠标来点选。
如图所示
如果单纯是用来定义一个常量,比如税率Tax,那么就可以在“名称”框中输入 Tax,在“引用地址”框中输入当时的税率即可,比如 =5% 即可,这样就可以使用Tax当5%来使用,这样公式就会更具可读性,到时想修改时也只要控制源头,在名称定义中对Tax进行调整即可。
这个管理模式我们其实随处可以看到的,比如将单元格样式应用到工作表中,到时我们想修改工作表中的单元格格式,只要在源头即单元格样式中进行修改即可,修改后的效果会自动传递到所有应用该样式的单元格。
当然,我最关心的是用名称替代一个公式,这样就可以用这个名称来替代这个公式了。当然名称的作用绝对不止是简化而已,下次我再透露。我觉得这个才是定义名称中的秘诀,呵呵。
编辑公式
如果是小规模的公式,大家可以直接在“引用地址”中进行编辑。如果你尝试过在此进行编辑,那么你可能碰到过这样的事情,即左右箭头并不能控制光标,更恼火的是总是输入单元格地址。这是因为当时“引用地址”框处于“指向”模式,要进入“引用位置”的编辑状态只要按
命名规则
名称规则,详细的不用去记忆,本着明确、简洁的规则就可以了。可以用中文,也可以用英文。反正违背要求时EXCEL会自动报错,知错就改就行了,呵呵。要注意的是,不要和单元格地址相冲突,这个虽然也会报错,但有时会一时想不通为什么报错。此外,一些在03版中合法的名称可能在07版中就非法了(如ABC1,在03版中是合法的,但到了07版就和单元格地址冲突了,因为07的行列规模比03有大大的突破,列号最大可以是XFD),这个时候EXCEL会自动在原名称之前添加 “_”以作为其在07中的新名称。
查看名称
上面介绍了,可以在“名称框”的下拉列表中单击对应的名称查看对应的引用区域。除此以外,按
但并不是所有指向单元格区域的名称都会出现在“定义”或“名称框”中,如果名称指代的区域是一个引用函数返回的,他就不会再上面出现。但很多时候,我们还是想确定一下定义的名称是否就是我们预先设计的那样。这个时候我们可以这么做:进入“名称管理器”对话框,选中对应的名称,然后单击“引用地址”框右侧“折叠对话框”控件,就可以看到其实际引用的单元格区域,看图。

如果大家对“引用地址”右侧的折叠对话框具体指代不明确,可以参看下图。

定义名称-上天的眷顾附件 
在2007版本中,对名称的管理进行的加强,按

节 3.02 用活名称的秘密
在上一节我算是正式请出了函数公式的绝配—-“名称”,并做了些基础的介绍,目的是为了初学函数公式的朋友对名称有一个初步的认识。经验中,对一个工具了解的越充分,使用起来心里就越是有底。至少不会彷徨、犹豫,老担心还有什么知识自己不了解。这一点是很重要的,让心静下来,静能成智么。
对名称的进一步介绍我会在下一节继续,这里先介绍一下定义名称的实战技巧。这是和前文最初的桩功密切相关的,桩功是基础,这里在桩功的基础上加了一点:定义名称时必须盯住当时的活动单元格(就是在名称栏中显示的那个单元格地址)!如果在名称中使用的单元格引用地址不是完全的绝对引用($符锁定),那么名称的具体指向或含义就会在不同单元格中漂移!
下图两个实例只是为了说明定义的技巧,使用的都是简单的直接单元格地址引用,但千万不要认为这个偏移只是会在单元格引用的名称定义中发生。只要名称的公式中出现了功能性的单元格引用,这种偏移都会起作用。
这也算是一个桩功吧。窗户纸一捅就破,非常好用,当然看你怎么用了,呵呵。
上图:

用活名称的秘密附件 
节 3.03 再识名称-名花无主
通过前文“上天的眷顾-名称”,我想大家一定对“名称”有这样一个基本的认识:“名称”就是用来封装公式的,可以达到简化函数公式的作用。这一点没有错,看来前期的基本目的也算达到了。不过,如果对名称的认识只是停留在这一点,还是不够深刻的。在实战经验中,我感觉“名称”的出身比较显赫的,它是直属于工作簿的,因此她可以直接调用工作簿的资源,并且可以在整个工作簿中被看到!
名称定义中的思考
请大家下载附件并打开,选中A1:D5单元格区域,然后将该区域定义名称为“数据”,这时EXCEL会自动在“引用地址”中填写“=’2009’!$A$1:$D$5”,这里可是有工作表名称的,如下图所示。大家看到这个,是否能联想到点什么?
再识名称-不戴戒指附件 
贴图:
我想至少可以想到一点:这个名称“数据”应该在其他工作表中也是可以访问到的,因为她有“工作表”名称限定。
进而猜想,名称的作用范围应该可以是整个工作簿,进而猜想不仅在其他工作表中可以看到名称,在图表中是否也能看到这个名称呢?我试过,即使即使VBA代码中也是直接可以看到“名称”的。
于是,“名称”就成了一个沟通要道,是一个硬通货。学过货币应该知道,一个货币是否有价值除了货币的稳定性及增值能力(利率)外,流通性也是极为重要的。这样“名称”就能起到一种纽带、传递数据的作用了。
“名称”的通用性如此只好,是否它就是工作簿级别的一个配置,她是否就可以直接调用工作簿级别的资源呢?比如,宏表函数?
这些都是猜想,有猜想就会有收获。
挣脱工作表名的束缚
在下载的附件中我们看到有三个工作表,三个工作表中分别有一个结构相同的数据表。于是,在实际工作中我们可能希望为每个工作表的数据表都定义一个名称。该怎么做呢?办法是有点,只少可以按以前介绍的方式一个一个来做么。当然,这个是肯定的,可以做,但就显得不是那么高明了。
定义的名称有“工作表”绑定(husband),因此她只属于那个特定的工作表,因为名花有主。于是猜想,把束缚(husband)去掉不久行了? 于是尝试,如下图所示

戒指是扔掉了,名花无主。以一般的法律常识来说,明确规定某物属于谁的那自然是属于谁,别人沾不上边。但如果某物没有标识明确的归属,那怎么办,谁占有就归谁吧,也许这也是一种法则。比如南极,只要谁先到了,然后插根旗杆就行,呵呵。闲话不说了,我们看看她是否就合我们的意吧。本着实践是检验真理的唯一标准,“阿米尔,上!”
看图
上图中弹出“粘贴名称”对话框是因为按了
经实践证明,上述猜想是可信的,至少在一定时间内可以用来作为定义名称的指导。
待续…
节 3.04 再识名称之谁人不识君
在上一节中我们猜想过,“名称”可能在整个工作簿都是可以被识别的,就是说,“名称”具有名人效应。这是一项很重要的特性,我们需要好好利用。
传递“序列”数据源
初学基本菜单功能时,感觉“数据有效性”功能中的“序列”特别有灵性,以至于一时间,只要能用上“序列”我就是用序列。那种类似程序编程才能达到的效果让我非常受用。如果你也经历过,我想你一定也深有体会,如果你目前是“不知所云”,那么恭喜你,这块内容会让你惊喜。
序列,引用同一工作表中的数据,是没有问题的,如下图所示:

引用的数据源来自于不同工作表时,Excel就会报错,告诉我们“不能…”,其实我们也知道,当对方高手我们说“我们不能…”其实是他们不能…,如下图所示

当尝试选取其他工作表中的数据时,发出“咚咚”声,感觉它自己都有点不好意思。总体感觉,数据有效性这项功能是不错,但EXCEL在它上面下得功夫不够,没有“条件格式”好用。当然,并不是说在“条件格式”中可以直接引用其他工作表的数据。
那怎么办呢?使用“名称”,先对目标数据源进行“名称”定义,然后通过“名称”来调用目标数据,如下图所示。

使用名称就很好的解决了这个问题。明明不能引用其他工作表的数据,为什么使用名称就可以了呢?难道“名称”当前工作表也有份?难道是他老爸(当前工作簿)的东西,如果是这样倒好解释了,继承法规定,儿子应该是有继承权的,呵呵。开玩笑,不管他了。
条件格式
在条件格式中,也是不能直接引用其他工作表的数据的,我想应该也是可以通过名称来走迂回路线的。在军事上直线的距离是最远的,迂回,变通。
这节比较短,重点就是可以讲“名称”当成纽带,在工作簿的各个部件之间来传递数据。
节 3.05 栖息地
“谁人不识君”,这个特性可能算是“百姓日用而不知”之类,掌握这一技巧可以解决很多传递的问题,扩大很多基本功能的作用范围。今天要介绍的“栖息地、预处理”的功能,依然会让你有所收获。
“栖息地”听上去有点自然保护区的味道。是的,“名称”是宏表函数的“栖息地”,宏表函数是早期版本的产物,但非常好用,能弥补常规工作表函数的很多不足,因此在新版本中都进行了保留。
提取颜色
比如,有时候我们对单元格的颜色比较感兴趣,心血来潮时还想使用颜色进行排序。当然在07版中这一切都没有问题啦,群众的需求是要考虑的,所以在07版中可以直接对颜色排序、对颜色筛选。但考虑到有部分战友还战斗在03版这块阵地上,所以可能就需要使用宏表函数GET.CELL函数来助助阵。
插图:
上图中通过辅助列,使用名称“纸色”提取了对应的颜色数值。这样就提取了颜色的信息量,以后就可以按照这个辅助列进行排序、筛选,迂回方式却也达到了目的。感叹,还是用07好呀,呵呵。
到这里大家可能还体会不到名称的作用在哪里?当你失去的时候才知道要好好珍惜。我们看一下,如果不用名称:

上图,在编辑完公式“=get.cell(38,$E2)”按回车后,Excel立即报错,说什么什么无效?根据归一化差错技巧,我们发现不同之处就在于一个使用了“名称”进行了封装,一个没有,所以名称的作用就很明显了。
GET.CELL是一个宏表函数,在工作表中不能直接使用,而在“名称”中却可以,估计就涉及到“名称”的出生了,前面猜想过“名称”可能直属于工作簿的,所以它可以直接调用工作簿的资源。
这里,GET.CELL函数的第一参数 “38” 指定了该函数的功能,即提取填充色,第二参数引用方式上有点小技巧,使用了行变列不变的方式。如果我告诉大家 提取 字体颜色 只要将 38 换成 24 就可以了,那么请大家尝试完成对 笔色 的提取。
对应提取颜色,38,24,也许今天大家能记住,但个人感觉还是比较容易忘的,我分享一个不太容易忘得技巧,大家听了一定会觉得好笑,呵呵。38=24,都是颜色,所以我觉得38,24两个数值就不太会忘了。
那哪个对应填充色,哪个又对应字体色呢?天对地,雨对风,大路对长空。平面、线条、填充色、字体色,这四个项目让我配对,我会 线条 配 字体色,平面 配 填充色,感觉中平面 是 大于线条的,所以 填充色 大于 字体色。讲得很复杂,大家就感觉一下吧 字体 和 单元格背景 哪个比较纤细哪个比较壮实吧,应该不难感觉 背景 大于 字体吧,所以38是填充色,24是字体色。
从公式文本到结果
在论坛上我也经常看到这样的需求:一个单元格中是一个文本型的公式,要求在另一个单元格中返回该公式的运算值,如下图所示。

这类问题只要借助宏表函数EVALUATE就比较容易解决,难点在于这个函数名比较难拼:)。求值么,所以这个词的主干是 VALUE,我想第一个 E 是使能(ENABLE)的感觉,词尾ATE,应该是动词变形后缀吧。当拼错时我就用这种方式把他给抠出来,希望必要时也能给你帮上忙,呵呵。
同样的,EVALUATE虽好,但不能直接使用,依然要定义一个名称,如下图所示。

当然以上应该是“EVALUATE”最简单的应用了,把握一点:其函数的参数是一个字符串的公式文本,就是说这里可以发挥想象力,充分发挥 & 和各种文本处理函数的功能,只要最后的结果是一个合法的公式字符串就可以了。下面精彩一下,呵呵。
累加单元格中的数字

比如要达到上图的效果,C12=”1,2,3”,要求汇总数字?当然用数组公式是可以的,这里讲一个使用EVALUATE以比较巧妙的方式来实现。先想一个思路,当然这靠积累的,目标公式设定为“=SUM({1,2,3})”,那么分段切片,把C12的值揉入进来,具体就是:=”sum({“&$C$12&”})”,最后将这个公式作为EVALUATE的参数即可。
这里要灵活应用EVALUATE,关键就是使用各种方式来构造“字符串公式文本”这个参数。
另外,如果把公式设定为 =1+2+3,那么使用SUBSTITUTE函数把C12单元格中的“,”换成“+”也行,大家可以自己尝试。
串接常量数组
比如定义数组1=”{1;2;3}”,数组2=”{4;5;6}”,求数组3,将数组1和数组2串接起来。目标公式:
={1;2;3;4;5;6},于是可以定义名称数组串接:=EVALUATE(SUBSTITUTE(数组1&数组2,”}{“,”;”)),我觉得这个用法实际意义可能不是很大,但还是能让大家回味一下想象力的魅力,呵呵。(这个是当时写一个数组串接时一位网友提供的,呵呵)
*引用公式
我们的需求总是多种多样的,上面刚讲已知“字符串公式文本”想得到公式值,但有时我们有想显示目标单元格的具体公式。怎么办?依然是GET.CELL,把参数值设为6就可以了。如下图所示。

提取工作表名
另一个经常会问到的问题是如何提取所有工作表的名称。这个问题有好几个成熟的名称,尽管如此我也常常要思索一下才能写出来,定义名称 shts:=MID(GET.WORKBOOK(1),FIND(“]”,GET.WORKBOOK(1),1)+1,100),这里的MID第三参数100一般情况下够用,如果工作表名称实在长那么可以调整为更大的数。
不过,对于这个名称忘了也不要紧,只要我们能记住GET.WORKBOOK(1),就行了。这个应该还好记的。最后根据GET.WORKBOOK(1)在进行MID处理即可。如下图所示。
上图
名称就讲到这里吧,关键大家要多用。有关宏表函数的更多参考请下载附件。
本节演练工作簿下载-栖息地预处理附件 
有关宏表函数的更多内容请搜索相关帖子,这里给个现成的,很不错的,czzqb版主给大家的礼物http://club.excelhome.net/thread-214231-1-1.html
节 3.06 谁人不识君补充及用活名称的秘密演练
谁人不识君补充
我觉得这个案例挺特别的,也有一定实战技巧,所以当例子分享一下。希望能给“谁人不识君”那一节补补身子,似乎那节有点单薄,呵呵。先看一个例子吧。

我觉得电子版就是好,可以动画演示,书就比较惨了。所以我觉得真正的电子版图书(可不是指图书的电子版)一定会受到广大朋友的欢迎,因为文字这东西信息量是有限的,而客观世界是图像和数字组成的,信息量是无限的,以有限对无限…让我想到了雷锋,哦,还有李小龙先生,呵呵,扯远了。希望那一天快点到来吧。
是不是有点激动?当时我是比较激动地,这个还是刚来论坛不久是在一个版主的附件中看到的。分享一下,同时也作为“谁人不识君”的补充。名称在超级链接中也是可以见哟,呵呵。
要实现这个目标需要做两件事情,第一定义一个名称(比如取名为“目标”),名称返回A、B列指定的目标单元格地址。第二,就是选中C列单元格,右键-超链接-然后在“地址”中输入 “#名称”。这里#应该是一个功能性字符。
上图
好了就这样吧,大家可以下载附件尝试一下。当然对公式应用不是熟悉的话不急,以后会讲到的,先就知道这个超级链接不识君吧,呵呵。
用活名称的秘密演练

我想在这个例子中,大家可能对 A2:end 这样的引用方式觉得新鲜,这里解释一下吧。要做到心里明明白白,只要将“:”看成一个运算符就行了,只是这个“:”运算符我们实在是太“熟悉”了,以至于我们没有对其没有深刻的认识(矛盾吧,呵呵,事物总是这样)。这个运算符的效果就是返回 符号前的地址 和 符号后的地址所确定的单元格区域。这里END是一个名称,但属性依然是一个单元格引用,所以抓住这个本质来看这个应用就能理解了。
名称活用补充附件 
节 3.07 SUMIF复杂逻辑解析-插曲
答疑解析
这位朋友的意图如下所示:虽然答案是错的,但也不乏思想的闪光,有想象力,这是值得肯定的,呵呵。
对其中“大于2且小于4”这样的逻辑使用了 “>2”&”<4",这里将 & 当成逻辑运算符使用了。不在其位不谋其政,& 在EXCEL函数公式中是一个字符串链接符,所以它不具备你预想的功能。
其实我们也可以用F9检验一下,">2”&”<4" 的值就是 ">2<4” ,你能说出这是个什么逻辑表达式吗?所以应该可以意识到这样是错误的。
要实现“大于且小于”等逻辑可以这么处理,就以你的 大于2 且 小于4 为例,可以是 大于2 的SUMIF值 减去 大于等于4 的SUMIF值,其逻辑上就等于 大于2 且 小于4.如下图所示。

以后熟悉数组公式后可以写的更加精炼,但精炼是精炼思路是一样的,现在还是分开来写好了,如下图所示。

数组的如果有困难先不要去理会,以后会讲到的,到时理解就跟吃菜一样,呵呵
节 3.08 谁人不识君-相约在“公式记忆式键入”
相约在“公式记忆式键入”,让大家再体会一下“谁人不识君”的魅力。当然这个案例充分体现了想象力,技术上实现比较简单。我就上一个图吧,大家可以根据“名称”那块的内容自行完善附件,使得可以达到那种效果。

说明:此效果在03中无效,因为03还没有“公式记忆式键入”这个功能。在“键入”列表中选择对应条目后按
当然有同学会说,这不是用一个VLOOKUP就搞定?呵呵,是的,这里只是借以展示一下“谁人不识君”,多一个方式还是好的,可能有时就需要这个效果。比如公式不能批量生成。
这里再补充一个编辑名称公式的技巧,其实也算不上技巧了,就是编辑公示的时候先在单元格中编辑,这样可以利用以前的各种编辑手段,达到效果后(可以利用F9检验)把公式文本粘贴到名称对话框的“引用地址”即可,脑子混沌,也不知道前面是否提过这个熟视无睹的技巧。
发现一个问题,如果发现图片太小可以先尝试刷新一下,有时就调整到最佳方式显示了。
相约在“公式记忆式键入”附件 
第 IV 条 条件格式
节 4.01 条件格式秀
07条件格式秀
07的条件格式与03版相比有了大幅的提升,表现形式更加丰富,更重要的是“最多三个条件”的限制被打破了,可以设置更多的条件。条件格式的管理也得到了提升,大家先看看吧,我想你会喜欢2007的条件格式的。
数据条

色阶

更多的规则

通过上面几个图,我想大家可以感受到2007的绚丽与强大。条件格式在07版中得到了大大的加强,揣摩人心的菜单设置,使得轻轻点选鼠标就能实现原本需要进行公式设置才能达到的效果。当然,对我来说,更多的“条件规则”让我不再感觉囊中羞涩…以往论坛中常有这样的求助“如何设置单元格格式达到7种?”,当时的方式是单元格格式加条件格式进行混合双打,现在简单,7个?再多几个也不碍事,爱来来。忆往昔…3个条件规则的限制实在有点小气。
有枣没枣我们先给他一竿子,试试手吧。我们设定一个规则:单元格中的数字大于60,显示绿色;单元格中的数字小于60,显示红色。效果如下图所示

这个条件格式几乎是最简单的了,不过考虑可能有些朋友确实是初学,我就再啰嗦一把吧。要达到上图效果,关键是要在条件格式中编辑规则:
03版菜单入口:“格式”-“条件格式”

07版菜单入口:“开始”选项卡-“条件格式”

“条件格式”中的公式有一个特点,就是返回值是一个逻辑值,另外第一个“=”是公式前导符,解读公式时不用理会,否则对于“=A1=60”的条件设置就会看得眼花,其实这个条件就是“=(A1=60)”,第一个“=”是前导符,只是标示作用。
另外,如果规则非常复杂,那么建议先在单元格中进行编辑,这里可以充分利用前面介绍的各种编辑技巧,然后将公式文本复制粘贴进条件格式的规则编辑框即可。
当有多个条件规则时,排在上方的规则具有较高的优先级。
条件格式秀附件 
节 4.02 条件格式桩功之单元格引用格式
条件格式的桩功我预想了三个,这里先上第一个。有些东西是辨证的,慢即是快,快即是慢,桩功的东西尤其要好好体悟。本桩功动画设计费了番思路,希望能比较容易被消化。这是本帖开帖处的桩功在条件格式中的具体表现,其中的精髓在名称定义的桩功中大家也应该留有印象,所以我觉得这个桩功是贯穿函数公式的,简单但要活用。

条件格式桩功1附件 
节 4.03 条件格式桩功2
时间仓促,大家先看图吧,自我感觉有点“传感器”的意味。图中的内容大家还需要用不同的引用格式进行扩展,里面只是以”A1”引用格式为例的。我想上一桩功结合本桩功,你一定正确进行扩展的。
如果看过“用活名称的秘密”,大家会发现其实实质是一样的,要紧紧抓住活动单元格,呵呵。这些技巧是想通的,世界大同。

参照地址,这里指在条件格式规则设置中使用的单元格地址
活动单元格,这里指在写条件格式规则时,名称框中的地址所对应的单元格
桩功-参照地址和活动单元格不一致的效果附件
节 4.04 桩功点评及思维上的进阶
在秀完07版条件格式后我们又分享了条件格式的三个桩功。第一个桩功透露了“单元格引用格式”对条件格式设置的影响,我们发现其实质就是本贴最初的那个“桩功”所讲的内容;第二个桩功透露了编辑条件格式时,当前的活动单元格指针对“条件格式”的影响,其实质和“名称”章节中的桩功“用活名称的秘密”是一致的;第三个桩功透露了“条件格式”在选中区域进行批量设置时的自动扩展机制,其实定义的名称也是扩展的,只是它扩展地太彻底了,扩展到了整个工作表区域,以至于我们没有察觉。
基本菜单功能中的一些桩功都是相通的,因此希望大家能把握其中的核心(比如,“单元格引用格式”、当前活动单元格、扩展效应)。这样就能花较少的内存空间,记忆更多的信息。
闲聊一下我对扩展机制的认知过程。我一直有这样的思路,要对一个事物进行加工处理,首先要抓住这个事物,然后再进行捉刀修理。就像抓住一条鱼,摁在砧板上,然后我为刀俎,这样做事真真切切,心里明明白白。因此初学“条件格式”时,我会对单个单元格进行条件设置,但不会批量设置条件格式。因为我感觉现在有很多条鱼在砧板上,我首先要做的事就是把所有的鱼统统的摁住,然后才能动刀,但怎么摁呢?在编辑条件规则时似乎没有这个选项,我只能抓一条鱼呀?苦恼中,还以为这可能需要求助于“传说中的数组公式”来解决,想想数组公式真好,以后也一定要学会。
我不善问,这个问题一直悬在脑海中。有一天,我突然有了灵感。灵感是这样来的,不知道大家有没有接触过批量录入公式的技巧,就是那个
讲这些希望能给这个技巧带来点温度,而不只是冷冰冰的技巧,进一步加深印象。
有了“条件格式”的三个桩功,我觉得在技术上应该没有什么问题了。但,扫除了技术上的障碍就够了吗?一般用用是够了,要用活了,我觉得还是要有思想上的突破,不是都说“没有做不到的,只有想不到的吗”?思想上的突破能扫清思维上的盲区。我就在分享一下我对条件格式认知上的一点小小的突破。
“条件格式”,初学时我觉得“条件格式”就是根据自身单元格的数据来呈现不同的显示格式,其变化的源限定在了自身单元格,我现在觉得“条件格式”应该是根据自身单元格所处的环境来呈现不同的显示格式。当然,这里所谓的所处的环境当然包括了自身单元格的所有特性,但明确了一点不仅限于自身单元格特性,可以将判决逻辑采样自周围的单元格及其相互关系。
比如利用桩功二,我们的参照单元格可以不是自身单元格,而是周边单元格,如此我们可以设计:当左边单元格大于右边单元格时自身单元格变红这样的条件格式。这样这个条件格式居然和自身单元格的特性全无关系。我觉得这就在思路上拓展了。
节 4.05 管理器简介
07版在管理维护的考虑上比03版大有加强,这一点从对话框的命名上就可以看出。就如“名称”定义,03版叫作“定义名称”,在07版中就被称为“名称管理器”;条件格式,在03版中就叫“条件格式”,在07版中就升级成“条件格式规则管理器”了,如下图所示。

本节就主要介绍一下这个对话框,里面还有些玄机哟,呵呵。
显示其格式规则——该下拉列表的默认值是“当前选择”,单击该下拉按钮,在列表框中还可以看到“当前工作表”以及工作簿的其他工作表,如
所示。这个设置的作用非常明显,就是筛选,以使得“规则”区域中的项目尽可能的符合用户的要求。
这个“新建规则”真的就不用什么介绍了,单击该按钮就进入了条件格式设置面板了,如下图所示。这里要强调一点,虽然我们主要是讲“条件格式”中的公式设置,但在07版中早已为我们预设了众多的功能。我提倡用合理的方式做合适的事情。因此我建议大家在使用条件格式时先熟悉一下07版的一些预设功能,有些功能还是非常强大的,对于函数公式能力还不是很强的同学来说更是如此。


从激活的对话框来看,“编辑规则”按钮和“新建规则”按钮没有什么区别。“新建规则”是从白纸开始创建规则,“编辑规则”自然是以原规则为基础进行修改,修改逻辑或者格式。

这个就不用讲了吧,“人如其名”么,呵呵。

我觉得这个值得一说,给“条件格式”的管理带来了极大的便利。“上移,下移,不就那么简单么,怎么说得那么严重?”这里有原因,涉及到优先级的问题。
我们知道,在03版中条件1比条件2具有更高的优先级,条件3的优先级是最低的,而且条件1、条件2、条件3的设置顺序是无法改变的。我们无法直接编辑条件3规则,这一点就像我们不能直接吃最后一个包子来填饱肚子一样。并且在03中,条件1、条件2、条件3之间的顺序也无法切换,这就使得我们必须事先想好他们之间的优先级问题,如果想调整优先级似乎就只能推倒重来了,这样又有点雕版印刷的感觉了。
在07版中,先定义的条件格式具有较低的优先级,后定义的规则具有较高的优先级,这一点是和03版中正好相反的。不过,我们可以从另一点来看这个问题,让他们统一起来,那就是位于上方的条件规则具有较高的优先级。更贴心的是,使用上移,下移按钮就可以调整相应的规则的顺序,从而改变他们各自的优先级,这给后期修改维护条件格式带来了极大的方便。
规则

在“规则”区域中我们主要要抓住“公式”、“格式”、应用条件格式的单元格区域,其中“应用条件格式的单元格区域”是07中新出现的。这也给我们带来了一些混淆,我希望这些混淆在桩功“泽被天下”后已经被理清。在03中,我们可以直接根据所选单元格查看所应用的公式,这种方法是和查看“名称”的公式是一致的,因此已被熟练掌握,但07版中这种“公式”和“应用条件格式的单元格区域”一起呈现的方式,就需要通过“泽被天下”中学的桩功来解读。否则,如上图,还以为A3单元格的条件格式也是以A2的值来判定的呢?
如果上面这段大家能理解,那么说明“泽被天下”的桩功大家已经掌握了。
如果为真则停止
我想很多同学对这个“复选框”都有过狐疑,我第一次看到时就琢磨过,还用上了,后来又忘了。今天正好看到一个同学的提问,我又想,不过开始真想不起来。现在就分享一下整个思路吧。
“如果为真则停止”?开始还以为满足这个条件就不执行条件格式呢?后一想,那还设置规则做什么?!不设置更好。后来又琢磨,“如果为真则停止”还真不好理解,那“不为真就继续”喽?那继续什么,应该就是继续下面的规则。不过开始试了几次,没有任何反应,似乎这个复选框够宣布勾选关系都不大,直到…
当然,中间查了帮助,不过我觉得帮助中说的更玄乎,真的不知道她在说什么,呵呵。有空大家可以查一下,呵呵。不过,在看帮助的过程中,看到了“条件格式”冲突的概念,于是一道灵光闪过,我觉得我找到奥妙了。
冲突,条件格式可以有设置填充色、字体色、下划线等等。如果条件1,条件2都设置了填充色,并且条件1、条件2的逻辑都满足,那么条件1的格式自然起效,但条件2的格式就无效了,因为和条件1的格式设置相冲突。而如果此时条件2设置的格式不是填充色,而是下划线,那么条件2的格式也会同样起效,于是单元格就是因满足条件1而填充色变化,又因条件2也满足所以同时又被划了下划线。
这样,我想大家也明白“如果为真则停止”的意义了吧。就是说,默认情况下只有冲突的格式是被忽略的,但如果勾选了“如果为真则停止”那么不冲突的格式也将被忽略。

条件为真就停止附件 
再上个图,用来显示“如果真就停止”的用处,主要使得编辑逻辑更具灵活性,简化逻辑。

为真就停止-简化逻辑附件 
节 4.06 绚丽落幕
刚刚在“规则管理器”探秘中又添加了一个示例,展示利用“如果真就停止”来简化逻辑的。
好了,今天就对条件格式来个“绚丽落幕”吧,呵呵
已知:
=COLUMN(), 单元格列号;=row(),单元格行号

求:

绚丽的落幕附件 
第 V 条 数据有效性
节 5.01 初识数据有效性
印象中,名称“谁人不识君”一节中提到过数据有效性的“序列”功能。那似乎只能通过编程才能达到的下拉列表效果,常常让初学者惊喜不已,进而乐此不疲,如下图所示。

上图中,我们看到选中单元格时会弹出一个小标签来提示录入,这是“数据有效性”的“输入信息”功能,另外从下拉列表中选取数据完成录入是“有效性条件”的“序列”功能,可以通过以下步骤进行设置:
菜单入口:
03:数据-数据有效性
07:“数据”选项卡-数据有效性

序列功能

“数据有效性”就是为了帮助用户提高录入的准确率,所以可以设置“输入信息”功能,算是打个招呼,又有“出错警告”作为强制,而核心自然是设置各种有效性规则,有内置的也可自己设定逻辑。而“序列”是内置方式中比较有灵性的一个,可以通过名称或单元格引用先设定一个可选范围,在这个范围内随便选,这样就大大提高了录入的准确率和录入效率。
“数据有效性”有个特点,即善打埋伏战,但不善策反。这个啥意思呢?就是我们先设置了“数据有效性”,然后输入数据,这时“数据有效性”是会执行使命的,该“警告”就会发出警告,该“禁止”就会弹出“禁止”信息框;但是,如果事先已经输入了数据,然后再马后炮进行“有效性”设置,这个时候“数据有效性”就不作为了,就是不具策反能力。
03版,07版都这样,不过可能考虑到了这部分原因,在07版中做了弥补。具体就是可以通过菜单命令,显示所有不符合有效性条件的项目,如下图所示。

千言万语又回到同一句话,“03版非常优秀,但07版更优秀,呵呵”。从上面我们可以看出,思想上微微一动,“数据有效性”的“圈释无效数据”功能还可以当“条件格式”用呀,大家说不是?
在“数据有效性”中嵌入函数公式一般在两个地方,第一就是“序列”的数据源,另一个就是自定义,切入口如下图所示。下次再详细絮说。

初识数据有效性附件 
节 5.02 数据有效性桩功演练
前文已让大家演练了普及桩功、名称桩功、条件格式桩功,其中条件格式桩功比较完整的展示了各个特性。盘点一下条件格式的桩功,关键就是三点:单元格引用格式的影响、宿主单元格与参照单元格之间的位置关系、批量扩展的规律。虽然可能会造成桩功堆砌的现象,斟酌再三我还是决定把数据有效性的桩功也演示一下。有了前面的桩功基础,尤其是条件格式的桩功基础,数据有效性的桩功就非常容易理解了,用心体会就会发现实质是一样的。
数据有效性基本功能中,我一般在“序列”的数据源和“自定义”中设计公式,以使该基本功能具有更多的灵性,下面也分别加以介绍。
“序列”数据源
在“序列”功能中,公式的作用在于返回一个单元格引用区域,将这个引用区域作为“序列”的数据源,以方面使用下拉菜单点选式录入。
序列桩功1
序列桩功2

序列桩功3

贴图
自定义:
自定义中的公式和条件格式中的公式一样,都是返回一个逻辑。不同的是,在条件格式中返回逻辑TRUE时执行相应的格式,而有效性中逻辑值TRUE表示“有效”,返回逻辑值“FALSE”时则表示无效,以此来提高录入的准确率。
自定义桩功1

自定义桩功2

自定义桩功3

自定义桩功中的第二个“兼济天下”,当然啦看上去更像是“狗拿耗子”,呵呵,这个是一个思想上的突破,这一点在条件格式中也提到过。
透露一些,虽然平时也用这些技巧,但并没有完全挨个的用遍,但即使如此我也觉得这些技巧是具有相通性的,它应该是能满足的。挨个演练有时是忙不过来的,但把握其中的规律以后,通过合理的逻辑演绎可以在思想上先拓展到更广的区域也是一个方法。先有了一个思路,具体碰到问题时就有了想法。
数据有效性桩功演练附件 
节 5.03 公式切入口
在“数据有效性”中嵌入函数公式一般在两个地方,第一就是“序列”的数据源,另一个就是“自定义”,下面就分别来简要介绍一下。
“序列”数据源
在“名称之谁人不识君”中我们提到过,“一般情况下,无法引用其他工作表中的单元格区域作为数据源”。下面我们“重蹈覆辙”一次,不过发现有新的发现,简言之又是“03很经典,07更出色”。
在上图中我们看到,虽然无法使用鼠标点选方式为“有效性”添加来自其他工作表的数据,但是在07版中可以通过手工输入的方式来实现对其他工作表数据的引用,在03中是严格不行的。所以我觉得,这就称为“略显慈善的面孔”吧,毕竟是通融了一些。怀着憧憬的心情乘胜追击,“编辑公式时也手工输入其他工作表的标签,是否也能…?”并不是每一次尝试都会有收获,在“数据源文本框”中尝试输入引用其他工作表的数据时依然被棒喝叫停,看下图所示。

那怎么办呢?有两种方法,一种致刚,一种致柔。
“致刚”,怎么解?就是大模大样的突破这道防线。就是使用“名称”封装公式么,“名称”号称“谁人不识君”,因此有了名称的通行证自然可以畅通阻了,如下图所示。

“致刚”的其实也不算新知识了,在“名称”一节中已经透露了,那什么又是“致柔”的呢?龙能升能隐,升则飞腾于宇宙之间,隐则潜伏于波涛之内。我们这里就是讲把工作表标签隐藏起来。隐芥藏身,此处的芥就是 INDIRECT 函数。INDIRECT函数就是返回文本字符串参数所指向的单元格引用。具体“隐芥藏身”的过程如下:

其实,真正起到“隐芥藏身”作用的是“双引号”,双引号也是一种功能性字符,它的作用就是抹杀所引用字符的功能性,只体现其文本字符的属性,如此工作表标签就不会上层对象所识别了。这也算是另辟蹊径吧,但在复杂的公式中“隐芥藏身”的程度会受到考验,本人还是建议使用名称。
此外,“序列”的公式有很大限制,不能使用数组公式,这也是一大遗憾。前文鼓吹“条件格式公式”的强大就是针对这一点的。
自定义
有效性自定义中的公式是很强大的,这里是指它可以使用数组公式。自定义中的公式要求和条件格式中的要求是基本一致的,就是要返回逻辑值。返回TRUE,表示该情况有效,返回FALSE表示该情况无效。逻辑要写的漂亮,一方面就是要把前面的桩功吃透,另一方面就是数组公式的功力。功力的问题以后再补吧,首先要把桩功吃透,比如桩功中的“恩泽天下(不独扫自家门前雪)”也即狗拿耗子的桩功尤其容易忽视。(2010年7月编辑,似乎在数组公式的判决上EXCEL无法识别)
2010年7月编辑,发现有效性可以判决数组公式,但有些情况特别,正在求证中….
公式切入口附件 
节 5.04 管理面板简介
对比03版和07版的“数据有效性”对话框,并没有发现有任何改动。唯一相关的改进是在对话框之外,在07功能区上多了“圈释无效数据”和“清除无效数据标示圈”这两个按钮,如下图所示。其效果已经在“初识有效性”中展示过,这里就不再赘述了。

其实,个人认为数据有效性还是可以有质的改进的。比如它的有效性条件可以“或”起来,这样应该更加灵活了。
“数据有效性”对话框有四个选项卡,我们依次介绍吧。为了看上去能有点行云流水的感觉,我不免又要堆砌点图了,呵呵(以下介绍均以07版为准,03版中大致适用,但并未一一测试)。
“设置”选项卡

“设置”选项卡中主要是一个“有效性条件”区域。单击“允许”下拉列表,可以看到有丰富的规则,如
所示,选择不同的规则,面板布局会有相应的调整,如下图所示:

当然,这一点只要大家使用一下就能有深刻的体会。那,“允许”下拉列表右侧“忽略空值”复选框又是什么作用呢?看一下图吧,上眼

从上图我们可以看出,所谓的“忽略空值”是指在单元格编辑状态中退出时,对单元格内容是否为空进行的一种判断。如果,勾选了“忽略空值”复选框,则这该情况不报错,是忽略空值的;如果取消勾选了改该复选框,表示该情况是不允许的,是不忽略空值的。注意,这里是指在单元格编辑状态中退出时单元格内容的情况,选中单元格,按
明白了“忽略空值”复选框的功能,自然会将目标瞄准左下角的“对有相同设置的…”复选框感兴趣了。我们还是先看图吧。

通过上图我们大致了解了“有效性扩展”的功能。我们可看到,当选中的单元格并没有设置有效性时,那个“对有相同设置的…”复选框是灰色无效的。这好理解,自身没有有效性设置,就无从和自己相同了。此外,需要强调一下的是,这里所谓的“相同设置”可不仅仅限于“设置”选项卡中的设置,而是要求整四个选项卡(设置、输入信息、出错警告、输入法模式)内的设置都保持相同才行。
同时我们也看到,当勾选“对有相同设置的…”复选框时,所以具有相同有效性设置的单元格会被选中,这一点有时可以利用一下,其功能就等效于“定位”菜单中的定位有效性,如下图所示。

输入信息选项卡

输入信息选项卡的内容还是比较容易理解,具体效果我们通过一个图一带而过吧。

出错告警选项卡

左上角“输入无效数据时显示出错警告”复选框,这个功能就非常明确了。勾选了,那么下面的设置时有效的,取消勾选,那么下面的设置就将无效。此外,“样式”有三种类型:停止、警告、信息。停止,最严,不给任何通融的机会;警告,告知不符合规则,可选选择更改或继续;信息,只起提醒作用。具体效果我们就看图吧。

输入法模式选项卡

输入法模式有三种,随意、打开、关闭(英文模式)。此处,关闭(英文模式)意思是如果当前输入法为中文,那么关闭中文输入法,使之处于英文模式。打开,如果当前输入法为中文,那么使用中文输入法,如果当前输入法为英文,那么即使打开也不会切换至中文,详细效果见图。对于需要输入公式的单元格设置“关闭”比较适合。
在输入公式时我是尽量使用鼠标点选的技巧的。在自定义名称时,我一般都是先在页面中把公式输入完成后,才粘帖在定义名称对称框里的,因为这样可以通过F9等进行公式的检测。
现在我通过对公式的修改已经能做到改变不同的单元格及工作表名称,通过点击超链接可以链接到不同的地址,但在文档中可显示的文字位置的显示文字仍然达不到示例中的效果。
全部清除
清除整个对话框中的设置。
节 5.05 有效性应用两三例
“学而时习之,不亦说乎”,我们就来演练一下有效性吧。这里演练三个应用:防止无效空格录入、防止重复录入、多重下拉菜单设计。
防止无效空格录入
这时一个比较常用的有效性控制技巧,目的是为了规范数据录入。因为无效空格一般是误输入引起的。这里的无效空格是指位于中文字符串首部或尾部的空格,英文单词除用于间隔的单个空格之外的空格。
有一个函数TRIM正好可以用来清除这些空格。可惜中文的间隔空格它并不能清除,不过实际问题时我们可以灵活应用函数来达到符合要求的目的。
根据数据有效性-自定义公式的特性:返回逻辑TRUE表示允许,返回逻辑FALSE表示禁止,我们可以来设计公式。大家可以先自己尝试一下,如何达到这样的效果 。
目的:体会自定义公式的特点:返回一个逻辑值。

防止重复录入
一般来说,数据录入是按从上往下、从左往右的。在这个前提下我们来尝试写一个防止重复录入的有效性公式,来体会桩功的应用,如要达到以下图所示的效果:

这里的有效性设置公式为:=COUNTIF($A$8:A8,A8)=1,当然可以用更简单的=COUNTIF($A$8:$A$15,A8)=1 来替代,不过这里就是为了让大家体会一下单元格引用方式带来的影响。
多重下拉菜单设计

大家看一下,如果把基础数据整理好,定义好名称以后,可以用一个简单的indirect函数来实现,而且想几层都可以。
有效性应用两三例附件 
第 VI 条 筛选
节 6.01 07版筛选秀-让你一见倾心
筛选,这是一个很强大的数据处理功能。筛选结合排序,应该是基础阶段处理数据的主要工具了。03版的筛选已经非常强大了,但就怕“货比货”呀。我们来看一下日期序列的筛选选项在两种版本中的对比。

还需要过多的言语吗?你觉得这也没什么大不了?继续ing…

嗯,也没什么大不了的,你刚才就已经意识到了?那好,继续轰炸ing…

好了,上面也只是从日期序列来看筛选选项的,07版中筛选选项会根据所选序列进行调整,以尽可能地满足用户的需求。而筛选处已经进行了人性化的组合,这些都是非常实用的贴心的改进,如下图

再看一个小细节吧,我觉得这点真的是很有用,就是对某一个字段筛选过、排序过会留下标记,如下图所示。这个标记真的非常贴心,尤其字段比较多,筛选过多个字段,又想把某个字段复原就显得很有用(03网往往找不到到底哪些字段筛选过了,可能就要去除筛选重新来过)。

小结:07版中将筛选和排序放在同一个下拉菜单,这就体现了“任务式”菜单的风格,给工作带来很大的便利。
07版中可以进行颜色排序和筛选,这一突破大大方便的用户,当然也使03版的一些技巧成为了“历史”。
07版中一些丰富的选项更是让03版的同学瞠目,我想很多原本需要函数公式实现的,现在只要轻轻一点就搞定了,这些方面07版做的非常好。
筛选之一见钟情附件 
节 6.02 高级筛选(筛选不重复系列)
前一节主要秀了一下07版的筛选,如果真的用心去体会一下能感觉到07的贴心的。很多原本需要函数技巧实现的功能,现在被预置了,只要轻轻点击就可以了。有关这些操作以及自定义筛选的内容大家多练习一下就可以了,相对还是比较简单的。本节主要讲一下高级筛选。
不过本人平时高级筛选用的实在不是很多,但我会将我所知道的都托盘而出。其中难免有很多不足之处,到时请大家指正或补充吧,先谢谢了。
和函数公式相比,基本菜单功能有一个显著的优势:效率高。这一点在海量数据的时候尤其明显。所以,我觉得能用基本菜单功能实现的,就不要强迫自己使用函数公式来解决。毕竟我们的目标是解决问题,不是秀函数公式能力,希望你也能认同,呵呵。下面我们就来分享一下高级筛选的几个知识点。
筛选不重复记录
高级筛选的这个功能是我平时用的最多的,不过平时往往是针对单列求不重复记录的。个人感觉,“筛选不重复记录”这个提法也许不是很恰当,在将结果复制到其他单元格时称为“合并重复记录”可能更恰当,如果在原区域进行筛选,也许称为“筛选首次出现的记录”更恰当。当然啦,不管名称怎么取,我们能理解他的功能就是了。现在分别演示一下对单列的“筛选不重复记录”和多列的“筛选不重复记录”。

从上面的动态图我们可以看到,EXCEL并不是把重复的项目删除了,而是把相同的多个项目合并成一个项目了,所以有上面的评论。

上面,我们用两列来替代多列了,原理相同的。我们这里可以看到,所谓的重复不重复,这里的讲的标的不是一个字段的元素,而是对整条记录来讲的。
另外,高级筛选有一个特点,筛选过后没有下拉按钮,以至于会出现“强隐藏”的情况。“强隐藏”?,什么词呀?刚编的,看看效果吧。有时“强隐藏”会干扰你的,一时想不起到底怎么形成的,还以为是保护工作表了,呵呵。这个时候,取消筛选就可以接触“强隐藏”了。上图,看效果。

当然啦,上图只是提供了一种解除“强隐藏”的方式,只要把握取消“筛选”就可以了,方法不限。关键就是要心里有这个印象,否则真的会不明白怎么无法取消隐藏了,呵呵。
条件关键字
条件区域中可以植入公式,也可以直接使用“关键字”。论坛中或其他资料中应该有这些关键字的逻辑作用的。比如,<>,筛选非空记录,><,筛选非空文本记录,还可以使用 通配符 进行模糊匹配,另外 可以使用 = 来进行精确匹配。先简单介绍如下…待续
高级筛选附件 
节 6.03 条件语法与关键字
高级筛选的技巧性主要集中在条件区域的编写,这里涉及条件的逻辑关系、条件关键字以及条件中公式的编写。今天现介绍前面两个技巧,希望初始高级筛选的同学能够用起来。这里的知识点几乎用不上悟,。
条件区域
先介绍一下条件区域吧,好有一个感性的认识,看下图。

上图展示的逻辑是比较清楚的:一个数据列表区域,通过“条件区域”设定的规则进行过滤,过滤出来的数据表就是筛选结果了。希望通过上图,大家能在“高级筛选”对话框中讲这些分成都对应起来,对各个成分的地位也有所了解。大家也一定体会到,这里的核心是“条件区域”的设置。
条件区域可以划分成两个部分,第一部分就是标题区,占一行高度,一般是字段名,当对应的条件规则是公式时,也可以用空单元格充当,或者其他有意义的文本;第二部分就是规则区域,可以多行,可以填写一般关键字或者公式,如果保持空白单元格,则表示该单元格条件不做限制。
条件区域的设置还是有很多小技巧的,先抓住大的,讲一下条件的逻辑语法。
逻辑语法
属于同一行的条件规则之间是 与、且 的关系,表示必须同时满足
每一行表示一条完整的逻辑规则,各行之间的逻辑关系是 或 的关系。筛选时,EXCEL会以每一条条件规则为过滤单位,只要符合其中一条完整的逻辑规则就能被筛选出来。我们看动画演示:

条件逻辑语法附件 
通过上图演示,我想大家一定对上面所说的逻辑语法有了比较清晰的了解。此外,上图中,性别“字段”我同时使用了两次,这一方面也是为了在思路上突破一下。因为,初学时可能只会把一个字段出现一次。这样,可以多次出现,那么复杂的逻辑可以先拆分,再逐个击破了。
节 6.04 关键字之似曾相识
在上一节介绍条件逻辑的语法时我们就见识过关键字,不过那是小试牛刀,今天我们可要将它拿下。在本节后文,还将用它去撞击以前的某个内容,让他们擦出绚丽的火花,希望能给大家带来血脉打通的畅快。好了,先还是看几个关键字的应用吧,相信能给大家真切的感性认识。

如果用“心”去感受上图,我相信大家一定能悟到不少东西,同时又能感受到筛选功能的灵活性。下面,我再点几个关键点,希望借此大家可以比较轻松地拿下这些眼花缭乱的关键字。
(a) 关键字中的运算符
运算符之不等于<>
运算符不等于“<>”在筛选处理中并不能很好的表达其功能,鉴于其两头尖,封闭状的形象,我们暂更名为“屏蔽运算符”吧。一不做,二不休,连送代卖的我们把等于符“=”更名为“零差异匹配符”,把“小大于符”(>,<)及其兄弟们(>=,<=)更名为“排序比较符”,不仅可以用来比对数值哟,呵呵,下文介绍后会豁然开朗的。
好了,先讲屏蔽运算符“<>”吧,通用形式是“<>字符串样式”,表示对应字段的记录不可以是“字符串样式”这个形式的,是一种精确的约束(关于这里的精确下面我们看了无逻辑符的筛选效果后就会有清楚了解了)。于是当“字符串样式”为空时,就显示为很特殊的“<>”,逻辑意义就是“不可以是空”。好了,我们就先上图吧

在上图的最后部分也演示了特殊的屏蔽运算符“><”的效果。“><”和“<>”的区别就是多了一道对“文本”的限制。记住“<>”不等于就行了,不等于和屏蔽逻辑有那么点相通性,“><”不就是把不等于左右换位么,呵呵。
关键字之似曾相识附件 
等于运算符
有了上面屏蔽运算符(“<>”)的介绍,等于运算符就容易多了,通用形式就变成了“=字符串样式”,对应的逻辑也就成了相应的记录样式必须是“字符串样式”这个形式的,也是一种精确的约束。照葫芦画瓢吧,当“字符串样式”为空时,就显示为很特殊的“=”,逻辑意义就是“必须是空”。

如果把“=”运算符提取出来并给他取一个友好的名字,比如就叫“精确筛选”运算符吧,那么直接就可以读出它的逻辑意义了。有了上面的“屏蔽”运算符的演示,我想这个“精确筛选”的运算符也是一个套路,轻松过关,呵呵。
这里“精确筛选”运算符“=”有一个特殊性,他就是公式前导符,于是乎在单元格中直接 输入 “=?丽” 这样的关键字,EXCEL就会糊涂,他还以为你要输入公式呢?这该怎么解决?在excel帮助文档中是这么解决的:将计就计,既然你老是认为我是公式,那么我就公式吧,只要我返回我想要的结果就可以了。于是,类似“=?丽”的关键字,就可以写成 “=”=?丽””。这样就解决了,这也可认为是舍己从人吧。解决问题是首要的,何必在乎用什么方式呢?
不过,此处我在介绍另一种方式,一种很简单的方式。相信大家都会。抓住本质,这里的关键字的属性是“文本”,大家还记得怎么输入身份证号码吗?联想…
命中!对,就是“’”,单引号,功能性单引号,只要在单元格中先输入 “’”,excel就明白这里的内容是文本了,于是就不会将“=”当公式前导符了。于是“=?丽”,就可以输入成“’=?丽”了。
这本身是一个技巧,不过抓住事物的本质来诊断问题是一个比较好的思路,这个应该是更加有意义的。此外,还能感觉到一种“它山之石可以攻玉”的味道,呵呵。
排序运算符
(>,<,>=…名字自创,很不规范,大家自己注意,呵呵)
有了“屏蔽”、“精确筛选”的观摩,大家一定觉得“排序”运算符也就过过场,不会有什么新意。嗯,也差不多吧,不过我们还是看看吧,也许还真能让你眼镜一亮…眼镜可要扶好了。

通过上图,我想大家一定明白我怎么改名成“排序运算符”了。我感觉,如果提“大于、小于”这样的名称,会直接在脑海中发生微妙的变化,然后就限定了在“数值”上打转。用排序,就能冲开这层束缚…这里也就是思维的一个突破。当然啦,这个我只是稍微测试过,这个经验还是比较嫩的,欢饮大家一起测试。
“大于、小于”还能对文本进行处理?跳出“筛选”条件关键字,我们回到普通的单元格,上图,演示。

从上图我们可以看出文本确实可以进行“比较”,大家如果感性兴趣还会发现这个比较大小的规则应该就是排序的规则。此外,我也给大家来了一个玩笑,MAX来求最大的文本,呵呵。从此处我们可以看出,并不是每一个猜想都会有收获的。猜想和验证必须一步一个脚印,相辅相成。
(b) 纯“字符串样式”关键字
纯“字符串样式”关键字,那么很自然的通用形式就是“字符串样式”了。这里要提到一点,很关键的,“纯字符串样式”关键字是种模糊方式,这里的模糊是指他只用来限定记录的起始段字符。于是“纯字符串样式”的 ABC,就等于了 “精确筛选”的 =ABC。看图吧,还是比较简单的。

看了上图,我们可以发现,纯字符串样式是直接可以用精确筛选来替换了,方式就是在“精确筛选”的字符串样式后添加一个 通配符 就是了。
通配符
通配符,呵呵。不知道该说现在才讲通配符晚了点呢,还是水到渠成呀,呵呵。见仁见智吧,我想大家已经知道通配符的作用了吧。而且对于 ? 代表 一个字符, 代买任意个字符(包括空字符)这个应该也很熟悉。现在来讲一点通配符的受限性:对数值来说,通配符没有意义。就是说如果是数值,那么 53 并不能替代 535353,这一点在所有用统配符的地方都适用。(准确性还需要大家一起配合验证)。这个是最最重要的一点了,还是看个图吧。

此外,对于这些符号还要强调一下是功能性的,就是要用半角方式输入的。
筛选至少还有三块内容,我们的函数公式还没露脸呢,呵呵。不过春节前打算暂时不更新了,有其他事务要赶。不过也不一定哟,呵呵。
关键字之似曾相识附件2 
这块内容忘了一点,就是波浪符(~)(数字1左侧的那个),如果要查找统配符本身,那么就需要告诉 EXCEL 某个通配符是不能当功能性字符的,要当成普通字符,这个怎么办呢,就是在对应的通配符之前加一个 波浪符。具体大家可以自己在附件中测试一下。权威,什么叫权威,看书看的吗?我感觉我们自己动手,多测试,得到的东西能指导实践,禁得住考验,那么就是权威的。
节 6.05 移花接木,倒打一钯
有了前文“关键字”的介绍,大家一定对关键字的灵活性有了切身的体会。关键字,英文“criteria”,这个单词大家是不是也似曾相识呢?给你5秒钟,呵呵。提示,参数列表。当然拉,可能大家确实没有接触。在统计函数,SUMIF,COUNTIF中的第二参数就是这个 criteria,关键字。是巧合吗?乌龟大师说,There is no accident!那么他们之间有什么渊源吗?我们能用来做些什么?
既然都是关键字,那么我们有枣没枣打它个一钯子,看看是否他们的逻辑特性是否可以嫁接过去,就是标题所指的“移花接木”。
展示1

在上图中,我直接把高级筛选中学到的“<>”和“><”的筛选意义直接用到了SUMIF函数的第二参数,criteria中。这个确实比较简单,但能突破大家的思维。
展示2
在上图中,我尝试了通配符?,发觉在SUMIF这个功能和高级筛选中不同,高级筛选中 纯字符串的 形式是模糊的,即 “表达式a” 效果 等同于 “=表达式a”。由于可以取代,所以我也一直觉得使用严禁的 “=表达式a”比较好。在SUMIF中,即使不使用 = 也完全使用了 精确匹配,我觉得这个真是不谋而合呀。但也给我们提了个醒,在移花接木时还是要多试试,掌握性情。
展示3

在上图中,我们对代码执行了比较特殊的限定,就是要求把代码为 C,D,E,F的对应的数据求和。对初级的同学来说,这还是挺麻烦的,一个一个列出来自然不是最佳的,这里妙用了一把 排序 (比较运算)符,并巧妙使用 减法 实现了 逻辑与的操作。妙处,需要好好体会。
这课,内容就这么点了。要点,用新知识去撞击老知识,让他们擦出火花,善于“移花接木”吧,把知识用活了。
移花接木-倒打一钯附件 
第 VII 条 回帖补充资料
节 7.01 学生名册
定义名称是Excel里一个非常常用也非常有用的操作,他可以使你的某些操作变得更简便、简洁。看完胡剑版主的贴子后,我有很多收获。现将自己的学习心得简单整理如下。
学生名册附件 
一、指定:
当你点击“插入——名称——指定”后,会弹出四个选项,如图:

他是给你选定的工作表区域指定名称的名字,你可以选择其中的一个、多个或全部选项。
比如:

当我们选择了定义首行后,实际上就创建了9个名称,按ctrl+f3可以看到,9个名称的名字分别为选中区域第一行的:编号,学校,年级,班级,姓名,语文,数学,品德,总分
而每个名称所代替的区域都是该字段下的行区域数据。

相应的其他选项也是一样,无非就是把行变成列,名称的名字从第一行变成第一列,或最后一列,最后一行而已。
尝试一下就可以知道。
================================
二、定义
“定义”用来快速定义单元格或单元格区域的名称。
当你点击“插入——名称——定义”后,会出现一个定义名称的对话框:

在“当前工作薄中的名称”输入要定义的名称的名称,如“姓名”、“语文”等,名称可以自己定义。
在“引用位置”处输入名称引用的单元格或单元格区域的地址,也可以将光标定格在“引用位置”框里,拖动鼠标在工作表中进行选择!这里的引用一般情况下是用绝对引用,如果根据需要,要用相对引用的,也可以进行相应的更改!
还是前面的例子,如果我们只需要定义“学校”的名称,则点“插入——名称——定义”,也可以按快捷键ctrl+f3打开它,设置为:

点击“确定”即可完成对名称的定义。
当定义名称后,选定名称引用单元格或单元格区域时会在工具栏的名称框里显示出你所定义的名称。

当在公式里对单元格进行引用时也可直接用此名称。
例如刚才我们定义的名称姓名引用的单元格是B3:B13单元格,当需要对这些单元格进行引用时,可以直接用“学校”代替B3:B13。例如:

定义名称还有捷径可走,不用每次都点击“插入——名称——定义”或者按ctrl+f3来定义,我们可以选定需要定义名称的单元格,然后再工具栏的名称框里直接输入所要定义的名称的名字,回车即可。

另外:名称的引用对象不只是单元格或单元格区域,也可以是某公式的结果,自己可以尝试一下!!!!
三、标签
在使用“标签”功能之前,请打开“工具——选项——重新计算”,勾选“接受公式标志”,只有勾选了该选项才能使用“标签”的功能,记住:Excel默认该选项是没有勾选的,如果你要使用该功能,最好在新建工作薄的时候勾选上该选项,否则公式的结果会产生错误!

设置好后,对什么是“标签”可能我们都不清楚,从没接触过,你会感到很抽象,那先不说,我们看例子:
点“插入——名称——标签”,弹出一个对话框:

将“添加标签区域”激活,点H2单元格,点选“行标签”,点击添加,这样就完成了一个“标签”的添加:
标签我们设置好了,开始来应用:
在H16单元格输入=sum(品德)(为什么输入“品德”?因为我们标签H2单元格的文本是“品德”。)回车,看一下得到的是什么结果?先声明一下,在之前我们并没定义名称为“品德”的名称。这点,我们可以按ctrl+f3看一看。

双击H16单元格,可以看到公式是对H4:H13单元格的引用。

“标签”是什么,已经很明了了。
但是刚才我们的例子选择的是“行标签”,“列标签”可以自己试一下!
补充一点:当标签所在的单元格的文本修改后,公式引用里的内容会自动进行相应的修改,列标签使用的是列相对引用、行绝对引用;行标签使用的是行相对引用,列绝对引用。
====================================================
四、粘贴
“粘贴”比较简单,刚才我们定义了一个“姓名”的名称。
点E16单元格,输入” =counta( “,点“插入——名称——粘贴”,出现对话框:

单击“确定”,再输入右括号(”)”),回车,即看到效果了。
这个我就不多说了,尝试,尝试!!!!
====================================================
五、应用
目的是将公式里的引用区域转换为名称,看动画:

在未对求和区域进行定义名称时,公式引用里显示的是单元格的地址,定义名称后,还是引用单元格的地址,当使用“应用”后,就变成我们定义的名称的名字了!
第 VIII 条 数组公式
3、数组公式
数组公式是相对于普通公式而言的。普通公式(如上面的=SUM(B2:D2),=B2+C2+D2等),只占用一个单元格,只返回一个结果。
而数组公式可以占用一个单元格,也可以占用多个单元格。它对一组数或多组数进行多重计算,并返回一个或多个结果。
输入数组公式:用Ctrl+Shift+Enter结束公式的输入。
5、数组的维数
“维数”是数组里的又一个重要概念。数组有一维数组,二维数组,三维数组,四维数组……
在公式里,我们更多接触到的只是一维数组和二维数组。
一维数组我们可以简单地看成是一行的单元格数据集合,比如A1:F1。一维数组的各个元素间用英文的逗号“,”隔开(如果是单独的一列时,用英文分号“;”隔开)。
(1)一维数组是单独的一行或一列。二维数组是多行多列。
(2)数组里的元素,同一行内的各元素用英文逗号“,”分开,用英文分号“;”将各行分开。
(3)二维数组的元素按先行后列的顺序排列。总是这样:{第一行的第一个,第一行的第二个,第一行的第三个……;第二行的第一个,第二行的第二个,第二行的第三个……;第三行的第一个……}
就是一个多单元格的数组公式,多单元格数组公式是进行批量计算,可节省计算的时间,同时,它还有一个特点。当你输入完数组公式后,请你尝试修改公式区域里其中一个单元格的公式,看看会有什么结果。
是的,你已经发现了,会弹出一个对话框,提醒你:不能修改数组的某一部分。
这就是多单元格数组公式的一个重要的特点:保证公式集合的完整性不被修改。这可以防止用户在操作时无意间修改到表格的公式。这是不是会安全得多?
当然,如果你要修改公式的话,必须得选中公式所在的所有单元格。
做了这个问题,总结一下,什么时候会用到数组公式?
是的,当运算中存在着一些只有通过复杂的中间运算过程才会等到结果的时候,就需要使用数组公式了。
6、数组公式的计算
规律很简单:两个同行同列的数组计算是对应元素间进行运算,并返回同样大小的数组。
不难看出:一个数组与一个单一的数据进行运算,是将数组的每一元素均与那个单一数据进行计算,并返回同样大小的数组。
单列数组与单行数组的计算:A、计算结果返回一个多行列的数组;B、返回数组的行数同单列数组的行数相同、列数同单行数组的列数相同。C、返回数组中第R行第C列的元素是单列数组的第R个元素和单行数组的第C个元素运算的结果。
4、行数(或列数)相同的单列(或单行)数组与多行多列数组的计算
(1)单列数组的行数与多行多列数组的行数相同时:
(2)单行数组的列数与多行多列数组的列数相同时:
计算规律同单行单列的数组计算的规律大同小异:A、计算结果返回一个多行列的数组;B、返回数组的行、列数与多行多列数组的行列数相同;C、单列数组与多行多列数组计算时,返回的数组的第R行第C列的数据等于单列数组的第R行的数据与多行多列数组的第R行第C列的数据的计算结果;D、单行数组与多行多列数组计算时,返回的数组的第R行第C列的数据等于单行数组的第C列的数据与多行多列数组的第R行第C列的数据的计算结果。
所以输入多单元格数组公式时,应先选中需要返回数据的单元格区域,选中的单元格区域的行、列数应与返回数组的行、列数相同。否则,如果选中的区域小于数组返回的行列数,站在教室里,我们只能看到占了座位的这群学生。如果选择的区域大于数组返回的行列数,那超出的区域将会没有学生去坐而返回#N/A值。
第 IX 条 自定义函数
第 X 条 最常用的函数
节 10.01 Sumif
Sumif允许你替他设置多行多列的条件和求和区域。面对多行多列的条件区域,在计算时,SUMIF函数会一次判断这个区域中的各个数据是否满足求和的条件,如果满足求和条件,则将第3参数中对应位置的数据相加,再输出最后的求和结果。
(a) SUMIF多行多列条件区域求和
(b) SUMIF求最后一次记录之和
求如下图每个销售员最后一次销售记录之和,即图中黄色数据之和。
每个参与求和的数据,都在每行第一个空单元格的左边,这是他们的共同点,可以将其设置为求和条件。
(c) 多条件求和SUMIFs
Sumifs函数是sumif函数的升级版,他是Excel 2007及之后的版本才能使用的函数。
SUMIFs函数最多可设置127个求和条件,也就是说参数最多有255个。
节 10.02 COUNTIF
节 10.03 FIND与SEARCH
节 10.04 RIGHT、LEFT函数综合应用
(a) 将金额分列显示在多个单元格中
(b) 分离中英文字符
(c) 截取指定字符前的字符
节 10.05 SUBSTITUTE函数
替换字符串中的部分字符
SUBSTITUTE(text, old_text, new_text,[instance_num])
节 10.06 REPLACE函数
Replace函数用于替换字符串中指定位置的字符,无论该位置是什么字符,函数都能将其替换。
节 10.07 TEXT函数与自定义格式
TEXT函数格式代码共有四个区段,每个区段之间用英文分号(;)隔开,每个区段的代码作用于不同类型的数据:
① 正数;②负数;③零值;④文本
如果格式代码只有一个区段,则该代码作用于所有的数字上;
如果格式代码有两个区段,则第1区段作用于正数和0,第2区段作用于负数;
如果格式代码有3个区段,则第1区段作用于正数,第2区段作用于负数,第3区段作用于0值。


