offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号问题求助 SOS 一个单元格内有多个数字 如何让下一个单元格加 1 往后延续 比如 A2 内有 1 2 3 4 5 五个数字 如何让 A3 生成 6 7 8 9 10 A3 生成的个数由 B3 中的 5 决定的 并且 A3 是 A2 末尾数字加 1 往后延续的

欢迎大家来到IT世界,在知识的湖畔探索吧!

问题求助SOS:一个单元格内有多个数字,如何让下一个单元格加1往后延续。比如A2内有1、2、3、4、5五个数字,如何让A3生成6、7、8、9、10(A3生成的个数由B3中的“5”决定的,并且A3是A2末尾数字加1往后延续的)。

单看问题的描述是不是有些绕,没关系,我们再次整理一下提干

如下图所示

B列数据为已知的个数。我们要根据指定的数字个数,在右侧单元格生成数量一致的序号,序号由1开始。每个单元格内的从左往右方向上的序号顺序递增的,垂直方向下不同单元格内的序号首尾要衔接连贯,也是顺序递增的。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号



欢迎大家来到IT世界,在知识的湖畔探索吧!

这个问题,相当考验我们对问题的独立思考与解决能力。我们用的的核心函数是offset函数。offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号。而其中最重要的精髓在于offset与row函数的配合上。下面我们分步骤逐步解析。

第一步:个数的累计求和

使用SUM函数:

=SUM($B$1:B1)

做一个对B列“已知个数”的累计求和(非常经典)。注意累计求和区域$B$1:B1是从B1单元格(列标题)为起始位置开始的,且位置绝对固定。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

第二步:偏移取值

使用OFFSET函数:

=OFFSET($A$1,SUM($B$1:B1),0,B2)

在Excel或WPS表格中,OFFSET函数属于引用类函数。它以指定的单元格或单元格区域为参照系,通过给定的偏移量、行数及列数返回一个新的引用。

公式结构:

=OFFSET(起始点, 行偏移量, 列偏移量, [高度], [宽度])

起始点:基准单元格(如$B$1)。

行偏移量:向下移动的行数(正数)或向上移动(负数)。

列偏移量:向右移动的列数(正数)或向左移动(负数)。

[高度]/[宽度]:可选参数,用于返回区域的行列数。

所以本例中:我们以固定的$A$1单元格为参照系起始点,分别向下偏移上一步的累计值(SUM($B$1:B1))个单元格,左/右方向不偏移,偏移结束时返回的高度为B2(已知个数)的高度。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

我们逐个看一下OFFSET函数的作用变化,感受它的原理

C列为第一步SUM累计求和的返回结果,我们用于视觉参考

D2单元格公式(原第二步C2单元格)

=OFFSET($A$1,SUM($B$1:B1),0,B2)

以A1为固定起始点,向下偏移0个单元格,向右偏移0个单元格,偏移后返回的高度为3个单元格(B2)。

也就是说最终偏移后的范围是:A1:A3区域。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

向下填充公式,E3单元格公式(原第二步C3单元格)

=OFFSET($A$1,SUM($B$1:B2),0,B3)

以A1为固定起始点,向下偏移3个单元格,向右偏移0个单元格,偏移后返回的高度为2个单元格(B3)。

也就是说最终偏移后的范围是:A4:A5区域。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

向下填充公式,F4单元格公式(原第二步C4单元格)

=OFFSET($A$1,SUM($B$1:B3),0,B4)

以A1为固定起始点,向下偏移5个单元格,向右偏移0个单元格,偏移后返回的高度为1个单元格(B4)。

也就是说最终偏移后的范围是:A6区域。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

向下填充公式,G5单元格公式(原第二步C5单元格)

=OFFSET($A$1,SUM($B$1:B4),0,B5)

以A1为固定起始点,向下偏移6个单元格,向右偏移0个单元格,偏移后返回的高度为4个单元格(B5)。

也就是说最终偏移后的范围是:A7:A10区域。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

第三步:获取行号(即编码)

使用ROW函数:

=ROW(OFFSET($A$1,SUM($B$1:B1),0,B2))

分别获取上一步OFFSET函数返回的4组偏移区域的行号:

A1:A3→行号{1;2;3}

A4:A5→行号{4;5}

A6→行号{6}

A7:A10→行号{7;8;9;10}

我们惊喜的发现:

获取到的行号即为C列需要填充的编号

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

使用TOROW函数:

=TOROW(ROW(OFFSET($A$1,SUM($B$1:B1),0,B2)))

将上述返回结果分别转置到一行不同单元格中显示。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

最后运用TEXTJOIN函数:

=TEXTJOIN(” “,,TOROW(ROW(OFFSET($A$1,SUM($B$1:B1),0,B2))))

将每行不同单元格中的编码分别合并到一个单元格中显示,分隔符用空格表示(双引号之间加一个空格)。

offset函数是一个超级偏移高手:根据个数,获取上下左右连续编号

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/137807.html

(0)
上一篇 23分钟前
下一篇 10分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信