楼主 wcymiss |
【题目】 将字符排列成金字塔。 条件如下: 1、A列每隔4行会有一个三位的文本数据。 2、B1:H4部分为将0-9先按在A1的出现次序,后按从小到大顺序,进行金字塔样排列,如附件所示。B6:H9、B11:H14依此类推。
【要求】 不用名称、辅助列、SQL、VBA。仅限于一个07版适用的下拉、右拉公式完成。
【奖励】 1、公式正确者、符合要求得3技能分。 2、公式字符数最少者可再获3技能分。(请版主帮忙评分)
【期限】 2011年2月25日晚9点前。之后提供结果的不予评分。
金字塔.rar
|
2楼 悟空师弟 |
没有好思路,先来个超长数组公式:(383字符)
- =IF(IF(OR(ABS(4-COLUMN(A1))>MOD(ROW()-1,5),MOD(ROW(),5)=0,MOD(COLUMN(A1)+MOD(ROW()-1,5)+1,2)=0),"",MOD(COLUMN(A1)+MOD(ROW()-1,5)+1,2))="","",MID(RIGHT(LOOKUP("座",$A$1:$A1)&IF(COUNT(FIND(0,LOOKUP("座",$A$1:$A1))),,0)&SUM(LARGE(IF(FIND(ROW($1:$9),LOOKUP("座",$A$1:$A1)&"0123456789")<4,,ROW($1:$9)),ROW($1:$9))*10^ROW($2:$10))%,10),(COLUMN(O1)-CHOOSE(MOD(ROW(A1)-1,5)+1,16,13,8,1,0))/2,1))
|
3楼 悟空师弟 |
简化一下,数组公式,337字符:- =IF(OR(ABS(4-COLUMN(A1))>MOD(ROW()-1,5),MOD(ROW(),5)=0,MOD(COLUMN(A1)+MOD(ROW()-1,5)+1,2)=0),"",MID(RIGHT(LOOKUP("座",$A$1:$A1)&IF(COUNT(FIND(0,LOOKUP("座",$A$1:$A1))),,0)&SUM(LARGE(IF(FIND(ROW($1:$9),LOOKUP("座",$A$1:$A1)&"123456789")<4,,ROW($1:$9)),ROW($1:$9))*10^ROW($2:$10))%,10),(COLUMN(O1)-CHOOSE(MOD(ROW(A1)-1,5)+1,16,13,8,1,0))/2,1))
|
4楼 鬼狐 |
=IF(MOD(COLUMN(A1)+MOD(ROW()-1,5)+1,2)*(ABS(4-COLUMN(A1))<MOD(ROW()-1,5)+1)*MOD(ROW(),5),MOD(SMALL(FIND(ROW($1:$10)-1,INDEX($A:$A,LOOKUP(ROW(),(ROW($1:$9)-1)*5+1))&0.123456789)*10+ROW($1:$10)-1,INT(COLUMN(A1)/2)+2^MOD(ROW(A1)-1,5)-1-(MOD(ROW(A1),5)=1)),10),"") |
5楼 hhaa999 |
k 看看了 |
6楼 于晓庆 |
|
7楼 bluexuemei |
学习一下! |
8楼 wcymiss |
- =IF((ABS(COLUMN(A1)-4)<MOD(ROW(A1),5))*(-1^COLUMN(A1)=-1^MOD(ROW(A5),5))*MOD(ROW(A1),5),LOOKUP(MOD(ROW(A1),5)&COLUMN(A1),{14;23;25;32;34;36;41;43;45;47}&"",RIGHT(LARGE(-(FIND(ROW($1:$10)-1,LOOKUP("做",$A$1:$A1)&"0123456789")&ROW($1:$10)-1),ROW($1:$10)))),"")
我的公式。呵呵,不如鬼狐的好,取巧了的 |
9楼 wangg913 |
竟然如此之长,无怪乎想了半小时无头绪 |