=SEQUENCE(5) 从你输入公式的那个单元格开始,在一列中向下返回数字 1 到 5。加上第二个参数,它就会填满一个网格:=SEQUENCE(3,4) 给出 3 行 4 列,每一行横向从 1 数到 12。把 A2 中的 5 改成 8,这一列就会变长。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rows | Rows and columns | ||||
| 2 | 1 | 1 | 2 | 3 | 4 | |
| 3 | 2 | 5 | 6 | 7 | 8 | |
| 4 | 3 | 9 | 10 | 11 | 12 | |
| 5 | 4 | |||||
| 6 | 5 |
SEQUENCE 语法
=SEQUENCE(rows, [columns], [start], [step])
rows是要返回的行数。columns是列数,默认为 1。start是第一个数字,默认为 1。step是每个数字比前一个增加多少。默认为 1,可以是负数或小数。
网格先横向填充:在 =SEQUENCE(3,4) 中,第一行是 1、2、3、4,第二行从 5 开始。要改为沿列向下数,就套上 TRANSPOSE:=TRANSPOSE(SEQUENCE(4,3))。
SEQUENCE 需要 Excel 2021、Excel 2024 或 Microsoft 365,在旧版本中显示 #NAME?。Google Sheets 也有同样的函数。
起始值和步长
最后两个参数设置第一个数字和数字之间的间隔:
| A | B | C | D | E | F | G | H | I | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 10 to 50 | 5 down to 1 | Across a row | ||||||
| 2 | 10 | 5 | 1 | 2 | 3 | 4 | 5 | ||
| 3 | 20 | 4 | |||||||
| 4 | 30 | 3 | |||||||
| 5 | 40 | 2 | |||||||
| 6 | 50 | 1 |
=SEQUENCE(5,1,10,10) 从 10 开始,每次加 10。=SEQUENCE(5,1,5,-1) 从 5 开始倒数。=SEQUENCE(1,5) 是一行五列。要隔一个取一个,用步长 2:=SEQUENCE(10,1,1,2) 给出 1 到 19 的奇数。
自动给行编号
手动输入的行号,只要新增一行就过时了。改为统计名字的个数,让 SEQUENCE 为每个名字生成一个编号:
| A | B | |
|---|---|---|
| 1 | No. | Name |
| 2 | 1 | Ann |
| 3 | 2 | Ben |
| 4 | 3 | Cara |
| 5 | 4 | Dan |
| 6 | 5 | Eve |
COUNTA 统计 B2:B8 中已填写的 5 个单元格,所以 A2 返回 1 到 5。在 B7 中输入 Finn,编号就会增加到 6。COUNTA 会统计任何已填写的单元格,所以列表中间不能有空行;在实际表格中把区域设大一些,比如 B2:B1000。如果列表为空,COUNTA 返回 0,SEQUENCE(0) 会显示 #CALC!。
日期序列
在 Excel 中,日期就是数字(每天加 1),所以日期可以作为起始值。下面每一行增加一天;公式需要日期格式,否则会显示 46083 这样的序列号:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Start | 2026-03-02 | Weekly | ||
| 2 | 2026-03-02 | Monday | 2026-03-02 | ||
| 3 | 2026-03-03 | Tuesday | 2026-03-09 | ||
| 4 | 2026-03-04 | Wednesday | 2026-03-16 | ||
| 5 | 2026-03-05 | Thursday | 2026-03-23 | ||
| 6 | 2026-03-06 | Friday | |||
| 7 | 2026-03-07 | Saturday | |||
| 8 | 2026-03-08 | Sunday |
B2 列出 2026-03-02 到 2026-03-08,C2 给出每天是星期几,从星期一到星期日。E2 用步长 7 得到相隔一周的四个日期。改一下 B1,三列都会跟着变化。
按月生成时,步长 30 会逐渐偏差,因为每个月的天数不同。改为把 SEQUENCE 交给 EDATE,它按整月相加:=EDATE(B1,SEQUENCE(6,1,0)) 返回 3 月 2 日到 8 月 2 日(把单元格设置为日期格式)。(EDATE 和 EOMONTH 见加天数和月数。)
用 SEQUENCE 制作日历网格
六行七天足以容纳任何一个月。网格从 1 日当天或之前的那个星期日开始:DATE(2026,4,1)-WEEKDAY(DATE(2026,4,1))+1 从 4 月 1 日退回到那个星期日。单元格设置为 d 格式,所以每个单元格显示日期的天数,再用条件格式高亮 4 月的日期:
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| 2 | 29 | 30 | 31 | 1 | 2 | 3 | 4 |
| 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 4 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 5 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 6 | 26 | 27 | 28 | 29 | 30 | 1 | 2 |
| 7 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2026 年 4 月 1 日是星期三,所以网格开头是 3 月的 29、30 和 31 日。把 A2 中的两个 4(以及规则中的 4)改成另一个月份,日历就会重新绘制。如果要让其他月份的日期显示为空白,就在公式中逐个判断日期;LET 能让这个公式保持简短。
练习:相隔一周的日期
| A | B | |
|---|---|---|
| 1 | Start | 2026-05-04 |
| 2 | Dates |
轮到你了: 在 B2 中沿列向下列出 5 个日期,从 B1 中的日期开始,每个相隔一周。
在其他公式中使用 SEQUENCE
SEQUENCE 常常是辅助工具,而不是最终结果。三种常见用法:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | List | Top 3 | Sum 1 to 10 | 1, 2, 3 repeated |
| 2 | Cara | Cara | 55 | 1 |
| 3 | Dan | Dan | 2 | |
| 4 | Ann | Ann | 3 | |
| 5 | Eve | 1 | ||
| 6 | Ben | 2 | ||
| 7 | 3 |
=INDEX(A2:A6,SEQUENCE(3))返回列表的前三项:Cara、Dan 和 Ann。在 Microsoft 365 和 Excel 2024 中,TAKE(A2:A6,3)效果相同。=SUM(SEQUENCE(10))不用逐个输入就能把 1 到 10 相加:55。=MOD(SEQUENCE(6)-1,3)+1重复 1、2、3、1、2、3,可以用来把各行轮流分配到三个组。
一个常见错误是把 SEQUENCE 放在结果无法溢出的位置。只要下方四个单元格中有任何一个有数据,=SEQUENCE(5) 就会显示 #SPILL!;清空它们或移动公式即可(见 #SPILL! 错误)。
常见问题
Excel 中 SEQUENCE 函数有什么用?
它返回一列从一个单元格溢出的数字:=SEQUENCE(5) 在一列中向下给出 1 到 5,=SEQUENCE(1,5) 在一行中横向给出 1 到 5,=SEQUENCE(5,1,10,10) 给出 10、20、30、40、50。
Excel 中如何生成日期序列?
用日期作为起始值:=SEQUENCE(7,1,B1) 返回从 B1 中的日期开始的连续七天,=SEQUENCE(4,1,B1,7) 返回相隔一周的四个日期。把结果设置为日期格式,否则会显示序列号。
Excel 中如何自动给行编号?
在编号列的第一行放 =SEQUENCE(COUNTA(B2:B100))。它统计 B 列中已填写的单元格,返回 1 到这个数,所以新增一个名字时,编号会自动出现,无需复制任何内容。
如何生成倒数的序列?
用负的步长:=SEQUENCE(5,1,5,-1) 返回 5、4、3、2、1。步长也可以是小数,例如 =SEQUENCE(5,1,0,0.25)。
哪些 Excel 版本有 SEQUENCE?
Excel 2021、Excel 2024 和 Microsoft 365。旧版本会显示 #NAME?;在旧版本中,可以先输入前两个值再拖动填充柄,或者向下填充 =ROW()-1。