请教Excel函数?

4.1.1 什么是集合运算
集合在数学领域表示“各种各样的事物的总和”,在数据库领域表示记录的集合.。具体来说,表、视图和查询的执行结果都是记录的集合,其中的元素为表或者查询结果中的每一行。

在标准 SQL 中,分别对检索结果使用 UNION,INTERSECT, EXCEPT 来将检索结果进行并,交和差运算,像UNION,INTERSECT, EXCEPT这种用来进行集合运算的运算符称为集合运算符。

以下的文氏图展示了几种集合的基本运算.

在数据库中,所有的表–以及查询结果–都可以视为集合,因此也可以把表视为集合进行上述集合运算,在很多时候,这种抽象非常有助于对复杂查询问题给出一个可行的思路。

接下来我们演示UNION的具体用法及查询结果:

通过观察可以发现,商品编号为“ 0001 ”~“ 0003 ”的 3 条记录在两个表中都存在,因此大家可能会认为结果中会出现重复的记录,但是 UNION 等集合运算符通常都会除去重复的记录.

上述查询是对不同的两张表进行求并集运算. 对于同一张表, 实际上也是可以进行求并集的.

**练习题:**假设连锁店想要增加毛利率超过 50%或者售价低于 800 的货物的存货量, 请使用 UNION 对分别满足上述两个条件的商品的查询结果求并集.

那么是不是就没必要引入 UNION 了呢? 当然不是这样的. 确实, 对于同一个表的两个不同的筛选结果集, 使用 UNION 对两个结果集取并集, 和把两个子查询的筛选条件用 OR 谓词连接, 会得到相同的结果, 但倘若要将两个不同的表中的结果合并在一起, 就不得不使用 UNION 了.

而且, 即便是对于同一张表, 有时也会出于查询效率方面的因素来使用 UNION.

分别使用 UNION 或者 OR 谓词,找出毛利率不足 30%或毛利率未知的商品.

在1.1.1 中我们发现, SQL 语句的 UNION 会对两个查询的结果集进行合并和去重, 这种去重不仅会去掉两个结果集相互重复的, 还会去掉一个结果集中的重复行. 但在实践中有时候需要需要不去重的并集, 在 UNION 的结果中保留重复行的语法其实非常简单,只需要在 UNION 后面添加 ALL 关键字就可以了.

例如, 想要知道 product 和 product2 中所包含的商品种类及每种商品的数量, 第一步,就需要将两个表的商品种类字段选出来, 然后使用 UNION ALL 进行不去重地合并. 接下来再对两个表的结果按 product_type 字段分组计数.

商店决定对product表中利润低于50%和售价低于1000的商品提价, 请使用UNION ALL 语句将分别满足上述两个条件的结果取并集. 查询结果类似下表:

Bag 是和 set 类似的一种数学结构, 不一样的地方在于: bag 里面允许存在重复元素, 如果同一个元素被加入多次, 则袋子里就有多个该元素.

通过上述 bag 与 set 定义之间的差别我们就发现, 使用 bag 模型来描述数据库中的表在很多时候更加合适.

是否允许元素重复导致了 set 和 bag 的并交差等运算都存在一些区别. 以 bag 的交为例, 由于 bag 允许元素重复出现, 对于两个 bag, 他们的并运算会按照: 1.该元素是否至少在一个 bag 里出现过, 2.该元素在两个 bag 中的最大出现次数 这两个方面来进行计算. 因此对于 A = {1,1,1,2,3,5,7}, B = {1,1,2,2,4,6,8} 两个

通常来说, 我们会把类型完全一致, 并且代表相同属性的列使用 UNION 合并到一起显示, 但有时候, 即使数据类型不完全相同, 也会通过隐式类型转换来将两个类型不同的列放在一列里显示, 例如字符串和数值类型:

使用 SYSDATE()函数可以返回当前日期时间, 是一个日期时间类型的数据, 试测试该数据类型和数值,字符串等类型的兼容性.

例如, 以下代码可以正确执行, 说明时间日期类型和字符串,数值以及缺失值均能兼容.

集合的交, 就是两个集合的公共部分, 由于集合元素的互异性, 集合的交只需通过文氏图就可以很直观地看到它的意义.

4.1.4 差集,补集与表的减法
求集合差集的减法运算和实数的减法运算有些不同, 当使用一个集合A减去另一个集合B的时候,对于只存在于集合B而不存在于集合A的元素, 采取直接忽略的策略,因此集合A和B做减法只是将集合A中也同时属于集合B的元素减掉.

使用NOT谓词进行集合的减法运算, 求出product表中, 售价高于2000,且利润不低于30%的商品, 结果应该如下表所示.

对于两个 bag, 他们的差运算会按照:

1.该元素是否属于作为被减数的 bag,

2.该元素在两个 bag 中的出现次数

对于同一个表的两个查询结果而言, 他们的交INTERSECT实际上可以等价地将两个查询的检索条件用AND谓词连接来实现.

****使用AND谓词查找product表中利润率高于50%,并且售价低于1500的商品,查询结果如下所示.

两个集合A,B的对称差是指那些仅属于A或仅属于B的元素构成的集合. 对称差也是个非常基础的运算, 例如, 两个集合的交就可以看作是两个集合的并去掉两个集合的对称差.上述方法在其他数据库里也可以用来简单地实现表或查询结果的对称差运算: 首先使用UNION求两个表的并集, 然后使用INTERSECT求两个表的交集, 然后用并集减去交集, 就得到了对称差.

但由于在MySQL 8.0 里, 由于两个表 交查询 结果的并不能直接求出来, 因此并不适合使用上述思路来求对称差. 好在还有差集运算可以使用. 从直观上就能看出来, 两个集合的对称差等于 A-B并上B-A, 因此实践中可以用这个思路来求对称差.

使用product表和product2表的对称差来查询哪些商品只在其中一张表, 结果类似于:

提示: 使用 NOT IN 实现两个表的差集.

前一节我们学习了 UNION和INTERSECT 等集合运算, 这些集合运算的特征就是以行方向为单位进行操作. 通俗地说, 就是进行这些集合运算时, 会导致记录行数的增减. 使用 UNION 会增加记录行数,而使用 INTERSECT 或者 EXCEPT 会减少记录行数.

但这些运算不能改变列的变化, 虽然使用函数或者 CASE表达式等列运算, 可以增加列的数量, 但仍然只能从一张表中提供的基础信息列中获得一些"引申列", 本质上并不能提供更多的信息. 如果想要从多个表获取信息, 例如, 如果我们想要找出某个商店里的衣服类商品的名称,数量及价格等信息, 则必须分别从 shopproduct 表和 product 表获取信息.

