想要将年、月、日分别输入不同的单元格时

我在前文中曾经提过“在输入日期时,请务必用“/”将年、月、日隔开。”但如果实际上这样操作非常麻烦。因此,需要“将年、月、日分别输入到不同的单元格,用作日期字段”,这样能够提高操作效率。但是想要分别输入不同的单元格时,需要将所在单元格的格式设置为非日期数据(序列值),否则 Excel 就无法自动将之认定为日期形式来处理。也就是说无法进行天数、时间段和年龄等计算,也不能将这日期自动转换成星期。

这时,要用到可以把年、月、日3个数值变为日期数据,即序列值的函数,那就是 DATE 函数。在导出显示日期形式的单元格中输入以下公式。首先,输入“=DATE(”,然后按住Ctrl 键,同时按顺序点击单元格 A2、B2、C2,这样能够快速完成操作。

=DATE(A2,B2,C2)

在单元格 D2中输入=DATE(A2,B2,C2)

DATE 函数是按照顺序在第一参数到第三参数中输入年、月、日的数字,并以此制作日期数据(即序列值)的函数。想要计算不是正确日期格式的日期数据时,应该先使用 DATE 函数将其转换为日期数据。

如果需要处理的日期数据为2014年1月1日,有时会用“20140101”的8位数值形式保存。如果想把它变为正确的日期数据,还是需要用到 DATE 函数来处理。这时,我们就用到后面接下来会介绍的 LEFT 函数、MID 函数、RIGHT 函数,分别抽出相应的年、月、日的数据,再逐个组入 DATE 函数。

【例】

=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))

关于这个技巧,我会在下一章的关于字符串操作中详细讲解。

经常更新工作表的日期(Excel自动当前日期)

“这份订单的制作日期怎么还是上一周啊!”

像订单这样的 Excel 表格,只是改变日期和内容来重复使用同一张工作表,经常会发生这种忘记更改相关项目的失误。为避免这样的情况发生,我们可以使用 TODAY 函数,自动将工作表的日期更新为当前日期。只要输入这个函数,之后就没有必要手动更新日期了。

=TODAY()

输入=TODAY()后显示的结果

=TODAY()后显示的结果

TODAY 函数在对截止交货期的天数、年龄、入社时间等需要自动计算的任务可以发挥很大的作用。如果要用 Excel 处理日期数据,熟练使用 TODAY 函数是我们最先需要掌握的技巧。

但是,在使用 TODAY 函数修改订单等工作表中的日期栏时必须注意一点,那就是 TODAY 函数会实时更新当天的日期。直接保存 Excel 制作的订单后,工作表中的日期会自动调整为当前日期。因此,需要保留原始数据时,请把文件转存成 PDF 形式。

Excel避免数据变为日期形式

即便你不想输入日期,但只要输入“1-11”、“1/21”这类数据,Excel 会自动认定该数据为日期数据,并将其转换成“1月11日”的形式。如果不需要自动转换,可选择下面的方法解决。

  • 将单元格的格式设置中的表示形式改为“文本”
  • 在开头处输入单引号(’)

顺带一提,想要显示分数形式的话,可通过以下方法输入。

  • 将表示形式改为“分数”
  • 像“0 1/2”这样的格式,在开头处输入0和半角模式下的空格。

Excel处理时间数据:如何输入正确的时间

如果要详细解说应该如何处理时间数据,反而会阻碍大家的理解……真要详细地讲,那么这样的解说将会变成读起来都会觉得很厌烦的长篇大论。所以,在这里我只给大家介绍解决对策。

首先,我们来了解一下 TIME 函数。它是处理时间数据的函数,能够指定时、分、秒。比如要制作“9:30:00”这样的时间数据,我们可以输入下面的公式:

=TIME(9,30,0)

反过来,单元格 A1中含有时间数据(如“9:00”)时,想要从此单元格中分析出小时、分、秒的数值的话,就要用到 HOUR 函数、MINUTE 函数和 SECOND 函数。分别可通过以下公式导出相应的数值。

  • =HOUR(A1) : 导出单元格 A1中时间数据的小时数
  • =MINUTE(A1) : 导出单元格 A1中时间数据的分钟数
  • =SECOND(A1) : 导出单元格 A1中时间数据的秒数

在处理任何时间数据时都可以用下面的函数公式,这样能够导出绝对没有误差的时间数据(假定单元格 A1中含有时间数据)。

=HOUR(A1)*60+MINUTE(A1)

这样一来,如果单元格 A1中是“8:25”则会自动返回“505”这个数值。这个数字表示的是从“上午0:00”到“上午8:25”经过的分钟数,正好是505分钟。像这样,将时间数据转换为不含小数点的整数,就能在计算时避免出现误差。

