ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 函数与公式 > 求最后连续单元格个数

求最后连续单元格个数

作者:绿色风 分类: 时间:2022-08-18 浏览:168
楼主
wcymiss
题目:求最后连续单元格的连续个数,即C1单元格公式。
说明:如本例,连续单元格有(单个的不算连续):A1:A2,A3:A4,A7:A9,最后连续的为A7:A9,其个数为3。A列为任意文本。
要求:不得添加辅助列,不得定义名称。公式需在03版本下可运行。
得分:含等号75字符以内得3分。(请版主协助评分)
期限:5月20日24:00

 


最后连续单元格个数.rar
2楼
liuguansky
  1. =10^MOD(LOOKUP(12,LOG10(10^ROW(1:11)*FREQUENCY((A1:A10=A2:A11)*ROW(1:10),(A1:A10<>A2:A11)*ROW(1:10)))),1)+1
写一个超长公式先。等下再来想。
3楼
mn860429
  1. Sub cc()
  2.     For i = 1 To 11
  3.         If Cells(i, 1) = Cells(i + 1, 1) Then
  4.             Do
  5.                 i = i + 1
  6.             Loop Until Cells(i, 1) <> Cells(i + 1, 1)
  7.             k = k + 1
  8.         End If
  9.     Next i
  10.     MsgBox "最后连续个数:" & k
  11. End Sub
重在参与,呵呵,函数的写不出。
4楼
卢子
献丑刚刚好75
  1. =MAX(FREQUENCY(IF(A1:A10=A2:A11,ROW(1:10)),IF(A1:A10<>A2:A11,ROW(1:10))))+1
5楼
wangg913
  1. =1/LOOKUP(2,1/FREQUENCY(IF(A1:A10=A2:A11,ROW(1:10)),IF(A1:A10<>A2:A11,ROW(1:10))))+1
数组公式
6楼
wangg913
  1. =SUM(LARGE((A1:A10=A2:A11<>(A2:A11=A3:A12))*ROW(1:10),{1,2})*{1,-1})+1



数组公式
7楼
piny
  1. =FIND(0,SUM((A1:A10=A2:A11)*10^ROW(1:10)))
數組
8楼
orctyr
不会,看答案之。
呃。看不见答案
9楼
fangjianp
C1=-LOOKUP(,-TEXT(FREQUENCY(ROW(1:11),(A1:A11<>A2:A12)*ROW(1:11)),"[>1]"))
10楼
bluexuemei
学习一下,我的公式长了点=LOOKUP(1,0/(FREQUENCY(ROW(2:12),IF(A1:A10<>A2:A11,ROW(2:11)))>1),FREQUENCY(ROW(2:12),IF(A1:A10<>A2:A11,ROW(2:11))))
11楼
chenhh803
=1/LOOKUP(9,1/FREQUENCY((A1:A11=A2:A12)*ROW(1:11),(A1:A11<>A2:A12)*ROW(1:11)))+1
12楼
wangg913
=FIND(0,SUM(10^ROW(1:10)*(A1:A10=A2:A11)))
13楼
sharprain
=FIND("0",SUM(N($A$1:$A$10=$A$2:$A$11)*10^ROW(1:10)))
53个,呵
14楼
放浪形骸
=MAX(FREQUENCY(ROW(1:11),(A1:A10<>A2:A11)*ROW(A2:A11)))
15楼
Zaezhong
  1. =FIND(10,SUM((A1:A11=A2:A12)*10^ROW(1:11)))+1
不知道有没有问题,自己测试没有发现问题
16楼
wcymiss
开贴啦。


      呵呵,数组小题。我原先设计的公式是:
  1. =1/LOOKUP(2,1/(FREQUENCY(ROW(1:11),(A1:A10<>A2:A11)*ROW(1:10))-1))+1

      就是先利用FREQUENCY,得到单元格连续出现的次数,再利用LOOKUP,通过两次倒数(第一次倒数去除零值,第二次倒数是将第一次倒数的值还原)取得最后一个不为1的数字,也就是最后连续单元格的个数。
      5楼、9楼、10楼、11楼都是用的LOOKUP+FREQUENCY方法。5楼和11楼是利用FREQUENCY的第一参数来去除1个连续;9楼是利用TEXT去除1个连续;10楼构造了两个FREQUENCY来去除1个连续,公式稍长。
      6楼公式是利用双重逻辑判断得到连续次数大于1的首**号,用LARGE取最后的两个行号相减+1后得出结果。
      出题的时候,有意只放了11行数据,就是想看一下有没有取巧的方法。呵呵,没想到不少高手都利用这点给出了40+的精彩公式。(13楼里包含了8个“$”,去除后公式长度为45)。以piny老师的公式为例:
  1. =FIND(0,SUM((A1:A10=A2:A11)*10^ROW(1:10)))

      将单元格前后进行比较后乘10^行号,然后sum,得出一个包含1和0的数字,首个1对应了最后连续单元格的尾端,首个0对应了最后连续文本的顶端,所以0的位置也就是最后连续单元格的个数。 (PS:解释公式可真累……


      2楼公式有误,未考虑单元格从最后一格开始连续的情况;4楼、14楼对题意理解有误。谢谢3楼的代码支持。
      请版主对以下楼层进行评分:6楼与12楼公式为均为wangg913版主所做,就不重复评分了。
      
 
      其实是一道练手小题,呵呵,谢谢各位版主、大侠前来捧场。
17楼
w83365040371
=1/LOOKUP(1,1/(FREQUENCY(ROW(1:12),IF(A1:A11<>A2:A12,ROW($1:$11)))-1))+1

免责声明

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

评论列表
sitemap