You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用公式将表格姓名按订单次数重复并导出至另一工作表?

解决方案(Google Sheets)

针对你制作抽奖名单的需求,这里提供两种简单易上手的公式方法:

方法一:拆分重复文本实现(新手友好)

假设原始数据在Sheet1的A列(Names)和B列(Orders),在新工作表的A1单元格输入以下公式:

=ARRAYFORMULA(IFERROR(SPLIT(FLATTEN(REPT(Sheet1!A:A&"|", Sheet1!B:B)), "|"), ""))

接着在B1单元格输入公式自动填充"row":

=ARRAYFORMULA(IF(A:A<>"", "row", ""))

公式说明:

  • REPT(Sheet1!A:A&"|", Sheet1!B:B):给每个姓名加上分隔符|,重复对应订单次数
  • FLATTEN:把所有行的重复结果合并成一列文本
  • SPLIT(..., "|"):按分隔符拆分文本,得到独立的姓名行
  • IFERROR:处理空白行的错误提示

方法二:序列匹配实现(逻辑更清晰)

如果想直观理解重复逻辑,在新工作表A1输入:

=ARRAYFORMULA(VLOOKUP(SEQUENCE(SUM(Sheet1!B:B)), {SUMIF(OFFSET(Sheet1!B$1,0,0,ROW(Sheet1!B:B)-ROW(Sheet1!B$1)+1),">0"), Sheet1!A:A}, 2, TRUE))

B列同样用上述ARRAYFORMULA(IF(A:A<>"", "row", ""))填充。

公式说明:

  • SUM(Sheet1!B:B):计算总共需要生成的行数
  • SEQUENCE(...):生成从1到总行数的序列
  • SUMIF(...):计算每个姓名对应的累计订单区间(比如Bob Smith对应1-3,Charlie对应4)
  • VLOOKUP:根据序列值匹配到对应的姓名

为什么单独用REPT没成功?

单独的REPT只会返回连续的文本字符串(比如Bob SmithBob SmithBob Smith),不会自动拆分成独立行,所以需要搭配FLATTEN和SPLIT把文本拆成多行。

内容的提问来源于stack exchange,提问作者cnfairchild

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:32:48