网站搜索

如何在 Excel 中使用 SEQUENCE 函数


Excel 365 和 Excel 2021 或更高版本支持 SEQUENCE 函数。

序列语法

SEQUENCE 函数有四个参数:

=SEQUENCE(a,b,c,d)

在哪里

  • a(强制)是序列将跨越(向下)的行数,
  • b(可选)是它将跨越的列数,
  • c(可选)是序列中的起始数字,并且
  • d (可选)是序列中每个值之间的增量。

参数ab(结果数组的大小)必须是整数(或输出整数的公式),而参数cd(序列中的起始数字和增量)可以是整数或小数。如果参数 d 为 0,结果将重复相同的数字,因为您告诉 Excel 不要在数组中的每个值之间添加任何增量。

如果您选择省略任何可选参数(bcd),它们将默认为 1。例如,键入

=SEQUENCE(2,,10,3)

将返回一个高度为一列的序列,因为缺少参数 b

SEQUENCE 是一个动态数组公式,这意味着它可以生成溢出数组。换句话说,虽然公式输入到一个单元格中,但如果参数 ab 大于 1,结果将溢出到多个单元格中。

    SEQUENCE 函数的工作原理

    在向您展示 SEQUENCE 的一些变体和实际用途之前,这里有一个简单的示例来演示它的工作原理。

    在单元格 A1 中,我输入

    =SEQUENCE(3,5,10,5)

    这意味着序列的高度为三行,宽度为五列。该序列从数字 10 开始,随后的每个数字都比前一个数字增加 5。

    向下填充然后横向填充:移调

    在上面的示例中,您可以看到序列首先填充列,然后向下填充行。但是,通过在 TRANSPOSE 函数中嵌入 SEQUENCE 函数,您可以强制 Excel 沿行填充数字,然后跨列填充数字。

    在这里,我输入了与上面示例中相同的公式,但我还将其嵌入到 TRANSPOSE 中。

    =TRANSPOSE(SEQUENCE(3,5,10,5))

    因此,Excel 翻转了语法中的参数 ab,这意味着“3”现在代表列数,“5”代表行数。您还可以看到数字先向下填充,然后横向填充。

    创建罗马数字序列

    如果要创建罗马数字序列 (I、II、III、IV) 而不是阿拉伯数字 (1、2、3、4),则需要将 SEQUENCE 公式嵌入到 ROMAN 函数中。

    使用与上例相同的参数,我输入

    =ROMAN(SEQUENCE(3,5,10,5))

    进入单元格 A1 以产生以下结果:

    更进一步,假设我希望罗马数字为小写。在这种情况下,我会将整个公式嵌入到 LOWER 函数中。

    =LOWER(ROMAN(SEQUENCE(3,5,10,5)))

    使用 SEQUENCE 创建日期

    SEQUENCE 函数的更实际用途是生成日期序列。在下面的示例中,我想要创建一个报告,其中包含每个人的每周利润,从 3 月 1 日星期五开始,一直持续到每个星期五,持续 20 周。

    为此,我输入

    =SEQUENCE(1,20,DATE(2024,3,1),7)

    进入 B2,因为我希望日期横跨第一行 20 列,从 3 月 1 日星期五开始,从一个值到下一个值递增 7 天。

    在向单元格添加日期之前,尤其是使用公式创建的日期,您应该首先在功能区“主页”选项卡的“数字”组中将单元格的数字格式更改为“日期”。否则,Excel 可能会返回序列号而不是日期。

    使 SEQUENCE 依赖于另一个参数

    在此示例中,我有一个需要编号的任务列表。我希望 Excel 在添加另一个任务时自动添加另一个数字(或者,出于同样的原因,在我完成并删除任务时删除一个数字)。

    为此,我在单元格 A2 中输入

    =SEQUENCE(COUNTA(B:B)-1)

    序列填充的行数现在取决于 B 列中包含文本的单元格数量(感谢 COUNTA 函数),并且我在公式末尾添加了“-1”,以便 COUNTA 计算对标题行进行折扣。

    您还会注意到,我只在 SEQUENCE 公式中指定了参数 a(行数),因为保留所有其他参数会将它们默认为 1,这正是我在本示例中想要的值。换句话说,我希望结果只占据一列,编号从1开始,序列每次加1。

    现在,当我将项目添加到 B 列的列表中时,A 列中的编号会自动更新。

    使用 SEQUENCE 时的注意事项

    Excel 中使用 SEQUENCE 函数时需要注意三个注意事项:

    1. 生成溢出数组(包括 SEQUENCE)的动态数组公式不能在格式化的 Excel 表中使用。如果要在现有数据中使用 SEQUENCE,最好的解决方法是选择表中的一个单元格,然后单击“表设计”选项卡的“工具”组中的“转换为范围”,将格式化的 Excel 表格转换为未格式化的范围。
    2. 如果您创建链接两个工作簿的动态数组,则仅当两个工作簿都打开时才有效。一旦关闭源工作簿,活动工作簿中的动态数组公式将返回#REF!错误。
    3. 通过在受影响的单元格中放置另一个值来中断溢出的数组将破坏您的 SEQUENCE 函数并导致#SPILL!错误。

    为什么使用 SEQUENCE 而不是填充手柄?

    SEQUENCE 函数的替代方法是 Excel 的填充手柄,您可以单击并拖动它来继续已经开始的序列:

    但是,我更喜欢使用 SEQUENCE 函数有几个原因:

    • 如果您想创建一个长序列,拖动可能会花费很长时间!
    • 在 SEQUENCE 函数中修改序列的参数更容易 — 只需调整公式中的参数即可。当您单击并拖动填充柄时,您必须记住在现有数组中选择多个数字。
    • 如果删除与序列交互的行或列,则通过填充手柄创建的数字也将被删除。但是,由于 SEQUENCE 会导致数组溢出,因此即使您重组电子表格,它们也会保持原样。
    • Excel 的填充柄设计用于沿单行或单列填充序列。要使用覆盖大量行和列的填充句柄创建序列,您必须比使用 SEQUENCE 函数执行更多步骤,SEQUENCE 函数允许您一次性指定所有参数。
    • SEQUENCE 函数可消除使用填充句柄时可能发生的任何人为错误。

    如果您将 SEQUENCE 与易失性函数(例如 DATE)一起使用,这可能会导致您的 Excel 工作簿速度显着变慢,特别是当您的电子表格中已经有大量数据时。因此,请尝试限制使用的易失函数的数量,以确保 Excel 工作表快速有效地工作。

    相关文章