附件等有空做好了再发,希望能讲清楚就不用附件了,呵呵。 在数据有效性,条件格式中都会涉及到对单元格的引用,如果留心大家会发现里面还是有些细节需要注意的。 以数据有效性为例,用输入时限制空格的输入为例进行讲解。 步骤: 选中需要的一个单元格区域,可以是单单元格,单元格行,单元格列,单元格矩形区域。为了通用性,以矩形单元格区域为列进行说明。 数据-》有效性-》设置-》自定义-》公式:=len(单元格引用)=len(substitute(单元格引用," ","")). 进入主题,这里讲讲有关这个单元格引用的不同引用方式产生的不同效果问题。 选择一个单元格区域的时候会有一个单元格是反白的,那个单元格就是当前编辑单元格,在条件格式和数据有效性的时候就是参照单元格。大家其实注意到我们要设置的格式,要设置的数据有效性其实是针对整个区域的,但是在写公式的时候我们只为一个单元格分配公式,这个单元格就是当前的编辑单元格,一般情况下就是左上角的单元格。在给这一个单元格写好公式后,区域中的其他单元格公式是系统自动映射过去的。映射的规则根据单元格引用方式的不同而不同。 假设我们选中的区域是 B2:E5,当前编辑单元格就是B2,我们要给这个片区设置数据有效性-不准有空格。那么我们在选中这个区域进行有效性公式设置的时候,我们只是对B2单元格进行了设置,但是效果会蔓延到整个B2:E5区域。但蔓延的效果和设置公式时对B2单元格的引用方式有很大关系。 假设:我们的公式如下:=len(b2单元格引用)=len(substitute(b2单元格引用," ","")).功能就是没有空格。 各种引用方式的表现 B2的形式,那么最后的效果是每个单元格的公式都是以自身单元格为参数进行运算的 比如:C3的有效性公式为:=len(C3)=len(substitute(C3," ","")) $B2的形式,那么区域内的单元格都是以本行最左单元格为参数进行运算的 比如:C2的有效性公式为:=len($B2)=len(substitute($B2," ","")) C3的有效性公式为:=len($B3)=len(substitute($B3," ","")) B$2的形式,那么区域单元格都是以本列最上单元格作为参数进行运算的; 比如:C2的有效性公式为:=len(C$2)=len(substitute(C$2," ","")) C3的有效性公式为:=len(C$2)=len(substitute(C$2," ","")) $B$2的形式,那么区域所有单元格都是以左上单元格为参数进行运算的; 比如:C2的有效性公式为:=len($B$2)=len(substitute($B$2," ","")) C3的有效性公式为:=len($B$2)=len(substitute($B$2," ","")) ================================================================================= 进行扩展: 有时我们的有效性的约束条件不是来自自身单元格,也不是来自区域内部的行首或列首,而是其他的单元格,那么同样以上面的思想来实现。就是先对编辑单元格进行设置公式约束条件,然后由系统蔓延到整个区域。蔓延的规则是一样的。 关键:1,数据有效性,条件格式的公式都是正对编辑单元格写公式。 2,由系统根据编辑单元格公式的引用方式进行蔓延,蔓延到整个区域。 分清楚这两点对掌握有效性和条件格式有很大帮助,对以后写公式也有极大的帮助。因为同样的规则在进行名称定义的时候也是非常有用的。 有时我们写公式的时候不是使用编辑单元格,而是使用了其他的单元格,那么可以按照上面的内在规则进行动态平移。 本例编辑单元格是B2,,而在写有效性的时候使用A2(并且就是A2这样的引用格式)来做参数写, 就是说编辑单元格B2的约束条件::=len(A2)=len(substitute(A2," ","")) 那么C2单元格的约束条件就是::=len(B2)=len(substitute(B2," ","")). 实现的功能就是左边单元格不能有空格。 如果B2单元格约束公式中A2的引用格式不同,效果也是不同的,规则和直接引用B2单元格类似。大家可以通过设置好以后,然后查看区域的其他单元格的约束公式去尝试一下,会明白的。 ========================================== 同样规则也表现在条件格式中。好了自己体会一下会明白的 编辑中,有待上色,还有再讲一个条件格式的例子
[此贴子已经被作者于2008-1-22 15:32:31编辑过] |