Excel无法正常排序的常见原因

满足数据库形式的条件,即使按照上述顺序操作,也无法正常排序。无法正常排序的原因和处理方法如下:

想要只对选中的单元格内的内容进行排序,要做到这一点,请先检查是否勾选了【数据包含标题】,如果有,这一范围第一行不会作为排序对象,无法正常排序。

相反,若想以数据包含标题进行排序,而如果没有勾选【数据包含标题】这个选项,则项目行会被视为排序依据,数据的顺序就乱了。

如果用简单的方法排序后觉得数据有问题,可按Ctrl +Z 先恢复原状,再用详细的方法确认是否勾选了“数据包含标题”。

Excel排序的详细方法

如果排序标准只有1个的话,可以使用简单方法。但是如果标准有2个以上时,就要使用详细方法了。操作顺序如下:

➊ 任意点击想要排序表格中的一个单元格(表中的任意单元格)。

➋ 【数据】选项卡➛点击【排序】。

➌ 在【主要关键字】中选择【日期】。

➍ 在【次序】中选择【升序】。

➎ 选中【数据包含标题】。

➏ 点击【确定】。

当存在多个排序条件时,点击【添加条件】,可以追加条件。

Excel排序的简单方法

在确认排序的必要条件后,让我们以按照日期顺序排序为例来看一下排序的具体操作步骤。有简易的方法与详细的方法,我首先介绍一下简单方法。

➊ 选择【日期】项目下的任意单元格。

请在表格内选择想作为排序基准的任意列下的单元格。

➋ 【数据】选项卡➛点击【排序】标志左侧的【升序】。

Excel掌握正确操作排序、自动筛选、数据透视表的条件

“我不会排序。”

“即使点了自动筛选,下方数据也不在筛选范围。”

你是否也遇到上述的烦恼呢?用 Excel 制作表格时,“排序”、“自动筛选”都是我们必须要掌握的功能。实际上,要想让这些功能正常运行是有一定前提条件的。

建立数据库的4个条件

排序、自动筛选、数据透视表等都属于 Excel 的“数据分析功能”。要让这些“数据分析功能”正常运作,需要在表格中创建“数据库”。数据库形式的表格,必须满足以下4个条件。

  • 第一行为标题行
  • 第二行之后,每行连续输入一个数据
  • 周边不临接含有多余数据的单元格

(相对独立的单元格范围)

  • 中间没有空白行

具体来说,就是下表的状态。

数据库范例

像这样的格式,就是数据库了,可以正常运作排序、自动筛选功能。让我们来尝试一下,在这个表格范围内选择其中一个,按住Ctrl +A ,整个表格都会被选中。

按下Ctrl +A ,选中整个含有数据的表格

也就是说,数据库功能的目标范围一直延伸到数据最下面一行。

为了方便大家理解,现在和中途有空白行的表格做比较。如下表,中间存在空白行,在空白行上方范围内选中某个单元格,按下Ctrl +A 。

中间存在空白行,按下Ctrl +A 后

空白行下面的部分并不被识别是同一数据库范围,也就是说无法执行排序、自动筛选等操作。如果在进行排序和自动筛选时发现有些数据并不在范围内,就要认真确认表格中间是否存在空白行。

Excel在序列输入时经常会增减选项

像 C 列中的“负责人选项表”这一项目的选项,在实际工作中调整这个选项的数量的情况其实非常普遍。如输入商品名称等操作,输入选项会因为商品的改动或下架有所调整。遇到这样的情况,如果“负责人选项表”所指定的范围是 C2:C4这种固定范围的话,如果之后要在单元格 C5中追加新的负责人名字,那么就无法出现在单元格 A2的序列输入选项列中。

输入新的负责人,无法显示在序列中

如此一来,想要把 C5也放入指定范围中,我们需要再次设置【来源】指定的范围。如果不需要经常增减选项的话,这样的操作也不会花太多时间,但若是需要频繁修改【来源】的范围,那么就麻烦了。如果序列输入可以自动对应【来源】内容做出调整,即使需要频繁修改也不会觉得麻烦。

为此,请在“负责人选项表”名称的引用位置里输入如下公式:

=OFFSET(负责人!$C$1,1,0,COUNTA(负责人!$C:$C)-1,1)

引用位置中输入=OFFSET(负责人!$C$1,1,0,COUNTA(负责人!$C:$C)-1,1)

这里使用的是 OFFSET 函数。这个函数非常重要,请务必掌握。这一函数的要点有两个:

  • 确定作为基准的单元格,将其理解为引用的单元格从这一位置“偏离”
  • 以基准单元格偏离后为起点来指定单元格的范围

OFFSET 函数的公式:

【公式】

=OFFSET(基准单元格,偏离行数,偏离列数)

OFFSET 函数的语法为:“第一参数指定的单元格(基准单元格)开始,第二参数指定向上或向下偏移几行,第三参数指定从第二参数偏离后的位置向右或向左偏移几行”。第二参数为正数则向下移动,为负数则向上移动。第三参数为正数则向右移动,为负数则是向左移动。

