如何用公式将Google Sheet单列姓名均分至6列?余值归入末列
解决方案
可以用Google Sheets的动态数组公式实现自动均分,前几列容纳多1个姓名,最后一列放剩余部分,具体公式和说明如下:
动态数组公式(推荐)
在B1单元格输入以下公式,按回车后会自动填充6列,完成姓名分配:
=LET( names,FILTER(A:A,A:A<>""), total,ROWS(names), cols,6, base,INT(total/cols), rem,total-base*cols, BYCOL(SEQUENCE(1,cols),LAMBDA(c, LET( start,IF(c<=rem,(c-1)*(base+1)+1,(rem*(base+1))+(c-rem-1)*base+1), end,IF(c<=rem,c*(base+1),(rem*(base+1))+(c-rem)*base), INDEX(names,SEQUENCE(end-start+1,,start)) ) )) )
公式说明
FILTER(A:A,A:A<>""):提取A列所有非空姓名,排除空行干扰total=ROWS(names):计算总姓名数量(此处为80)base=INT(total/cols):计算每列基础分配数(80÷6取整后为13)rem=total-base*cols:计算剩余未分配的姓名数(80-13×6=2)BYCOL遍历6列,对每一列计算对应姓名范围:- 前
rem列(此处为前2列):每列分配base+1个姓名(14个) - 剩余列(后4列):每列分配
base个姓名(13个)
- 前
- 最终通过
INDEX提取对应范围的姓名,自动生成6列结果
手动列公式(适合固定数量场景)
如果不需要动态适配总数,也可以给每列单独输入公式:
- B列(第1列):
=INDEX(A:A,SEQUENCE(14)) - C列(第2列):
=INDEX(A:A,SEQUENCE(14,,15)) - D列(第3列):
=INDEX(A:A,SEQUENCE(13,,29)) - E列(第4列):
=INDEX(A:A,SEQUENCE(13,,42)) - F列(第5列):
=INDEX(A:A,SEQUENCE(13,,55)) - G列(第6列):
=INDEX(A:A,SEQUENCE(13,,68))
内容的提问来源于stack exchange,提问作者user14915635
相关产品推荐
相关产品推荐

