楼主 fangjianp |
找出连续数据升链的个数(后一项比前一项增1,否则不能计为连续数据升链,以下简称升链) 说明: 1、A2:J8为原始数据区域,区域内数据可以引用 2、每行为一组数据,数据是无序的 3、求每组数据内一共可以配成多少条数据升链(增序), 4、配链原则: A.每次查找升链,应查找极长链 B.在剩余的数据中再一次查找极大升链 C.直到不存在升链为止 5、举例说明(以第二行数据为例) A. 第二行数据为: 1,2,3,2,1,3,3,2,4,5 B. 容易得到最长升链为:1,2,3,4,5 C. 剩下的数据为:2,1,3,3,2 D. 得到极长升链为:1,2,3 E. 最后剩下的数据为:3,2 F. 升链为:2,3 G.故共有三条升链,模拟答案区域K2=3 H.若剩余的数据中不存在数据升链,结束。 6、升链的最短长度为2 要求: 1、不用VBA、辅助列、定义名称,用函数解题 2、公式写在L2单元,下拉至L8 3、公式长度180以内:得技能分3分;130以内得技能分5,答案精彩再加3分 3.1、公式长度180以内:得技能分3分;130以内得技能分10,答案精彩再加10分(wangg913版主建议,以此为准) 截至日期:2011年6月5日 详见附件 寻找连续数据升链1.rar |
2楼 fangjianp |
我的解如下: 解法一
解法二
|
3楼 wcymiss |
寻找升链的起点的个数。
简化:
|
4楼 wangg913 |
=SUM(N(2<FREQUENCY(ROW($1:$1101),(FREQUENCY(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)/1%+A2:J2,ROW($1:$1100))=0)*ROW($1:$1101)))) =FREQUENCY(FREQUENCY(ROW($1:$1101),(1-FREQUENCY(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)/1%+A2:J2,ROW($1:$1100)))*ROW($1:$1101)),{11,2}) =SUM(N(FREQUENCY(ROW($1:$600),ROW($1:$600)*ISNA(MATCH(ROW($1:$600),COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)/1%+A2:J2,)))>2) |
5楼 rongjun |
数组公式
|
6楼 sharprain |
|
7楼 chenhh803 |
先来一个能出答案的, =SUM(--(FREQUENCY(--(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)&A2:J2),IF(FREQUENCY(--(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)&A2:J2),ROW($1:$900)),,ROW($1:$901)))>1)) 上面的有问题, =SUM(--(FREQUENCY(--(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)&TEXT(A2:J2,"000")),IF(FREQUENCY(--(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)&TEXT(A2:J2,"000")),ROW($1:$10000)),,ROW($1:$10001)))>1)) 晕,太长,需要简化 =SUM(N(FREQUENCY(ROW($1:$11),(FREQUENCY(ROW($1:$9000),SMALL(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)/1%+A2:J2,ROW($1:$10)))>1)*ROW($1:$11))>1)) 再简: =SUM(N(FREQUENCY(ROW($1:$9000),(FREQUENCY(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)/1%+A2:J2,ROW($1:$9000))=0)*ROW($1:$9001))>2)) |
8楼 鬼狐 |
=SUM(--(MID(SUM((MMULT(SMALL(COUNTIF(OFFSET(A2,,,,COLUMN(A:J)),A2:J2)*100+A2:J2,IF({1,0},ROW($1:$9),ROW($2:$10))),{-1;1})=1)*10^(10-ROW($1:$9))),ROW($1:$9),2)="10")) 165字符,7层嵌套。。 差那么一点点就不行了 130以内的,搞不定~ |
9楼 wcymiss |
我觉得题目主要考的是思路。 从楼主给的预设公式来看,数据源应该是不含0的。 考虑0的话,也只需改下参数就可了,不影响公式思路 |
10楼 Zaezhong |
根据题目描述应该是第二个,不过最好还是楼主确认。荣版你的公式最后应该是到100,不是99 |
11楼 rongjun |
这两个公式对0值的处理效果不一样,不知道以哪个为准? |