截至目前,本书中出现的示例(除了关联子查询)基本上都是从一张表中选取数据,但实际上,期望得到的数据往往会分散在不同的表之中, 这时候就需要使用连结了.
之前在学习关联子查询时我们发现, 使用关联子查询也可以从其他表获取信息, 但连结更适合从多张表获取信息.

连结(JOIN)就是使用某种关联条件(一般是使用相等判断谓词"="), 将其他表中的列添加过来, 进行“添加列”的集合运算. 可以说,连结是 SQL 查询的核心操作, 掌握了连结, 能够从两张甚至多张表中获取列, 能够将过去使用关联子查询等过于复杂的查询简化为更加易读的形式, 以及进行一些更加复杂的查询.

SQL 中的连结有多种分类方法, 我们这里使用最基础的内连结和外连结的分类方法来分别进行讲解.

找出某个商店里的衣服类商品的名称,数量及价格等信息.

我们进一步把这个问题明确化:

找出东京商店里的衣服类商品的商品名称,商品价格,商品种类,商品数量信息.

4.2.1.1 使用内连结从两个表获取信息
我们先来分别观察所涉及的表, product 表保存了商品编号,商品名称,商品种类等信息,这个表可以提供关于衣服种类的衣服的详细信息, 但是不能提供商店信息.

我们接下来观察 shopproduct 表, 这个表里有商店编号名称,商店的商品编号及数量. 但要想获取商品的种类及名称售价等信息,则必须借助于 product 表.

所以问题的关键是, 找出一个类似于"轴"或者"桥梁"的公共列, 将两张表用这个列连结起来. 这就是连结运算所要作的事情.

我们来对比一下上述两张表, 可以发现, 商品编号列是一个公共列, 因此很自然的事情就是用这个商品编号列来作为连接的“桥梁”,将product和shopproduct这两张表连接起来。

如果你使用过 excel 的 vlookup 函数, 你会发现这个函数正好也能够实现这个功能. 实际上, 在思路上, 关联子查询更像是 vlookup 函数: 以表 A 为主表, 然后根据表 A 的关联列的每一行的取值,逐个到表 B 中的关联列中去查找取值相等的行.
当数据量较少时, 这种方式并不会有什么性能问题, 但数据量较大时, 这种方式将会导致较大的计算开销: 对于外部查询返回的每一行数据, 都会向内部的子查询传递一个关联列的值, 然后内部子查询根据传入的值执行一次查询然后返回它的查询结果. 这就使得, 例如外部主查询的返回结果有一万行, 那么子查询就会执行一万次, 这将会带来非常恐怖的时间消耗.

我们把上述问题进行分解:

首先, 找出每个商店的商店编号, 商店名称, 商品编号, 商品名称, 商品类别, 商品售价,商品数量信息.

观察查询结果, 我们看到,这个结果里的列已经包含了所有我们需要的信息.

关于内连结,需要注意以下三点:

要点一: 进行连结时需要在 FROM 子句中使用多张表.

在进行内连结时 ON 子句是必不可少的(大家可以试试去掉上述查询的 ON 子句后会有什么结果).

ON 子句是专门用来指定连结条件的, 我们在上述查询的 ON 之后指定两张表连结所使用的列以及比较条件, 基本上, 它能起到与 WHERE 相同的筛选作用, 我们会在本章的结尾部分进一步探讨这个话题.

要点三: SELECT 子句中的列最好按照 表名.列名 的格式来使用.

当两张表的列除了用于关联的列之外, 没有名称相同的列的时候, 也可以不写表名, 但表名使得我们能够在今后的任何时间阅读查询代码的时候, 都能马上看出每一列来自于哪张表, 能够节省我们很多时间.

但是, 如果两张表有其他名称相同的列, 则必须使用上述格式来选择列名, 否则查询语句会报错.

我们回到上述查询所回答的问题. 通过观察上述查询的结果, 我们发现, 这个结果离我们的目标: 找出东京商店的衣服类商品的基础信息已经很接近了. 接下来,我们只需要把这个查询结果作为一张表, 给它增加一个 WHERE 子句来指定筛选条件.

如果需要在使用内连结的时候同时使用 WHERE 子句对检索结果进行筛选, 则需要把 WHERE 子句写在 ON 子句的后边.

例如, 对于上述查询问题, 我们可以在前一步查询的基础上, 增加 WHERE 条件.

增加 WHERE 子句的方式有好几种,我们先从最简单的说起.

第一种增加 WEHRE 子句的方式, 就是把上述查询作为子查询, 用括号封装起来, 然后在外层查询增加筛选条件.

但实际上, 如果我们熟知 WHERE 子句将在 FROM 子句之后执行, 也就是说, 在做完 INNER JOIN … ON 得到一个新表后, 才会执行 WHERE 子句, 那么就得到标准的写法:

也就是说, 两张表是先按照连结列进行了连结, 得到了一张新表, 然后 WHERE 子句对这张新表的行按照两个条件进行了筛选, 最后, SELECT 子句选出了那些我们需要的列.

此外, 一种不是很常见的做法是,还可以将 WHERE 子句中的条件直接添加在 ON 子句中, 这时候 ON 子句后最好用括号将连结条件和筛选条件括起来.

找出每个商店里的衣服类商品的名称及价格等信息. 希望得到如下结果:

分别使用连结两个子查询和不使用子查询的方式, 找出东京商店里, 售价低于 2000 的商品信息,希望得到如下结果.

最简单的情形, 是在内连结之前就使用 GROUP BY 子句.

但是如果分组列和被聚合的列不在同一张表, 且二者都未被用于连结两张表, 则只能先连结, 再聚合.

每个商店中, 售价最高的商品的售价分别是多少?

注: 这道题的一个简易的方式是使用下一章的窗口函数. 当然, 也可以使用其他我们已经学过的知识来实现, 例如, 在找出每个商店售价最高商品的价格后, 使用这个价格再与 product 列进行连结, 但这种做法在价格不唯一时会出现问题.

**练习题:**每类商品中售价最高的商品都在哪些商店有售?

之前的内连结, 连结的都是不一样的两个表. 但实际上一张表也可以与自身作连结, 这种连接称之为自连结. 需要注意, 自连结并不是区分于内连结和外连结的第三种连结, 自连结可以是外连结也可以是内连结, 它是不同于内连结外连结的另一个连结的分类方法.

