楼主 wcymiss |
题目:求最后连续单元格的连续个数,即C1单元格公式。 说明:如本例,连续单元格有(单个的不算连续):A1:A2,A3:A4,A7:A9,最后连续的为A7:A9,其个数为3。A列为任意文本。 要求:不得添加辅助列,不得定义名称。公式需在03版本下可运行。 得分:含等号75字符以内得3分。(请版主协助评分) 期限:5月20日24:00 最后连续单元格个数.rar |
2楼 liuguansky |
|
3楼 mn860429 |
|
4楼 卢子 |
献丑刚刚好75
|
5楼 wangg913 |
|
6楼 wangg913 |
数组公式 |
7楼 piny |
|
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 |
|
16楼 wcymiss |
开贴啦。 呵呵,数组小题。我原先设计的公式是:
就是先利用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老师的公式为例:
将单元格前后进行比较后乘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 |