以上一个出现误差的案例,可通过以下方式解决。

出现误差的时候,中途增加处理步骤

出现误差的时候,中途增加处理步骤

在 E 列与 F 列中,输入前文中提到的相应函数,将开始时间与结束时间转换为分别距离上午0:00的分钟数。

将 E 列到 G 列的单元格的格式改为“数值”。将这些转换后的数值相减,就会得到 G 列上的经过的分钟数,由于结果是不含小数点的整数,也不会产生误差。在单元格 G4中输入的是这两项经过的分钟数是否为相同值的判定逻辑式(=G3=G2)。结果为 TRUE,就是说判定为经过的时间相同。

Excel处理时间数据:容易出现误差的地方

计算机在处理小数点以后的数值的计算时肯定会出错,我们一定要牢记这一点。Excel 在计算含有小数的数值时,无法得出正确答案。计算机的数据是以二进制表示的,如果公式中存在无法识别的小数数值,在计算时就会出现误差。在用 Excel 计算序列值为小数数值的时间数据时,也同样会发生这一问题。

例如,将 B 列的开始时间与 C 列的结束时间做减法,在 D 列中显示经过的时间。A 和 B 的经过时间在目标单元格中皆显示为1:01,但比较这两个单元格,却判断为不同值(D4单元格)。

明明经过了相同的时间,却被判定为不同值

明明经过了相同的时间,却被判定为不同值

之所以会发生这种情况,是由于各时间数据中实际上包含了以秒为单位的数值,如果不知道一些简便的处理方法,在进行相关处理时就会变得非常麻烦。

处理时间数据:时间数据的序列值为小数

接下来我们来看一下如何处理具体时间。一般输入时间数据时,需要用“:”隔开时、分、秒,如下:

13:00:00

在记录田径竞技成绩时一般需要精确到秒,而在管理工作时间等事务时不必精确到秒,只用“:”区隔小时和分即可。

时间的数据也可以转换成序列值。日期的序列值为整数,而时间的序列值则为0~1的小数。

日期的序列值,以1900年1月1日为起始(即1),每加上1就代表第二天的日期(Excel 能够处理的最后日期为9999年12月31日,其序列值为2958465)。另一方面,时间的序列值,以上午0时0分0秒为起始(即0),每多1秒就会加上“1/86400”。因为,一天是24(时)×60(分)×60(秒)=86400(秒),因此第二天上午0时0分0秒的序列值为1。

【例】

  • 上午6:00的序列值:0.25
  • 中午12:00的序列值:0.5
  • 下午6:00的序列值:0.75

虽然,在实际操作中我们没有必要记住这些序列值,但是与日期相同,如果单元格的格式被设置为常规,单元格中就会出现不明所以的小数。这时候,我们要知道这是“时间的序列值”,并且将单元格的格式更正为“时间”。

日期•时间实际为序列值

Excel 中的日期数据几乎都是以“2014/1/1”的形式显示在单元格中的。而日期数据的实质其实是“序列值”。

比如说,在单元格 A1中输入2014/1/1,在设置单元格格式的选项中可以将 A1的显示形式变更为“数值”,就会出现41640。这就是序列值。

这种序列值,按照“以1900年1月1日为第1天”的算法,算出单元格中的日期为第几天。那么,2014年1月1日从1900年1月1日算起正好是第41640天,所以“2014/1/1”的序列值即为41640。

“单元格输入1,出现了‘1900/1/1’。这什么意思啊?”

我经常听到这样的疑问。这是因为目标单元格的表现形式变成了日期的缘故。这时候,如果将单元格的格式改回“数值”或“常规”,就会正常地显示数字“1”了。

实际处理日期数据时,一般不需要在意序列值。明明输入的是日期却出现“41702”这种数字,如果发生这种状况,我们需要知道这是代表日期的“序列值”,其原因是单元格的格式为“日期”而不是“数值”或“常规”,这样我们就可以做相应的处理了。

在看 Excel 函数的相关解说时,若是看到“做成序列值”“将参数指定为序列值”这种说法,要意识到“序列值=日期”。Excel 中在处理关于日期的数据时,比如计算天数、年龄,从日期数值中得出星期几的函数,就是利用这种序列值处理的。

例如,用 Excel 计算从2014年3月28日到2014年4月3日为止一共有多少天。我们可以在单元格 A2输入“2014/3/28”,B2单元格输入“2014/4/3”,为了得出这两个日期之间的天数,在单元格 C2输入下列公式。

=B2-A2

这样,从 B2的日期减去 A2日期得到的结果“6”会显示在单元格 C2中。