4.2.1.5 内连结与关联子查询
回忆一下关联子查询中的问题:找出每个商品种类当中售价高于该类商品的平均售价的商品。当时我们是使用关联子查询来实现的。

1.分别使用内连结和关联子查询每一类商品中售价最高的商品.

自然连结并不是区别于内连结和外连结的第三种连结, 它其实是内连结的一种特例–当两个表进行自然连结时, 会按照两个表中都包含的列名来进行等值内连结, 此时无需使用 ON 来指定连接条件.

试写出与上述自然连结等价的内连结.

这个结果和书上给的结果并不一致, 少了运动 T 恤, 这是由于运动 T 恤的 regist_date 字段为空, 在进行自然连结时, 来自于 product 和 product2 的运动 T 恤这一行数据在进行比较时, 实际上是在逐字段进行等值连结, 回忆我们在 6.2ISNULL,IS NOT NULL 这一节学到的缺失值的比较方法就可得知, 两个缺失值用等号进行比较, 结果不为真. 而连结只会返回对连结条件返回为真的那些行.

如果我们将查询语句进行修改:

我们在上一节表的加减法里知道, MySQL 8.0 里没有交集运算, 我们当时是通过并集和差集来实现求交集的. 现在学了连结, 让我们试试使用连结来实现求交集的运算.

注意上述结果和 P230 的结果并不一致–少了 product_id=‘0001’ 这一行, 观察源表数据可发现, 少的这行数据的 regist_date 为缺失值,而缺失值是不能用等号进行比较的,所以查询结果中缺少改行数据。

如果我们仅仅用 product_id 来进行连结:

内连结会丢弃两张表中不满足 ON 条件的行,和内连结相对的就是外连结. 外连结会根据外连结的种类有选择地保留无法匹配到的行.

按照保留的行位于哪张表,外连结有三种形式: 左连结, 右连结和全外连结.

左连结会保存左表中无法按照 ON 子句匹配到的行, 此时对应右表的行均为缺失值; 右连结则会保存右表中无法按照 ON 子句匹配到的行, 此时对应左表的行均为缺失值; 而全外连结则会同时保存两个表中无法按照 ON子句匹配到的行, 相应的另一张表中的行用缺失值填充.

三种外连结的对应语法分别为:

4.2.2.2 使用左连结从两个表获取信息
如果你仔细观察过将 shopproduct 和 product 进行内连结前后的结果的话, 你就会发现, product 表中有两种商品并未在内连结的结果里, 就是说, 这两种商品并未在任何商店有售(这通常意味着比较重要的业务信息, 例如, 这两种商品在所有商店都处于缺货状态, 需要及时补货). 现在, 让我们先把之前内连结的 SELECT 语句转换为左连结试试看吧.

练习题: 统计每种商品分别在哪些商店有售, 需要包括那些在每个商店都没货的商品.

使用左连结的代码如下(注意区别于书上的右连结):

我们观察上述结果可以发现, 有两种商品: 高压锅和圆珠笔, 在所有商店都没有销售. 由于我们在 SELECT 子句选择列的显示顺序以及未对结果进行排序的原因, 这个事实需要你仔细地进行观察.

●外连结要点 1: 选取出单张表中全部的信息

与内连结的结果相比,不同点显而易见,那就是结果的行数不一样.内连结的结果中有 13 条记录,而外连结的结果中有 15 条记录,增加的 2 条记录到底是什么呢?这正是外连结的关键点. 多出的 2 条记录是高压锅和圆珠笔,这 2 条记录在 shopproduct 表中并不存在,也就是说,这 2 种商品在任何商店中都没有销售.由于内连结只能选取出同时存在于两张表中的数据,因此只在 product 表中存在的 2 种商品并没有出现在结果之中.相反,对于外连结来说,只要数据存在于某一张表当中,就能够读取出来.在实际的业务中,例如想要生成固定行数的单据时,就需要使用外连结.如果使用内连结的话,根据 SELECT 语句执行时商店库存状况的不同,结果的行数也会发生改变,生成的单据的版式也会受到影响,而使用外连结能够得到固定行数的结果.虽说如此,那些表中不存在的信息我们还是无法得到,结果中高压锅和圆珠笔的商店编号和商店名称都是 NULL (具体信息大家都不知道,真是无可奈何).外连结名称的由来也跟 NULL 有关,即“结果中包含原表中不存在(在原表之外)的信息”.相反,只包含表内信息的连结也就被称为内连结了.

外连结还有一点非常重要,那就是要把哪张表作为主表.最终的结果中会包含主表内所有的数据.指定主表的关键字是 LEFT 和 RIGHT.顾名思义,使用 LEFT 时 FROM 子句中写在左侧的表是主表,使用 RIGHT 时右侧的表是主表.代码清单 7-11 中使用了 RIGHT ,因此,右侧的表,也就是 product 表是主表.我们还可以像代码清单 7-12 这样进行改写,意思完全相同.这样你可能会困惑,到底应该使用 LEFT 还是 RIGHT?其实它们的功能没有任何区别,使用哪一个都可以.通常使用 LEFT 的情况会多一些,但也并没有非使用这个不可的理由,使用 RIGHT 也没有问题.

通过交换两个表的顺序, 同时将 LEFT 更换为 RIGHT(如果原先是 RIGHT,则更换为 LEFT), 两种方式会到完全相同的结果.

上一小节我们学到了外连结的基础用法, 并且在上一节也学习了结合WHERE子句使用内连结的方法, 但在结合WHERE子句使用外连结时, 由于外连结的结果很可能与内连结的结果不一样, 会包含那些主表中无法匹配到的行, 并用缺失值填写另一表中的列, 由于这些行的存在, 因此在外连结时使用WHERE子句, 情况会有些不一样. 我们来看一个例子:

使用外连结从shopproduct表和product表中找出那些在某个商店库存少于50的商品及对应的商店.希望得到如下结果.

注意高压锅和圆珠笔两种商品在所有商店都无货, 所以也应该包括在内.

按照"结合WHERE子句使用内连结"的思路, 我们很自然会写出如下代码

观察发现, 少了在所有商店都无货的高压锅和圆珠笔. 聪明的你可能很容易想到,在WHERE子句中增加 quantity IS NOT NULL 的条件, 然而在真实的查询环境中, 由于数据量大且数据质量并非如系统说明和我们设想的那样"干净", 我们并不能很容易地意识到缺失值等问题数据的存在, 因此,还是让我们想一下如何改写我们的查询以使得它能够适应更复杂的真实数据的情形吧.

