手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

EXCEL中如何根据指定数量扩充单元格

时间:2024-10-25 11:02:25

1、如图,想从左侧的初始数据,达到右侧的效果图,也就是在右侧表中,按左侧每个名称的数量重复这个名称,只有等重复数量达到指定数量后,才继续返回下一个名称。

EXCEL中如何根据指定数量扩充单元格

2、这里数据是不断向下填充时,行数不断向下增加,每行都需要对给出的若干数量的前若干数量的和作比较,只有当行数达到前若干数量的和之后,才需要填充下一个内容。因此需要有函数来求出从前往后所有若干数的和,才好作比较,这里就要用OFFSET函数结合SUBTOTAL函数来达到目的:=SUBTOTAL(9,OFFSET(C$2,,,ROW($1:$10))),有关这两个函数的用法可参看下述经验。

EXCEL中如何根据指定数量扩充单元格

3、当然这不是完整的公式,只是分步介绍,单纯用这个公式没什么实际意义,本身返回的是一组参数,在编辑栏中选中这个公式“=”后的部分,再按F9功能键,就可以看到这个公式的结果,3,8,11,17……,表中虽然只有四个数据,但这里用的公式作了扩充,用ROW($1:$10)扩充到10个数据,可以根据需要扩充到更多。从此处返回的结果可以看到,这几个结果分别是前一、前二、前三、前四……的和。

EXCEL中如何根据指定数量扩充单元格

4、知道了前若干个数量的和,就可以和填充的数据个数作比较了,由于每向下填充一个,行号就增加1,所以可以和行号作比较,这里用ROW(1:1),而不直接用ROW(),公式可以输入在任何行中再向下填充:=SUBTOTAL(9,OFFSET(C$2,,,ROW($1:$10)))<ROW(1:1)。

EXCEL中如何根据指定数量扩充单元格

5、这些都是设计公式的思路,并不是最终公式,从这个比较结果,找到相应的行在前几个数据的和中。这里就要用到LOOKUP函数了,=LOOKUP(1,0/(SUBTOTAL(9,OFFSET(C$2,,,ROW($1:$10)))<ROW(1:1)),ROW($1:$10)),此函数的用法可参看另一篇经验“EXCEL中LOOKUP函数的高级应用”。

EXCEL中如何根据指定数量扩充单元格

6、不过这里求和时是从第二行开始的,所以前几行特别是第一行是肯定不会比第一个数量小的,所以会出现错误值,可以加个IF条件函数判断下,是否小于第一个数,或者直接用IFERROR函数,将错误值转化为0:=IFERROR(LOOKUP(1,0/(SUBTOTAL(9,OFFSET(C$2,,,ROW($1:$10)))<ROW(1:1)),ROW($1:$10)),0)。

EXCEL中如何根据指定数量扩充单元格

7、这样就知道了向下填充时应该向下偏移几行,再用OFFSET函数就可得到结果了:=OFFSET($B$2,IFERROR(LOOKUP(1,0/(SUBTOTAL(9,OFFSET(C$2,,,ROW($1:$10)))<ROW(1:1)),ROW($1:$10)),0),0)。

EXCEL中如何根据指定数量扩充单元格

8、但是不确切左侧的总数是多少个,向下填充时,当超过数量总和时,就会出现0(其实是偏移了左侧内容的下一个空单元,无数据会返回0),因此需要对公式进行修正,用IF函数对总和及行数作比较,超出后即显示为空。对于文本内容,还有更简单的方法,就是直接加上&"",这样空单元就会转换为空文本,而不会出0:=OFFSET($B$2,IFERROR(LOOKUP(1,0/(SUBTOTAL(9,OFFSET(C$2,,,ROW($1:$10)))<ROW(1:1)),ROW($1:$10)),0),0)&""。

EXCEL中如何根据指定数量扩充单元格

9、另外,如果表格是有标题行的(列标题),可以直接从标题行求和,标题行本身是文本,求和的结果为0,这样行数,也就不会小于第一个和数,就不会出现错误值,省去一层IFERROR函数(或者IF+COUNTIF组合函数),当然前后要一致,再用OFFSET偏移函数求结果时,也要从标题行开始偏移:=OFFSET($B$1,LOOKUP(1,0/(SUBTOTAL(9,OFFSET(C$1,,,ROW($1:$10)))<ROW(1:1)),ROW($1:$10)),0)&""。

EXCEL中如何根据指定数量扩充单元格

10、由于E列已填充公式,试着改变一下左侧的名称和数量,就可看到右侧名称随之改变。从上面的分析可以看出,只要输入一个公式,向下填充,就可达到设想的目的,比其它方法来得简便。

EXCEL中如何根据指定数量扩充单元格
© 手抄报圈