Google Sheets中实现装箱序号(1/n格式)的公式需求
Google Sheets 实现D列对应装箱序号格式
需求回顾
- 当B列(所需装箱数)为1时,D列可填
1/1或留空 - 当B列大于1时,D列需依次生成
1/N、2/N…N/N(N为对应B列的数值),与C列重复的产品名称一一对应
D列公式实现
直接在D列首行(如D2)输入以下数组公式,按回车后会自动填充整列:
=INDEX(FLATTEN(SPLIT(QUERY(BYROW(A2:B, LAMBDA(r, LET(n, INDEX(r, 2), IF(n > 0, TEXTJOIN("×",, SEQUENCE(n)&"/"&n), "")))),, 9^9), "×")))
公式逻辑说明
- 逐行处理数据:
BYROW(A2:B, LAMBDA(r, ...))遍历每一行的产品名称和装箱数 - 简化变量引用:
LET(n, INDEX(r, 2), ...)将当前行的装箱数赋值给变量n - 生成序号序列:
TEXTJOIN("×",, SEQUENCE(n)&"/"&n)针对每个n,生成1/n到n/n的字符串并以×分隔 - 拼接所有行结果:
QUERY(..., 9^9)把所有行生成的序号字符串拼接成一个长文本 - 拆分并展开数组:
SPLIT(...)用×拆分长文本,FLATTEN(...)将多维数组转为一维,完美匹配C列的展开结构 - 返回数组结果:
INDEX(...)确保公式输出数组,自动适配整列填充
自定义调整(可选)
如果需要在装箱数为1时让D列留空,只需修改公式中的条件判断部分:
=INDEX(FLATTEN(SPLIT(QUERY(BYROW(A2:B, LAMBDA(r, LET(n, INDEX(r, 2), IF(n > 0, IF(n=1, "", TEXTJOIN("×",, SEQUENCE(n)&"/"&n)), "")))),, 9^9), "×")))
内容的提问来源于stack exchange,提问作者Stickman
相关产品推荐
相关产品推荐

