Excel-Offset函数一列或多列数据拆分为多列

Excel-Offset函数-一列或多列数据拆分为多列

工具:WPS表格或EXCEL

我们在日常处理数据时,经常会碰到需要将一列或多列数据拆分为多列的情况。例如一列分为三列、三列分为九列等。这时就需要用到offset函数来返回一个单元格或单元格范围的引用,从而实现分列的效果。以下为举例说明该函数如何使用(使用WPS表格)。

假设原始数据为A1:A9共9组数据,我们希望得到的数据在B1:D3三列。
在这里插入图片描述
在B1单元格输入以下公式
=OFFSET($A$1,MOD(COLUMN(A1)+2,3)+ROW(A1)*3-3,)
OFFSET这个函数是根据**偏移量来得到一个新的引用(单元格或者区域)**一共有五个参数,格式为:
OFFSET(起始位置,行偏移量,列偏移量,高度,宽度)。

本例中起始位置为A1单元格,因为数据源都在一列,并且都是单元格的引用,因此只需要确定行偏移量即可,可以看到公式里只用了两个参数,第一参数固定为A1,第二参数是MOD(COLUMN(A1)+2,3)+ROW(A1)*3-3。第二参数为什么要设置成这个公式呢?

我们先来了解下MOD、COLUMN、ROW函数。

MOD函数是取余函数,其中两个参数分别为除数与被除数,COLUMN函数为取列号函数,在本例中取A1列号(注意没有使用锁定,会根据右拉或下拉变化,ROW函数同理)。COLUMN取A1列号后为1,再经过外层MOD函数得余数为0。ROW函数取行号为1,计算后为0.所以两式相加后得0,行不偏移。

然后将B1向右拉到B3,可以发现MOD函数与ROW函数中的A1随单元格变化为B1,C1。
在这里插入图片描述
根据公式的相应计算,我们可以知道C1单元格的函数会计算出引用A1的偏移一行的数据,即A2。
D3单元格数据同理。
然后我们将单元格向下拉三列即可分别得到A4:A9的数据。
在这里插入图片描述
如果想分成其他的列形式,可根据第二参数中的数字2、3做对应调整,例如每行是6个数据的话,公式修改为:=OFFSET($A$1,MOD(COLUMN(A1)+5,6)+ROW(A1)*6-6,)。

看到这里,相信你也知道如何从A2开始取数据了吧?没错,就是
=OFFSET($A$1,MOD(COLUMN(A1)+5,6)+ROW(A1)*6-5,)
因为所有数据都再同一行内,所以只要在取行号时+1即可实现从A2开始取数据。

通过以上解释,基本可以理解如何根据实际需要去调整公式的对应内容就可以了。要想彻底弄明白这里的奥妙,数列的构造方法是绕不过去的一道坎。

看到这里,估计有些伙伴会想:如果数据源不是一列,而是两列或者三列,该怎么办?

假设原始数据在A,B,C三列,共有9行数据,即A1:C9。我们希望得到的是新的数据在E,F,G,H,I,J,K,L,M九列。

在E1单元格,输入以下公式:

=OFFSET($A$1,INT((ROW(E1)-1)/3),MOD(ROW(E1)-1,3))

然后将此公式复制到F1:M9。

这个公式的工作原理:

1.OFFSET函数需要一个开始的单元格,然后基于这个单元格提供一个行偏移量和列偏移量来返回新的单元格的引用。这里我们把$A$1作为了开始的单元格。

2.我们使用INT((ROW(E1)-1)/3)来计算行偏移量。这个公式将行号除以3然后向下取整。结果是,每三行,行偏移量增加1,即:第1,2,3行的结果是0,第4,5,6行的结果是1,依此类推。

3.我们使用MOD(ROW(E1)-1,3)来计算列偏移量。这个公式将行号除以3取余数。结果是,每三行,列偏移量循环从0开始,即:第1行的结果是0,第2行的结果是1,第3行的结果是2,然后第4行的结果又回到了0,依此类推。

所以,这个公式会将原始的三列数据,每三行为一组,轮流分配到新的九列中。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值