【EXCEL】区域数据转为单列数据

本文介绍了如何利用INDEX函数结合ROW(),COUNTA(),ROUNDUP()和MOD()函数,根据行号和列数规则,将区域数据逐行转换为单列数据的详细步骤。通过行号和列号的构造,确保了数据在单列下拉列表中的正确布局。
摘要由CSDN通过智能技术生成

【需求描述】区域数据按逐行扫描转换为单列数据

【实现方式】INDEX函数 + 行号&列号索引

【切入重点】行号、列号构造

① 行号:单列下拉时,从1开始,重复次数=列数 → 1,1,1,2,2,2,3,3,3(以此类推)

ROUNDUP((ROW(A1)/COUNTA($B$2:$E$2)),0)

/*

1. row(A1):构造下拉时1,2,3,4,5,6......

2. COUNTA($B$2:$E$2):列数

ROW(A1)/COUNTA($B$2:$E$2) = 1/3,2/3,3/3,4/3... = 0.333,0.666,1,1.333,.....

3. 需ROUNDUP函数将小数化为整数,方能构造行号(向上取整)


*/

② 列号:单列下拉时,重复1,2,3,... ,列数,1,2,3,... ,列数(以此类推)

IF(MOD(ROW(A1),COUNTA($B$2:$E$2))=0,COUNTA($B$2:$E$2),MOD(ROW(A1),COUNTA($B$2:$E$2)))

/*

1. row(A1):构造下拉时1,2,3,4,5,6......

2. COUNTA($B$2:$E$2):列数

3. MOD(ROW(A1),COUNTA($B$2:$E$2)) 

① 当 ROW(An) 不能被列数整除时(IF条件FLASE),说明提取数据在同一行,返回相应的余数作列号

② 当 ROW(An) 被列数整除时(IF条件TRUE),说明到达当前行的最后一列,返回相应的列数作列号

PS:IF函数的目的避免MOD(ROW(A1),COUNTA($B$2:$E$2))=0时,返回列号为0,而导致出错

*/

【完整实现代码】

INDEX(区域,行号,列号)

/*

1. 区域:B2:E10

2. 行号:ROUNDUP((ROW(A1)/COUNTA($B$2:$E$2)),0)

3. 列号:IF(MOD(ROW(A1),COUNTA($B$2:$E$2))=0,COUNTA($B$2:$E$2),MOD(ROW(A1),COUNTA($B$2:$E$2)))

*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值