下面来看一下使用案例吧。下图中的工作表是 A1:D3为范围以性别和课程来分类的费用表。

A1:D3为范围以性别和课程来分类的费用表

男性为1、女性为2,并用括号括起来。每项各自以单元格 A1为基准,男性的费用在单元格 A1的下一行,女性的费用在单元格 A1的下两行。

关于课程,初级为1、中级为2、高级为3。也是以单元格 A1为基准,初级在 A1向右一列,中级在 A1向右第二列,高级在 A1向右第三列。

这时,在单元格 B5输入代表性别的数值,在单元格 B6输入代表课程的数值,单元格 B7中就会显示相应的费用金额。想要建立这种结构,需要在单元格 B7输入以下函数公式:

=OFFSET(A1,B5,B6)

在单元格 B7中输入=OFFSET(A1,B5,B6)

这个公式可以导出以单元格 A1为基准,A1~B5指定的数字向下、B6指定的数字向右偏移的单元格的值。

如图所示,第二参数单元格 B5为1,第三参数指定的单元格 B6为2。如此一来,A1向下偏移一格、再向右偏移两格……即指向 C2的值。这利用的是 OFFSET 函数的基础逻辑:第一参数指定的单元格为基准,第二参数指定的数字向下,再从这一位置以第三参数指定的数字向右移动所指向的单元格。

第二参数指定的数字若为负数,则第一参数为基准向上移动,第三参数指定的数字若为负数,则第一参数为基准向左移动。

顺带一提,运用这一函数也可以解决“在 VLOOKUP 函数中,是否能获取位于检索列左侧的数值吗”这一问题(参考 P116)。

如何指定范围

另外,通过 OFFSET 函数,还能以从基准单元格按第二参数数值向下、第三参数数值向右偏移的位置为起点,再次指定范围。但是此时需再追加2个参数。

=OFFSET(基准单元格,偏移行数,偏移列数,高度,宽度)

在下表中,B 列为每天的销售额。在单元格 D1中输入想要知道从1号开始到第 N 天的累计销售额的天数,单元格 G1就会自动显示销售额数据。

此表中,D1的数值为2,销售额 G1中则显示1日~2日两天的累计销售额。

在单元格 G1中,需要输入以下函数公式:

=SUM(OFFSET(B1,1,0,D1,1))

一般要计算数值的和,都会用到 SUM 函数,SUM 函数可计算出括号内指定的单元格范围内的和。SUM 函数括号内的 OFFSET 函数就在指定的单元格范围。

首先,我们只看 OFFSET 函数部分,确认它所指定的范围。这是以单元格 B1为基准,向下移动1格、向右移动0格,也就是不向右移动。于是,偏移的目标单元格为 B2。

再以 B2为起点,指向第四参数指定的行数(此表中单元格 D1的值为2,即2行)和第五参数指定的1列的范围(具体为 B2:B3)。

这里需要掌握的重要信息为:OFFSET 函数的第四参数指定的范围的行数若发生变化,OFFSET 函数指定的范围也会有所变化。

OFFSET 函数所指定的范围,可利用“根据单元格 D1的值,纵向扩展”这一点灵活应对。

  • D1值为3➛B2:B4
  • D1值为5➛B2:B6

应用这个方法,即便是序列输入模式,可以应对【来源】范围中数据有所增加的情况,选项也会自动增加。

那么接下来,我们再来看一下刚刚以“负责人选项表”为引用范围输入的公式。

=OFFSET(负责人!$C$1,1,0,COUNTA(负责人!$C:$C)-1,1)

我们来分析一下这个公式。首先,以“负责人”工作表中单元格 C1为基准,向下移动1格、向右移动0格的目标单元格,即单元格 C2为起点的范围。

想要指定这个范围的行数,需要使用 COUNTA 函数。通过 COUNTA 函数,将整个 C 列的含数据的单元格的行数减去1。由于 C 列中含数据的单元格中含有第一行“负责人选项表”这一项目,因此需要减去这一行。

然后,用第五参数指定范围的宽度为1。

第四参数的 COUNTA 函数一般所取的是整个 C 列中含数据的行数减1后得到的数字,所以当 C 列中追加负责人后,“负责人选项表”的范围也应自动进行相应的扩大。

如此一来,单元格指定范围的“负责人选项表”下的数值,与单元格 A2的菜单中的下拉选项的数值必须要一致。

“负责人选项表”与单元格 A2的菜单中的下拉选项的数值一致

使用名称,设定序列输入

接下来,试着使用这个名称进行序列输入吧。为此,我们要在序列输入设置的【来源】栏中使用【粘贴名称】的功能。具体的操作步骤如下。

➊ 选择单元格 A2,【数据】选项卡➛点击【数据有效性】。

➋ 【设置】选项卡➛在【允许】中选择【序列】。