单元格 B2的日期数据“2014/4/3”,对应的序列值为41732。

单元格 A2的日期数据“2014/3/28”,对应的序列值为41726。

用 B2的序列值减去 A2的序列值,即“41732-41726”,就可以得出“6”这个答案。

经常能够遇到的情况则是:像 A2为“20140328”、B2为“20140403”这样的形式,虽然在 Excel 中不会被当成数据来处理,如果直接将这两个数据看作是日期并做减法,想要计算出这中间的天数,是无法得出正确结果的。

这2个数据说到底只是代表“20140328”这个数字,并不是指“2014年3月28日”这个日期。因此,在输入有“=B2-A2”的单元格,虽然是将上述2个八位数做减法,却会得出“75”这个结果。这时,我们应该把代表日期的序列值改为日期形式再进行计算。

Excel中如何快速输入今天的日期与现在的时间

想要快速地输入今天的日期,使用快捷键Ctrl + ; 最方便。按下快捷键,在活动单元格中会自动显示今天的日期。

顺便一提,按Ctrl +: 可以输入现在的时间。也许有人会问“谁会使用这个啊?”工作中用 Excel 做会议记录时,有时会需要记录发言的时间。这时,就会用到这个技巧。

Excel中的日期为公历(阳历)

“在员工名单中输入了利用员工生日计算出年龄的函数,但是结果居然是0。”

如果没有完全掌握在 Excel 中处理日期的基本方法,就会发生这样的事情。在本章中,我将告诉大家在 Excel 中输入日期的方法,以及时间数据的特性。

首先来看一下关于输入日期的基本事项。有一项非常重要的原则是“必须按照公历格式输入日期”。例如,想要输入2014年1月1日,在半角模式下,按以下格式将公历年、月、日,并用“/”隔开。

2014/1/1

此时,如果省略公历年份直接输入“4/1”,则画面显示如下。

省略公历年份,输入4/1

单元格内显示的是“4月1日”,并非以公历表示,但在算式栏中显示为“2014/4/1”。也就是说,不输入公历仅以“月日”格式输入的情况下,日期将自动变为输入当时的公历年即“今年”的日期。如果想要输入不是今年的日期,却不输入具体的年份,会导致单元格不显示公历年份,你也就很难注意到有错误。

Excel 虽然有可以从出生日期计算年龄的函数,但实际输入的过程中不小心漏掉公历年份的话,所有的数据都会自动变成“今年”的。因此,无论你是否要输今年的日期,一定要将年、月、日全部输入到单元格中,并用斜线(/)隔开。这样虽然有点麻烦,但一定要记住这是最基本的操作。

Excel用SUMIF函数统计多个条件的方法

追加带有统计条件的“工作列”

SUMIF 函数和 COUNTIF 函数,都是用于计算符合条件的单元格的总和,以及单元格个数的函数。如果想使用这两种函数计算出2个条件以上的统计结果的话,我们需要稍微动一下脑筋。

比如下表,仅在单元格 H4中为 A 列负责人“吉田”、B 列商品代码为“A001”这个条件下,在 D 列中显示销售额数值。

SUMIF 函数第一参数只能指定1列。但在此表中,元数据中无法在1列中同时判定负责人和商品代码这2个条件。A 列只能判定负责人,B 列只能判定商品代码。

这时候,就需要“在元数据中追加作为新的统计条件的数据列”。这样的做法,通常被称为追加“工作列”或“计算单元格”。

我们来尝试添加结合负责人姓名和商品代码的数据列。具体操作如下。

➊ 在单元格 E4输入下列公式,并一直复制粘贴到数据最后一行。

=A4&B4

➋ 在单元格 H4输入下列公式:

=SUMIF($E:$E,$G4&H$3,$D:$D)

➌ 将单元格 H4中的公式复制至全表。

在这里,设置绝对引用也十分重要。利用指定 SUMIF 函数的参数指定各个单元格时,按几次F4 键就会像上面这样出现符号“$”。

然后,将最开始在 H4中输入的公式一直向右复制至 M 列,向下复制至第8行。这里,为使引用单元格不偏离正确的列和行,设定了绝对引用。

要重视简单易懂

在2007版本之后的 Excel 中,追加了复数条件下也能统计数据总和的 SUMIFS 函数和 COUNTIFS 函数。甚至像前文中的例子一样,不需要追加工作列也可以求和。但是,如果统计条件增多,参数的指定就会变得复杂,因此,需要追加工作列,分成几个步骤来处理。

另外,数组公式和 SUMPRODUCT 函数也可以用同样的方式处理,但就从简单易懂这点上来看,我还是推荐大家采用追加工作列这种方法来处理。