联系到我们已经掌握了的SQL查询的执行顺序(FROM->WHERE->SELECT),我们发现, 问题可能出在筛选条件上, 因为在进行完外连结后才会执行WHERE子句, 因此那些主表中无法被匹配到的行就被WHERE条件筛选掉了.

明白了这一点, 我们就可以试着把WHERE子句挪到外连结之前进行: 先写个子查询,用来从shopproduct表中筛选quantity<50的商品, 然后再把这个子查询和主表连结起来.

我们把上述思路写成SQL查询语句:

有了对左连结和右连结的了解, 就不难理解全外连结的含义了. 全外连结本质上就是对左表和右表的所有行都予以保留, 能用 ON 关联到的就把左表和右表的内容在一行内显示, 不能被关联到的就分别显示, 然后把多余的列用缺失值填充.

遗憾的是, MySQL8.0 目前还不支持全外连结, 不过我们可以对左连结和右连结的结果进行 UNION 来实现全外连结.

通常连结只涉及 2 张表,但有时也会出现必须同时连结 3 张以上的表的情况, 原则上连结表的数量并没有限制.

首先创建一个用于三表连结的表 Inventoryproduct.首先我们创建一张用来管理库存商品的表, 假设商品都保存在 P001 和 P002 这 2 个仓库之中.

表进行连结了(虽然也可以进行连结,但结果并不会发生改变, 因为本质上并没有增加新的限制条件).

即使想要把连结的表增加到 4 张、5 张……使用 INNER JOIN 进行添加的方式也是完全相同的.

正如之前所学发现的, 外连结一般能比内连结有更多的行, 从而能够比内连结给出更多关于主表的信息, 多表连结的时候使用外连结也有同样的作用.

使用非等值自左连结实现排名。

希望对 product 表中的商品按照售价赋予排名. 一个从集合论出发,使用自左连结的思路是, 对每一种商品,找出售价不低于它的所有商品, 然后对售价不低于它的商品使用 COUNT 函数计数. 例如, 对于价格最高的商品,

注 3: 实际上, 进行排名有专门的函数, 这是 MySQL 8.0 新增加的窗口函数中的一种(窗口函数将在下一章学习), 但在较低版本的 MySQL 中只能使用上述自左连结的思路.

使用非等值自左连结进行累计求和:

请按照商品的售价从低到高,对售价进行累计求和[注:这个案例缺少实际意义, 并且由于有两种商品价格相同导致了不必要的复杂度, 但示例数据库的表结构比较简单, 暂时未想出有实际意义的例题]

首先, 按照题意, 对每种商品使用自左连结, 找出比该商品售价价格更低或相等的商品

观察上述查询结果发现, 由于有两种商品的售价相同, 在使用 >= 进行连结时, 导致了累计求和错误, 这是由于这两种商品售价相同导致的. 因此实际上之前是不应该单独只用 >= 作为连结条件的. 考察我们建立自左连结的本意, 是要找出满足:1.比该商品售价更低的, 或者是 2.该种商品自身,以及 3.如果 A 和 B 两种商品售价相等,则建立连结时, 如果 P1.A 和 P2.A,P2.B 建立了连接, 则 P1.B 不再和 P2.A 建立连结, 因此根据上述约束条件, 利用 ID 的有序性, 进一步将上述查询改写为:

试将上述查询改用关联子查询实现.

之前的无论是外连结内连结, 一个共同的必备条件就是连结条件–ON 子句, 用来指定连结的条件. 如果你试过不使用这个连结条件的连结查询, 你可能已经发现, 结果会有很多行. 在连结去掉 ON 子句, 就是所谓的交叉连结(CROSS JOIN), 交叉连结又叫笛卡尔积, 后者是一个数学术语. 两个集合做笛卡尔积, 就是使用集合 A 中的每一个元素与集合 B 中的每一个元素组成一个有序的组合. 数据库表(或者子查询)的并,交和差都是在纵向上对表进行扩张或筛选限制等运算的, 这要求表的列数及对应位置的列的数据类型"相容", 因此这些运算并不会增加新的列, 而交叉连接(笛卡尔积)则是在横向上对表进行扩张, 即增加新的列, 这一点和连结的功能是一致的. 但因为没有了ON子句的限制, 会对左表和右表的每一行进行组合, 这经常会导致很多无意义的行出现在检索结果中. 当然, 在某些查询需求中, 交叉连结也有一些用处.

交叉连结的语法有如下几种形式:

可能这时会有读者想起前面我们提到过集合运算中的乘法会在本节中进行详细学习,这就是上面介绍的交叉连结.内连结是交叉连结的一部分,“内”也可以理解为“包含在交叉连结结果中的部分”.相反,外连结的“外”可以理解为“交叉连结结果之外的部分”.

交叉连结没有应用到实际业务之中的原因有两个.一是其结果没有实用价值,二是由于其结果行数太多,需要花费大量的运算时间和高性能设备的支持.

4.2.5.1[扩展阅读]连结与笛卡儿积的关系
考察笛卡儿积和连结, 不难发现, 笛卡儿积可以视作一种特殊的连结(事实上笛卡儿积的语法也可以写作 CROSS JOIN), 这种连结的 ON 子句是一个恒为真的谓词.

反过来思考, 在对笛卡儿积进行适当的限制之后, 也就得到了内连结和外连结.

4.2.6 连结的特定语法和过时语法
在笛卡尔积的基础上, 我们增加一个 WHERE 子句, 将之前的连结条件作为筛选条件加进去, 我们会发现, 得到的结果恰好是直接使用内连接的结果.

试执行以下查询, 并将查询结果与内连结一节第一个例子的结果做对比.

SQL 是一门特定语法及过时语法非常多的语言,虽然之前本书中也多次提及,但连结是其中特定语法的部分,现在还有不少年长的程序员和系统工程师仍在使用这些特定的语法.例如,将本节最初介绍的内连结的 SELECT 语句替换为过时语法的结果如下所示.

使用过时语法的内连结(结果与代码清单 7-9 相同)

第一,使用这样的语法无法马上判断出到底是内连结还是外连结(又或者是其他种类的连结).

第二,由于连结条件都写在 WHERE 子句之中,因此无法在短时间内分辨出哪部分是连结条件,哪部分是用来选取记录的限制条件.

第三,我们不知道这样的语法到底还能使用多久.每个 DBMS 的开发者都会考虑放弃过时的语法,转而支持新的语法.虽然并不是马上就不能使用了,但那一天总会到来的.