➌ 点击【来源】输入栏,按F3 键弹出【粘贴名称】。

➍ 选择【负责人选项表】后点击【确定】。

➎ 【来源】栏中输入有【=负责人选项表】,点击【确定】后结束操作。

这样做就可以在单元格范围内使用定义的名称设置序列输入了。

Excel为单元格或多个单元格范围定义名称

另外,在【来源】栏中指定含有作为选项的数据的单元格范围时,除用鼠标直接选中范围外,还可以命名单元格范围后再指定。因为 Excel 2003以前的版本,如果要将其他工作表的单元格作为“来源”使用,无法直接用鼠标操作选择范围来设置(Excel 2007之后的版本中可以)。

Excel 可以给任意单元格或单元格范围命名。这种功能叫作“定义名称”。

比如说,将单元格范围 C2:C4命名为“负责人选项表”吧。

➊ 选择单元格 C1,【公式】选项卡➛点击【定义名称】。

➋ 弹出“新建名称”的画面。

➌ 在【名称】一栏中输入想命名的名称。

运行这一功能后,能将选中的单元格的数值自动加入“名称”一栏中。如果想使用的数值已经存在于工作表的单元格中,那么直接选中该单元格即可。

➍ 如想要消除【引用位置】栏中原来的所有内容,可以用鼠标选择 C2:C4范围,点击【确定】。

➎ 于是 C2:C4范围被命名为“负责人选项表”。

在确认、编辑定义后的名称及其引用范围时,可以使用“名称管理器”。在【公式】选项卡中点击【名称管理器】后,就会看到以下画面,立刻就会知道名称和其对应的范围。

【名称管理器】画面

Excel下拉菜单:在工作表中预先制作选项一览

如下图所示,想要将 C 列中的负责人设置为选项,在单元格 A2中以序列模式输入,应该如何设置呢?

把 C 列中的负责人为选项,在单元格 A2中设置序列输入

选项数量不会有所增减(也就是说,后期不会进行数据更新),想在同一个工作表中设置参照系时,可以按照下面的步骤快速设置。

➊ 选中单元格 A2,【数据】选项卡➛点击【数据有效性】。

➋ 【设置】选项卡➛【允许】中选择【序列】。

➌ 【来源】栏中点击一下,鼠标选中单元格 C2~C4,点击【确定】。

这样就单元格 A2中设置了范围以 C2:C4为来源的序列输入模式。

单元格 A2,设置了单元格范围以 C2:C4为来源的序列输入模式

像这样,预先将单元格设置为序列输入模式,之后只要从选项中选择即可,不仅输入操作会更加轻松,也能避免输入错误信息。

比起将序列输入的来源范围放在同一张工作表中,另外准备一个工作表作为“选项表”用来整合数据这种做法更加方便。

Excel下拉菜单:实现男女性别下拉菜单选择输入

在输入性别等选项较少的信息时,我们可以按照以下方式,直接输入选项的字符串。

➊ 选中想要设置序列输入的单元格。

➋ 【数据】选项卡➛【数据有效性】➛【设置】选项卡➛【允许】中选择【序列】。

➌ 【来源】栏中输入“男,女”➛点击确定。

这样一来,在单元格 A2中就可以从“男”和“女”的序列中选择输入数据了。

单元格 A2,选择输入“男”或“女”

在【来源】栏中以逗号分隔输入内容的顺序,即是序列输入选项的出现顺序。并且大家要注意分隔符为半角逗号(,)。

Excel如何将输入模式更换为半角英数

在前文中的例子,输入单元格 A2的数值都是半角英数格式的。选择这一单元格时,输入模式默认为全角,输入的英文和数字也全部显示为全角状态,若要更改输入状态,就必须按Shift 键。这样稍微有些麻烦。如果可以在选中单元格 A2后,自动将输入模式切换为半角就方便多了。

另外,比如 A 列为姓名,B 列为电子邮箱地址,在制作这样的表格时,通常以全角形式在 A 列中输入姓名,然后切换成半角英数在 B 列中输入邮箱地址。这时,如果可以设置成在选中 B 列单元格后,自动切换为半角英数格式的话,就无需手动切换了,操作起来也会更加便捷。

具体操作顺序如下。

➊ 选择想要设定半角英数模式的单元格(整个 B 列)。

➋ 【数据有效性】➛点击【输入法模式】选项卡。

➌ 从【输入法模式】栏下拉菜单中选择【打开】,点击【确定】。

设置完毕后,只要选择了 B 列单元格,输入状态就会自动切换为半角英数模式。

即使在【输入法模式】栏中选择【关闭(英文模式)】,输入状态也会自动变为半角英数模式。但是这种情况下,在键盘上点击操作【半角/全角】键等,也可以将输入模式变为中文输入格式等。另一方面,如果这一操作无效时,只要不改变这一设定,就无法通过键盘改变输入状态。可能是为了增强“绝对不可以有半角英数之外的输入状态”这一限制,这一点我们要灵活运用。