动态格间运算--分组汇总

来源:互联网 发布:淘宝神笔在哪里 编辑:程序博客网 时间:2024/04/29 07:41

格集,是指一组单元格的集合。在实际应用中,往往需要对一组单元格进行运算,这些单元格有可能是固定格,也有可能是主动扩展、被动复制格,为了能在表达式中描述确定的一组单元格,我们引入格集的概念。
为了说明格集的概念及其作用,我们看看下面的表格:

填入数据:



如果我们要进行如下统计:①Tom买牛奶的日期;②Tom买毯子的金额;③Jerry在2005-2-1买的商品;④所有买牛奶的金额。在做这些统计时,涉及到的数据都是发生在一系列格子中的,我们分别来看一下:①c2,c3;②d4,d5;③d9,d11;④d2,d3,d6,d7,d8。

格集表示法

格集有以下几种表示方法:

- Cellx 可以表示只有一个单元格的格集,如:B3。单独一个单元格,也可以构成格集,即只有一个成员的集合。

- Cellx:Celly 其中Cellx与Celly均为单元格,该表达式表示以Cellx与Celly为对角点圈起的矩形区域,而且,Cellx在左上角,Celly在右下角。如:B2:C4。它表示由B2,B3,B4,C2,C3,C4构成的集合。

- 结果为集合的表达式。比如,对于不连续的多组单元格,可以用List()函数来表示。如:
List(B1,C2,B5,A4);
List(A2:A4,B2:B4);
List(A2,B2:B4)

- Cellx[Coordinate]{},表示在Cellx[层次坐标/位移坐标]所界定的范围内的所有单元格的集合。参见:扩展格的格集表示法

- Cellx[省略主格的Coordinate]{},表示在Cellx[省略主格的层次坐标/位移坐标]所界定的范围内的所有单元格的集合。参见:省略主格的格集表示法

- Cellx[Coordinate]{criteriaExp},表示在Cellx[层次坐标/位移坐标]所界定的范围内的所有符合criteriaExp条件的单元格的集合。参见:格集的条件表达式

扩展格的格集表示法:
扩展格的格集表示,一般和层次坐标结合起来,由层次坐标界定一个范围,格集是在这个范围内的所有单元格的集合。

语法:Cellx[Coordinate]{}

说明:表示在Cellx[层次坐标/位移坐标]所界定的范围内的所有单元格的集合。

格集相当于在层次坐标或者位移坐标的基础上增加了{},即可表示该层次坐标或者位移坐标界定的范围内的所有单元格。如果没有{},而层次坐标界定的范围内的单元格不止一个,那么该层次坐标返回的是该范围内的第一个单元格,有了{},就返回该范围内单元格的集合。

例如:

根据上图,我们可以得到:
C2[`0]{} 返回扩展后的c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12
C2[A2:2]{} 返回扩展后的c7,c8,c9,c10,c11,c12
D2[A2:1,B2:2]{} 返回扩展后的d4,d5,d6
D2[A2:2,B2:1]{} 返回扩展后的d7,d8,d9

省略主格的格集表示法:

为了简化格集的表示,很多时候会用到省略主格表示法,其缺省引用规则和层次坐标/位移坐标完全一样,即标单元格和当前格的主格相同时,层次坐标/位移坐标中的该主格可以省略;如果所有主格都相同,则层次坐标/位移坐标可以为空,甚至连中括号都可以省略。

语法:Cellx[省略主格的Coordinate]{}

说明:表示在Cellx[省略主格的层次坐标/位移坐标]所界定的范围内的所有单元格的集合。

如果层次坐标/位移坐标完全省略,则缺省的格集表示法为: Cellx[]{}或Cellx{}

例1:

例2:

对C4单元格来说,统计的是当前组中所有纵向扩展出来的C3单元格的总和,而这些单元格与当前格C4有共同的左主格A3,因此省略主格的汇总表达式为sum(C3{})。

对D3单元格来说,统计的是当前组中所有横向扩展出来的C3单元格的总和,而这些单元格与当前格C4有共同的上主格C1,因此省略主格的汇总表达式为sum(C3{})。

对D4单元格来说,统计的是当前组中所有扩展出来的C3单元格的总和,而这些单元格与当前格C4有共同的左主格A3和上主格C1,因此省略主格的汇总表达式为sum(C3{})。

格集的应用

在文档中,统一用CellSet表示格集。
格集往往在单元格的范围计算函数中使用,例如sum(CellSet)。如:
Sum(A2:A4)
Sum(List(A2,B2:B4))
Sum(A2{})
需要注意,Cellx:Celly中左上和右下均为单元格,而不能用Cell{}和Celly{}。对于象下例中的情况,如果要计算黄色区域所有数据的汇总值,应写成sum(B1[A1:1,B1:1]:C2[A1:3,C2:2])。

0 0