虽然这么说,但是现在使用这些过时语法编写的程序还有很多,到目前为止还都能正常执行.我想大家很可能会碰到这样的代码,因此还是希望大家能够了解这些知识.

讲到最常用,大家应该都熟悉,有朋友问excel最常用的八个函数,当然了,还有人问excel中的常用函数,这到底是咋回事?实际上新手如何掌握油门呢,今天小编和大家说说excel最常用的八个函数,一起来看看吧。

excel最常用的八个函数

2、left从左边取指定长度字符串函数

用法=left(字符串或所在单元格,长度),比如left(A1,1),就是从A1的左边取一位文本,例如A1中是“ABC”,则此公式结果为A

3、text文本格式函数

用法=text(字符串或单元格,文本格式),比如text(A1,"000"),就是让A1内的内容变成”000“这种格式,如A1中为1,则变为001

4、vlookup查找并返回指定值函数

用法=vlookup(查找值,查找区域,返回查找区域列数,匹配方式),比如Vlookup(A1,C:D,2,0),就是从C列中查找与A1万全相同的数值,并返回对应的D列的值

用法=if(条件,条件成立返回值,条件不成立返回值),列入if(A1>B1,1,0),就是如果A1的值大于B1的值,则结果为1,否则结果为0

Excel函数一共有11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。

当需要分析数据清单中的数值是否符合特定条件时,可以使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于 1,000 且小于 2,500 的行或记录的总数。

Microsoft Excel 共有 12 个工作表函数用于对存储在数据清单或数据库中的数据进行分析,这些函数的统一名称为 Dfunctions,也称为 D 函数,每个函数均有三个相同的参数:database、field 和 criteria。这些参数指向数据库函数所使用的工作表区域。

其中参数 database 为工作表上包含数据清单的区域。参数 field 为需要汇总的列的标志。参数 criteria 为工作表上包含指定条件的区域。

通过日期与时间函数,可以在公式中分析和处理日期值和时间值。

工程工作表函数用于工程分析。这类函数中的大多数可分为三种类型:对复数进行处理的函数、在不同的数字系统(如十进制系统、十六进制系统、八进制系统和二进制系统)间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。

财务函数可以进行一般的财务计算,如确定贷款的支付额、投资的未来值或净现值,以及债券或息票的价值。财务函数中常见的参数:

未来值 (fv)--在所有付款发生后的投资或贷款的价值。期间数 (nper)--投资的总支付期间数。

付款 (pmt)--对于一项投资或贷款的定期支付数额。

现值 (pv)--在投资期初的投资或贷款的价值。例如,贷款的现值为所借入的本金数额。

利率 (rate)--投资或贷款的利率或贴现率。

类型 (type)--付款期间内进行支付的间隔,如在月初或月末。

可以使用信息工作表函数确定存储在单元格中的数据的类型。信息函数包含一组称为 IS 的工作表函数,在单元格满足条件时返回 TRUE。

例如,如果单元格包含一个偶数值,ISEVEN工作表函数返回 TRUE。如果需要确定某个单元格区域中是否存在空白单元格,可以使用 COUNTBLANK工作表函数对单元格区域中的空白单元格进行计数,或者使用 ISBLANK 工作表函数确定区域中的某个单元格是否为空。

使用逻辑函数可以进行真假值判断,或者进行复合检验。例如,可以使用 IF 函数确定条件为真还是假,并由此返回不同的数值。

SUM函数的作用是求和。

Average 的作用是计算平均数。

COUNT函数计算含有数字的单元格的个数。

IF函数的作用是判断一个条件,然后根据判断的结果返回指定值。

条件判断的结果必须返回一个或TRUE或FALSE的值,即“是”或是“不是”。

NOW函数返回日期和时间。TODAY函数则只返回日期。

NOW函数和TODAY函数都没有参数,只用一对括号即可:

VLOOKUP函数用来在表格中查找数据。

=VLOOKUP(查找值,区域,要返回第几列的内容,1近似匹配 0精确匹配)

ISNUMBER判断单元格中的值是否是数字,返回TRUE或FALSE。

MIN和MAX是在单元格区域中找到最大和最小的数值。

SUMIF函数根据条件汇总,有三个参数:

=SUMIF(判断范围,判断要求,汇总的区域)

COUNTIF函数用来计算单元格区域内符合条件的单元格个数。

COUNTIF函数只有两个参数

Excel里的普通常用函数公式有哪些?

主要功能:求出所有参数的算术总值。

参数说明:number1,"),确认后,即可将A14单元格中字符、@、B14单元格中的字符和.com连接成一个整体,显示在C14单元格中。

特别提醒:如果参数不是引用的单元格,且为文本格式的,请给参数加上英文状态下的双引号,如果将上述公式改为:=A14&"@"&B14&".com",也能达到相同的目的。

主要功能:统计某个单元格区域中符合指定条件的单元格数目。

参数说明:Range代表要统计的单元格区域;Criteria表示指定的条件表达式。

应用举例:在C17单元格中输入公式:=COUNTIF(B1:B13,">=80"),确认后,即可统计出B1至B13单元格区域中,数值大于等于80的单元格数目。

特别提醒:允许引用的单元格区域中有空白单元格出现。

主要功能:给出指定数值的日期。

参数说明:year为指定的年份数值(小于9999);month为指定的月份数值(可以大于12);day为指定的天数。

应用举例:在C20单元格中输入公式:=DATE(),确认后,显示出。

特别提醒:由于上述公式中,月份为13,多了一个月,顺延至2004年1月;天数为35,比2004年1月的实际天数又多了4天,故又顺延至2004年2月4日。

主要功能:计算返回两个日期参数的差值。

参数说明:date1代表前面一个日期,date2代表后面一个日期;y(m、d)要求返回两个日期相差的年(月、天)数。

应用举例:在C23单元格中输入公式:=DATEDIF(A23,TODAY(),"y"),确认后返回系统当前日期[用TODAY()表示)与A23单元格中日期的差值,并返回相差的年数。

特别提醒:这是Excel中的一个隐藏函数,在函数向导中是找不到的,可以直接输入使用,对于计算年龄、工龄等非常有效。

主要功能:求出指定日期或引用单元格中的日期的天数。

参数说明:serial_number代表指定的日期或引用的单元格。

应用举例:输入公式:=DAY(""),确认后,显示出18。

特别提醒:如果是给定的日期,请包含在英文双引号中。

主要功能:返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。

参数说明:Database表示需要统计的单元格区域;Field表示函数所使用的数据列(在第一行必须要有标志项);Criteria包含条件的单元格区域。

