ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何根据当前行依次向上统计连续1的个数返回最大10个编号?

如何根据当前行依次向上统计连续1的个数返回最大10个编号?

作者:绿色风 分类: 时间:2022-08-17 浏览:91
楼主
Zaezhong
Q:当前行开始依次向上统计连续1的个数,再返回最大的10个数对应的编号(在第一行),如果相同,那么对应的编号较小的排在前面?

 
A:定义名称Yes:光标定位在BH14时
  1. =TEXT(MMULT(10^(ROW(Sheet1!A1)-TRANSPOSE(ROW(Sheet1!$1:1))),COUNTIF(OFFSET(Sheet1!$D5,-ROW(Sheet1!$1:1),Sheet1!$E$1:$BF$1),1)),REPT(0,ROWS(Sheet1!$4:4)))
BH14=
  1. =ROUND(MOD(-LARGE(IF((LEFT(Yes)="1")*FIND(10,Yes&10),FIND(10,Yes&0)-COLUMN($A:$BB)%),COLUMN(A4))*100,100),)

 
名称Yes中,分别统计每一个单元格,如果是1就返回1,否则0,通过Mmult函数计算出一个包含1和0的数,再通过Text函数与rept结合来显示如果第一行为0时,在前面添加0.

通过(Left(Yes)="1")*(Find(10,Yes&10)),确定上图当前行位置是1的编号,其中的10用人容错处理,FIND(10,Yes&0)-COLUMN($A:$BB)%用于得到一串不重复的数,其中的0也是用于容错。最外面的Round函数是为了防止浮点错误
根据当前行统计最大连续1的个数.rar
2楼
亡者天下
影子的函数功底很厉害啊!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap