在Excel中创建一个日期序列并自动填充日期系列

  • Share This
Michael Brown

该教程展示了如何利用新的SEQUENCE函数在Excel中快速生成一个日期列表,并使用自动填充功能用日期、工作日、月或年来填充一列。

直到最近,在Excel中只有一种简单的方法来生成日期--自动填充功能。 新的动态数组SEQUENCE函数的引入,使得用公式制作一系列的日期也成为可能。 本教程深入研究了这两种方法,以便你能选择最适合你的方法。

    如何在Excel中填写日期系列

    当你需要在Excel中用日期填充一列时,最快的方法是使用自动填充功能。

    在Excel中自动填充日期系列

    在一列或一行中填入以一天为增量的日期是非常容易的。

    1. 在第一个单元格中键入初始日期。
    2. 选择带有初始日期的单元格,将填充柄(右下角的一个绿色小方块)向下或向右拖动。

    Excel将立即生成一系列日期,其格式与你手动输入的第一个日期相同。

    用工作日、月或年填写一栏

    要创建一系列的工作日、月或年,请执行以下操作之一。

    • 如上所述,在一列中填入连续的日期。 之后,点击 自动填表选项 按钮并选择所需的选项,例如 填充月数 :

    • 或者你可以输入你的第一个日期,右击填充柄,按住并拖动需要的单元格。 当你释放鼠标按钮时,将弹出一个上下文菜单让你选择需要的选项。 填充年限 在我们的案例中。

    填充一系列以N天为单位递增的日期

    要自动生成一系列的日、周、月或年,并带有一个 具体步骤 ,这是你需要做的。

    1. 在第一个单元格中输入初始日期。
    2. 选择该单元格,右键单击填充柄,根据需要拖过多个单元格,然后释放。
    3. 在弹出的菜单中,选择 系列 (最后一项)。
    4. 系列 对话框,选择 日期单位 兴趣的,并设置 步骤值 .
    5. 单击 "确定"。

    更多的例子,请看如何在Excel中插入和自动填写日期。

    如何在Excel中用公式制作一个日期序列

    在之前的一个教程中,我们看了如何使用新的动态数组SEQUENCE函数来生成一个数字序列。 因为在Excel内部,日期被存储为序列号,所以该函数也可以很容易地生成一个日期序列。 你所要做的就是正确配置参数,正如下面的例子所解释的那样。

    注意:这里讨论的所有公式只在支持动态数组的最新版本的Excel 365中有效。 在动态之前的Excel 2019、Excel 2016和Excel 2013中,请使用本教程第一部分中的自动填充功能。

    在Excel中创建一系列的日期

    要在Excel中生成一个日期序列,请设置SEQUENCE函数的以下参数。

    SEQUENCE(行, [列], [开始], [步骤])
    • 行数 - 要填入日期的行数。
    • 专栏 - 要填入日期的列数。
    • 开始 - 以Excel能理解的格式表示起始日期,如 "8/1/2020 "或 "1-Aug-2020"。 为了避免错误,你可以通过使用DATE函数来提供日期,如DATE(2020, 8, 1)。
    • 步骤 - 一个序列中每个后续日期的增量。

    例如,要制作一个从2020年8月1日开始并增加1天的10个日期的列表,其公式为:。

    =序列(10, 1, "8/1/2020", 1)

    =序列(10, 1, date(2020, 8, 1), 1)

    另外,你可以在预定义的单元格中输入日期(B1)、开始日期(B2)和步骤(B3)的数量,并在公式中引用这些单元格。 由于我们正在生成一个列表,列号(1)是硬编码。

    =序列(b1, 1, b2, b3)

    在最上面的单元格(在我们的例子中是A6)中键入下面的公式,按回车键,结果将自动溢出到指定的行和列的数量。

    注意,在默认情况下 一般 为了正确显示,请确保将日期格式应用于溢出范围的所有单元格。

    在Excel中制作一系列的工作日

    要想只得到一系列的工作日,可以这样在WORKDAY或WORKDAY.INTL函数中包裹SEQUENCE。

    工作日( 开始日期 -1, SEQUENCE( 几天的时间 ))

    由于WORKDAY函数将第二个参数中指定的天数添加到开始日期中,我们从中减去1以使开始日期本身包含在结果中。

    例如,要生成一个从B2中的日期开始的工作日序列,公式为:。

    =workday(b2-1, sequence(b1))

    其中B1是序列大小。

    提示和说明。

    • 如果开始日期是星期六或星期日,系列活动将在下一个工作日开始。
    • Excel的WORKDAY函数假定星期六和星期日是周末,要配置自定义的周末和假日,请使用WORKDAY.INTL函数。

    在Excel中生成月份序列

    要创建一系列以一个月为增量的日期,你可以使用这个通用公式。

    日期( ,序列(12)。 )

    在这种情况下,你把目标年份放在第1个参数中,把日期放在第3个参数中。 对于第2个参数,SEQUENCE函数返回从1到12的连续数字。 基于上述参数,DATE函数产生一系列的日期,如下面截图的左边部分所示。

    =date(2020, sequence(12), 1)

    要只显示 月名 ,为溢出范围设置以下自定义日期格式之一。

    • mmm - 简称像 , 2月 , ,等等。
    • 嗯--完整的形式像 一月 , 2月 , 三月 ,等等。

    结果是,只有月份名称会出现在单元格中,但基础值仍然是完整的日期。 在下面截图的两个系列中,请注意Excel中数字和日期的典型默认右对齐。

    要生成一个以月为单位递增的日期序列,并且 从一个特定的日期开始 ,与EDATE一起使用SEQUENCE函数。

    日期( 开始日期 , sequence(12, 1, 0))

    EDATE函数返回一个在开始日期之前或之后的指定月数的日期。 SEQUENCE函数产生一个由12个数字组成的数组(或你指定的数目),以迫使EDATE以一个月为增量向前移动。 请注意 开始 参数被设置为0,这样开始日期就会包括在结果中。

    在B1中的开始日期,该公式是这样的。

    =edate(b1, sequence(12, 1, 0))

    注意:在完成一个公式后,请记得对结果应用一个适当的日期格式,以便它们能正确显示。

    在Excel中创建一个年份序列

    要使一系列的日期按年份递增,使用这个通用公式。

    DATE(SEQUENCE( n , 1, YEAR( 开始日期 )), MONTH( 开始日期 ),DAY( 开始日期 ))

    在哪里? n 是你想要生成的日期的数量。

    在这种情况下,DATE(year, month, day)函数以这种方式构造一个日期。

    • 是由SEQUENCE函数返回的,该函数被配置为生成一个 n 1行1列的数字数组,从年份值开始,从 开始日期 .
    • 月份 值是直接从开始日期提取的。

    例如,如果你在B1中输入开始日期,下面的公式将输出一系列以一年为单位的10个日期。

    =date(sequence(10, 1, year(b1)), month(b1), day(b1))

    在被格式化为日期后,结果将看起来如下。

    在Excel中生成一个时间序列

    因为时间在Excel中是以小数形式存储的,代表一天的一小部分,所以SEQUENCE函数可以直接处理时间。

    假设开始时间是在B1,你可以使用以下公式之一来产生一系列的10次。 区别只在于 阶梯 由于一天有24个小时,用1/24递增一小时,1/48递增30分钟,以此类推。

    相隔30分钟。

    =序列(10, 1, b1, 1/48)

    相隔1小时。

    =序列(10, 1, b1, 1/24)

    相隔2小时。

    =序列(10, 1, b1, 1/12)

    下面的屏幕截图显示了结果。

    如果你不想麻烦地手动计算步长,你可以通过使用时间功能来定义它。

    SEQUENCE(行, 列, 开始, 时间( 小时 , 分钟 , 第二 ))

    在这个例子中,我们将在不同的单元格中输入所有的变量,如下面的截图所示。 然后,你可以使用下面的公式在单元格E2(小时)、E3(分钟)和E4(秒)中生成一个你指定的任何增量的时间序列。

    =序列(b2, b3, b4, time(e2, e3, e4))

    如何在Excel中创建一个月历

    在最后一个例子中,我们将使用SEQUENCE函数与DATEVALUE和WEEKDAY一起创建一个月历,它将根据你指定的年份和月份自动更新。

    A5中的公式如下。

    =SEQUENCE(6, 7, DATEVALUE("1/"&B2&"/"&B1) - WEEKDAY(DATEVALUE("1/"&B2&"/"&B1) + 1, 1)

    这个公式如何运作。

    你使用SEQUENCE函数生成一个6行(一个月中可能的最大周数)由7列(一周中的天数)组成的日期数组,并以1天为单位递增。 因此,...。 行数 , 专栏 步骤 争论没有引起任何问题。

    中最棘手的部分是 开始 我们不能以目标月的第1天开始我们的日历,因为我们不知道它是一周中的哪一天。 因此,我们使用下面的公式来寻找指定月份和年份的第1天之前的第一个星期天。

    DATEVALUE("1/"&B2&"/"&B1) - WEEKDAY(DATEVALUE("1/"&B2&"/"&B1) ) + 1

    第一个DATEVALUE函数返回一个序列号,在Excel内部系统中,该序列号在B2中代表月份的第1天,在B1中代表年份。 在我们的例子中,它是44044,对应于2020年8月1日。 在这一点上,我们有。

    44044 - WEEKDAY(DATEVALUE("1/"&B2&"/"&B1)) + 1

    WEEKDAY函数以1(周日)至7(周六)的数字形式返回目标月第1天所对应的星期。 在我们的例子中,它是7,因为2020年8月1日是周六。 我们的公式简化为。

    44044 - 7 + 1

    44044-7是4403,对应于2020年7月25日星期六。 由于我们需要星期天,我们加上+1修正。

    这样,我们得到一个简单的公式,输出一个以4404开头的序列号阵列。

    =序列(6, 7, 4404, 1)

    将结果格式化为日期,你会得到上面截图中所示的日历。 例如,你可以使用以下日期格式之一。

    • d-mmm-yy 来显示日期,如 20年8月1日
    • mmm d 以显示月和日,如 8月20日
    • d 只显示当天的情况

    等等,但我们的目标是创建一个月历,为什么上个月和下个月的一些日期会出现呢? 为了隐藏这些不相关的日期,用下面的公式设置一个条件格式化规则,并应用 白色字体 颜色。

    =MONTH(A5)MONTH(DATEVALUE($B$2 & "1"))

    其中A5是你日历的最左边的单元格,B2是目标月份。

    详细步骤请见如何在Excel中创建基于公式的条件格式化规则。

    这就是你如何在Excel中生成一个日期序列的方法。 感谢你的阅读,希望下周在我们的博客上见到你!

    供下载的实践工作手册

    Excel中的日期顺序--公式示例(.xlsx文件)

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.