应用举例:如图1所示,在F4单元格中输入公式:=DCOUNT(A1:D11,"语文",F1:G2),确认后即可求出“语文”列中,成绩大于等于70,而小于80的数值单元格数目(相当于分数段人数)。

特别提醒:如果将上述公式修改为:=DCOUNT(A1:D11,,F1:G2),也可以达到相同目的。

主要功能:以一列垂直数组返回某个区域中数据的频率分布。

参数说明:Data_array表示用来计算频率的一组数据或单元格区域;Bins_array表示为前面数组进行分隔一列数值。

应用举例:如图2所示,同时选中B32至B36单元格区域,输入公式:=FREQUENCY(B2:B31,D2:D36),输入完成后按下“Ctrl+Shift+Enter”组合键进行确认,即可求出B2至B31区域中,按D2至D36区域进行分隔的各段数值的出现频率数目(相当于统计各分数段人数)。

特别提醒:上述输入的是一个数组公式,输入完成后,需要通过按“Ctrl+Shift+Enter”组合键进行确认,确认后公式两端出现一对大括号({}),此大括号不能直接输入。

主要功能:根据对指定条件的逻辑判断的真假结果,返回相对应的内容。

参数说明:Logical代表逻辑判断表达式;Value_if_true表示当判断条件为逻辑“真(TRUE)”时的显示内容,如果忽略返回“TRUE”;Value_if_false表示当判断条件为逻辑“假(FALSE)”时的显示内容,如果忽略返回“FALSE”。

应用举例:在C29单元格中输入公式:=IF(C26>=18,"符合要求","不符合要求"),确信以后,如果C26单元格中的数值大于或等于18,则C29单元格显示“符合要求”字样,反之显示“不符合要求”字样。

特别提醒:本文中类似“在C29单元格中输入公式”中指定的单元格,读者在使用时,并不需要受其约束,此处只是配合本文所附的实例需要而给出的相应单元格,具体请大家参考所附的实例文件。

主要功能:返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。

应用举例:如图3所示,在F8单元格中输入公式:=INDEX(A1:D11,4,3),确认后则显示出A1至D11单元格区域中,第4行和第3列交叉处的单元格(即C4)中的内容。

特别提醒:此处的行序号参数(row_num)和列序号参数(column_num)是相对于所引用的单元格区域而言的,不是Excel工作表中的行或列序号。

主要功能:将数值向下取整为最接近的整数。

参数说明:number表示需要取整的数值或包含数值的引用单元格。

应用举例:输入公式:=INT(18.89),确认后显示出18。

特别提醒:在取整时,不进行四舍五入;如果输入的公式为=INT(-18.89),则返回结果为-19。

主要功能:用于测试函数式返回的数值是否有错。如果有错,该函数返回TRUE,反之返回FALSE。

参数说明:Value表示需要测试的值或表达式。

应用举例:输入公式:=ISERROR(A35/B35),确认以后,如果B35单元格为空或“0”,则A35/B35出现错误,此时前述函数返回TRUE结果,反之返回FALSE。

特别提醒:此函数通常与IF函数配套使用,如果将上述公式修改为:=IF(ISERROR(A35/B35),"",A35/B35),如果B35为空或“0”,则相应的单元格显示为空,反之显示A35/B35

主要功能:从一个文本字符串的第一个字符开始,截取指定数目的字符。

参数说明:text代表要截字符的字符串;num_chars代表给定的截取数目。

应用举例:假定A38单元格中保存了“我喜欢天极网”的字符串,我们在C38单元格中输入公式:=LEFT(A38,3),确认后即显示出“我喜欢”的字符。

特别提醒:此函数名的英文意思为“左”,即从左边截取,Excel很多函数都取其英文的意思。

主要功能:统计文本字符串中字符数目。

参数说明:text表示要统计的文本字符串。

应用举例:假定A41单元格中保存了“我今年28岁”的字符串,我们在C40单元格中输入公式:=LEN(A40),确认后即显示出统计结果“6”。

特别提醒:LEN要统计时,无论中全角字符,还是半角字符,每个字符均计为“1”;与之相对应的一个函数——LENB,在统计时半角字符计为“1”,全角字符计为“2”。

主要功能:返回在指定方式下与指定数值匹配的数组中元素的相应位置。

参数说明:Lookup_value代表需要在数据表中查找的数值;

Lookup_array表示可能包含所要查找的数值的连续单元格区域;

应用举例:如图4所示,在F2单元格中输入公式:=MATCH(E2,B1:B11,0),确认后则返回查找的结果“9”。

特别提醒:Lookup_array只能为一列或一行。

主要功能:求出一组数中的最大值。

参数说明:number1,number2……代表需要求最大值的数值或引用单元格(区域),参数不超过30个。

应用举例:输入公式:=MAX(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最大值。

特别提醒:如果参数中有文本或逻辑值,则忽略。

主要功能:从一个文本字符串的指定位置开始,截取指定数目的字符。

参数说明:text代表一个文本字符串;start_num表示指定的起始位置;num_chars表示要截取的数目。

应用举例:假定A47单元格中保存了“我喜欢天极网”的字符串,我们在C47单元格中输入公式:=MID(A47,4,3),确认后即显示出“天极网”的字符。

特别提醒:公式中各参数间,要用英文状态下的逗号“,”隔开。

主要功能:求出一组数中的最小值。

参数说明:number1,number2……代表需要求最小值的数值或引用单元格(区域),参数不超过30个。

应用举例:输入公式:=MIN(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最小值。

特别提醒:如果参数中有文本或逻辑值,则忽略。

主要功能:求出两数相除的余数。

参数说明:number代表被除数;divisor代表除数。

应用举例:输入公式:=MOD(13,4),确认后显示出结果“1”。

特别提醒:如果divisor参数为零,则显示错误值“#DIV/0!”;MOD函数可以借用函数INT来表示:上述公式可以修改为:=13-4*INT(13/4)。

主要功能:求出指定日期或引用单元格中的日期的月份。

参数说明:serial_number代表指定的日期或引用的单元格。

应用举例:输入公式:=MONTH(""),确认后,显示出11。

特别提醒:如果是给定的日期,请包含在英文双引号中;如果将上述公式修改为:=YEAR(""),则返回年份对应的值“2003”。

主要功能:给出当前系统日期和时间。

参数说明:该函数不需要参数。

应用举例:输入公式:=NOW(),确认后即刻显示出当前系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。

特别提醒:显示出来的日期和时间格式,可以通过单元格格式进行重新设置。

主要功能:返回逻辑值,仅当所有参数值均为逻辑“假(FALSE)”时返回函数结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。

应用举例:在C62单元格输入公式:=OR(A62>=60,B62>=60),确认。如果C62中返回TRUE,说明A62和B62中的数值至少有一个大于或等于60,如果返回FALSE,说明A62和B62中的数值都小于60。

特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。

主要功能:返回某一数值在一列数值中的相对于其他数值的排位。

参数说明:Number代表需要排序的数值;ref代表排序数值所处的单元格区域;order代表排序方式参数(如果为“0”或者忽略,则按降序排名,即数值越大,排名结果数值越小;如果为非“0”值,则按升序排名,即数值越大,排名结果数值越大;)。

应用举例:如在C2单元格中输入公式:=RANK(B2,$B$2:$B$31,0),确认后即可得出丁1同学的语文成绩在全班成绩中的排名结果。

特别提醒:在上述公式中,我们让Number参数采取了相对引用形式,而让ref参数采取了绝对引用形式(增加了一个“$”符号),这样设置后,选中C2单元格,将鼠标移至该单元格右下角,成细十字线状时(通常称之为“填充柄”),按住左键向下拖拉,即可将上述公式快速复制到C列下面的单元格中,完成其他同学语文成绩的排名统计。

主要功能:从一个文本字符串的最后一个字符开始,截取指定数目的字符。

参数说明:text代表要截字符的字符串;num_chars代表给定的截取数目。

应用举例:假定A65单元格中保存了“我喜欢天极网”的字符串,我们在C65单元格中输入公式:=RIGHT(A65,3),确认后即显示出“天极网”的字符。

特别提醒:Num_chars参数必须大于或等于0,如果忽略,则默认其为1;如果num_chars参数大于文本长度,则函数返回整个文本。

主要功能:返回列表或数据库中的分类汇总。

参数说明:Function_num为1到11(包含隐藏值)或101到111(忽略隐藏值)之间的数字,用来指定使用什么函数在列表中进行分类汇总计算(如图6);ref1, ref2,……代表要进行分类汇总区域或引用,不超过29个。

应用举例:如图7所示,在B64和C64单元格中分别输入公式:=SUBTOTAL(3,C2:C63)和=SUBTOTAL103,C2:C63),并且将61行隐藏起来,确认后,前者显示为62(包括隐藏的行),后者显示为61,不包括隐藏的行。

特别提醒:如果采取自动筛选,无论function_num参数选用什么类型,SUBTOTAL函数忽略任何不包括在筛选结果中的行;SUBTOTAL函数适用于数据列或垂直区域,不适用于数据行或水平区域。

29、函数名称:SUM

主要功能:计算所有参数数值的和。

参数说明:Number1、Number2……代表需要计算的值,可以是具体的数值、引用的单元格(区域)、逻辑值等。

应用举例:如图7所示,在D64单元格中输入公式:=SUM(D2:D63),确认后即可求出语文的总分。

特别提醒:如果参数为数组或引用,只有其中的数字将被计算。数组或引用中的空白单元格、逻辑值、文本或错误值将被忽略;如果将上述公式修改为:=SUM(LARGE(D2:D63,{1,2,3,4,5})),则可以求出前5名成绩的和。

主要功能:计算符合指定条件的单元格区域内的数值和。

参数说明:Range代表条件判断的单元格区域;Criteria为指定条件表达式;Sum_Range代表需要计算的数值所在的单元格区域。

应用举例:如图7所示,在D64单元格中输入公式:=SUMIF(C2:C63,"男",D2:D63),确认后即可求出“男”生的语文成绩和。

特别提醒:如果把上述公式修改为:=SUMIF(C2:C63,"女",D2:D63),即可求出“女”生的语文成绩和;其中“男”和“女”由于是文本型的,需要放在英文状态下的双引号("男"、"女")中。

主要功能:根据指定的数值格式将相应的数字转换为文本形式。

参数说明:value代表需要转换的数值或引用的单元格;format_text为指定文字形式的数字格式。

特别提醒:format_text参数可以根据“单元格格式”对话框“数字”标签中的类型进行确定。

主要功能:给出系统日期。

参数说明:该函数不需要参数。

应用举例:输入公式:=TODAY(),确认后即刻显示出系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。

特别提醒:显示出来的日期格式,可以通过单元格格式进行重新设置(参见附件)。

主要功能:将一个代表数值的文本型字符串转换为数值型。

参数说明:text代表需要转换文本型字符串数值。

应用举例:如果B74单元格中是通过LEFT等函数截取的文本型字符串,我们在C74单元格中输入公式:=VALUE(B74),确认后,即可将其转换为数值型。

特别提醒:如果文本型数值不经过上述转换,在用函数处理这些数值时,常常返回错误。

主要功能:在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值。

参数说明:Lookup_value代表需要查找的数值;Table_array代表需要在其中查找数据的单元格区域;Col_index_num为在table_array区域中待返回的匹配值的列序号(当Col_index_num为2时,返回table_array第2列中的数值,为3时,返回第3列的值……);Range_lookup为一逻辑值,如果为TRUE或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value的最大数值;如果为FALSE,则返回精确匹配值,如果找不到,则返回错误值#N/A。

应用举例:参见图7,我们在D65单元格中输入公式:=VLOOKUP(B65,B2:D63,3,FALSE),确认后,只要在B65单元格中输入一个学生的姓名(如丁48),D65单元格中即刻显示出该学生的语言成绩。

主要功能:给出指定日期的对应的星期数。

参数说明:serial_number代表指定的日期或引用含有日期的单元格;return_type代表星期的表示方式[当Sunday(星期日)为1、Saturday(星期六)为7时,该参数为1;当Monday(星期一)为1、Sunday(星期日)为7时,该参数为2(这种情况符合中国人的习惯);当Monday(星期一)为0、Sunday(星期日)为6时,该参数为3]。

应用举例:输入公式:=WEEKDAY(TODAY(),2),确认后即给出系统日期的星期数。

特别提醒:如果是指定的日期,请放在英文状态下的双引号中,如=WEEKDAY("",2)。

基本技能:Excel中几个常用函数的应用

  • 既然是关于函数的,那么此处以IF函数、SUMIF函数、SUMIFS函数、COUNTIF函数、vlookup函数举例

  •  后面的条件范围和条件可以增加。

  • 附公式:计算某个区域中满足给定条件的单元格数目

  • 附false作为精确匹配,加$,绝对引用

新手如何掌握excel中最常用的10个函数

多按F1看帮助,里面对每个函数的用法给出了非常准确详实的解释,如果仅使用某函数的基础功能,那么看F1帮助足够了

至于如何熟练运用,举一反三,最好的方法就是多操练

那至于提高,就需要再进一步学习,或者在工作中自己碰到复杂的问题时,通过自己研究、网上查找资料、向前辈请教等等方法学习了

在EXCEL中常用函数的参数有哪些?

菜单“插入”“函数”,你可以查看常用函数。如下图所示:

AND “与”运算,返回逻辑值,仅当有参数的结果均为逻辑“真(TRUE)”时返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。 

COLUMN 显示所引用单元格的列标号值。 

CONCATENATE 将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。

COUNTIF 统计某个单元格区域中符合指定条件的单元格数目。  

DAY 计算参数中指定日期或引用单元格中的日期天数。  

DCOUNT 返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。

FREQUENCY 以一列垂直数组返回某个区域中数据的频率分布。

IF 根据对指定条件的逻辑判断的真假结果,返回相对应条件触发的计算结果。 

INDEX 返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。  

INT 将数值向下取整为最接近的整数。 

ISERROR 用于测试函数式返回的数值是否有错。如果有错,该函数返回TRUE,反之返回FALSE。

LEFT 从一个文本字符串的第一个字符开始,截取指定数目的字符。

LEN 统计文本字符串中字符数目。 

MATCH 返回在指定方式下与指定数值匹配的数组中元素的相应位置。 

MAX 求出一组数中的最大值。

MID 从一个文本字符串的指定位置开始,截取指定数目的字符。 

MIN 求出一组数中的最小值。

MONTH 求出指定日期或引用单元格中的日期的月份。  

NOW 给出当前系统日期和时间。 

OR 仅当所有参数值均为逻辑“假(FALSE)”时返回结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。

RANK 返回某一数值在一列数值中的相对于其他数值的排位。

RIGHT 从一个文本字符串的最后一个字符开始,截取指定数目的字符。 

SUMIF 计算符合指定条件的单元格区域内的数值和。

TEXT 根据指定的数值格式将相应的数字转换为文本形式 数值文本转换 

VALUE 将一个代表数值的文本型字符串转换为数值型。

VLOOKUP 在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值 条件定位  

Excel中最常用的几个数学计算函数

其实哪些常用,因人因事因职业和需要而异。

在 Excel 中使用指定的区域创建动态图表 09:30如果您选择一个图表系列并查看 Excel 的公式行,则会看到系列是由使用 SERIES 函数的公式生成的。SERIES 是一种用于定义图表系列的特殊函数,它只能在此类环境中使用。您不能将它用于工作表,也不能在它的参数中包含工作表的函数或公式。关于 SERIES 函数的参数在除气泡图以外的所有图表类型中,SERIES 函数都具有下表中列出的参数。在气泡图中,SERIES 函数还要用一个额外的参数来指定气泡的大小。参数 必选/可选 指定 名称 可选 显示在图例中的名称 分类标志 可选 显示在分类轴上的标志(如果忽略,Excel 将使用连续的整数作为标志) 值 必选 Excel 所绘制的值 顺序 必选 系列的绘制顺序 比如公式 =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$1624,Sheet1!$B$2:$B$1624,1)该公式中的参数与“源数据”对话框中各项的关系如下所示:名称参数 参数 Sheet1!$B$1 显示在“名称”框中。由于 Sheet1!$B$1 包含“价格”标志,因此该系列在“系列”框中以“价格”作为标识。 分类标志参数 参数 Sheet1!$A$2:$A$1624 显示在“分类(X)轴标志”框中。 值参数 参数 Sheet1!$B$2:$B$1624 显示在“值”框中。 顺序参数 由于此图表只有一个系列,因此顺序参数为 1。这种默认的绘制顺序由“价格”系列在“系列”列表框中的位置反映。 SERIES 函数的作用:创建动态图表。例如,最新输入的 30 个点。您可能已经知道,Excel 中的所有名称都是公式名称而不是区域名称。公式通常解析为区域引用。例如,如果选择 Sheet1 上的 A1:A10,并使用“定义”命令(“插入”菜单,“名称”命令)为区域选择创建名称,Excel 会将该名称定义为:=Sheet1!$A$1:$A$10 如果将某些函数添加到定义名称的公式中,该名称就可以根据工作表的情况而引用不同的工作表区域。自动绘制新数据上图显示的图表将 Sheet1!$A$2:$A$1624 绘制为分类轴标志,将 Sheet1!$B$2:$B$1624 绘制为“价格”系列的值。要使该图表自动包含在 A 列和 B 列中新增的数据点, 应在 Sheet1 上创建以下名称:名称 定义 日期 =OFFSET(Sheet1!$A$1,1,0,COUNTA($A:$A)-1) 价格 =OFFSET(Sheet1!$B$1,1,0,COUNTA($B:$B)-1) 这些公式的实际意义是:“指定一个区域,该区域从 A1(或 B1)的下一行开始,其行数比 A 列(或 B 列)中的已填充单元格数少 1”。随着 A 列和 B 列中已填充单元格数的增多,该公式会自动解析为更大的区域。只有当新数据出现在已有单元格紧下方的单元格中时,区域中才会包含该数据。当然,为使该功能可以提供预期的结果,A 列和 B 列的其余部分必须为空。定义了这些动态名称后,可以用下面两种方法中的一种,将它们应用于图表的 SERIES 公式:使用公式栏的方法 只需选择要修改的图表系列,然后在公式栏上编辑 SERIES 公式即可。 使用对话框的方法 选择图表,然后单击“图表”菜单上的“源数据”。在“系列”选项卡上,编辑相应的数据项。 注释 为应用名称而设计的菜单命令(“插入”菜单,“名称”命令,“应用”命令)不能用来应用此类名称;该命令在这种情况下是无效的。使用对话框的方法可能更简单一些,因为您可以清楚地看到所做的更改,但无论您选择哪一种方法,某一处的更改都会在另一处反映出来,而且您必须将工作表引用保留在原来的位置上。例如,如果“值”框包含 =Sheet1!$B$2:$B:1624,应保留 Sheet1! 部分不动,仅将绝对区域地址替换为新的区域名称。如果该名称在您的工作簿中是唯一的,Excel 最终会将它显示为工作簿级别的名称,如下图所示。只绘制最新的数据点如果希望在价格图表示例中只绘制最新的 30 个点,可以按如下所示修改名称

我要回帖

更多关于 表格里面的函数 的文章

 

随机推荐