本函数题简单,简单得就像做饺子。可是,做饺子也不简单,各人做的饺子自有各的做法、各的风味,不简单!不简单得就像本函数题。 1、扭扭捏捏,饺子终究做成了。 =A2&B2&C2&D2&E2&F2&G2&H2&I2&J2&K2&L2&M2&N2&O2&P2&Q2&R2&S2&T2&U2&V2&W2&X2&Y2&Z2&AA2&AB2&AC2&AD2&AE2&AF2&AG2&AH2&AI2&AJ2&AK2&AL2&AM2&AN2&AO2&AP2&AQ2&AR2&AS2&AT2&AU2&AV2&AW2&AX2&AY2&AZ2&BA2&BB2&BC2&BD2&BE2&BF2&BG2&BH2&BI2&BJ2&BK2&BL2&BM2&BN2&BO2&BP2&BQ2&BR2 有个朋友还分段加个TRIM()函数,因为没数字的单元格都是空单元格,所以变得多余了。 2、到厨房找个模具,做饺子像玩游戏,也有乐趣。 =SUM(A2:J2)&SUM(K2:T2)&SUM(U2:AD2)&SUM(AE2:AN2)&SUM(AO2:AX2)&SUM(AY2:BH2)&SUM(BI2:BR2) =MAX(A2:J2)&MAX(K2:T2)&MAX(U2:AD2)&MAX(AE2:AN2)&MAX(AO2:AX2)&MAX(AY2:BH2)&MAX(BI2:BR2) =LARGE(A2:J2,1)&LARGE(K2:T2,1)&LARGE(U2:AD2,1)&LARGE(AE2:AN2,1)&LARGE(AO2:AX2,1)&LARGE(AY2:BH2,1)&LARGE(BI2:BR2,1) =CONCATENATE(LOOKUP(10,A2:J2),LOOKUP(10,K2:T2),LOOKUP(10,U2:AD2),LOOKUP(10,AE2:AN2),LOOKUP(10,AO2:AX2),LOOKUP(10,AY2:BH2),LOOKUP(10,BI2:BR2)) =SUBTOTAL(4,A2:J2)&SUBTOTAL(4,K2:T2)&SUBTOTAL(4,U2:AD2)&SUBTOTAL(4,AE2:AN2)&SUBTOTAL(4,AO2:AX2)&SUBTOTAL(4,AY2:BH2)&SUBTOTAL(4,BI2:BR2) 把70个单元格分成7段,每段有且只有一个数字,这是本题的特点。找到这个规律,用SUM()、MAX()、SUBTOTAL()等函数得到各段的数字,连接起来便是结果。 3、谁家姑娘手儿巧,做的饺子美,看看都是一种享受。 {=TEXT(SUM(SUBTOTAL(4,OFFSET(A2,,(ROW($1:$7)-1)*10,,10))*10^(7-ROW($1:$7))),"0000000")} {=RIGHT(TEXT(SUM(SUMIF(OFFSET(A2,,(COLUMN($A:$G)-1)*10,1,10),">=0")*10^-COLUMN($A:$G)),"0.0000000"),7)} 这个公式的基础是把三维引用运用到公式,根据70个单元格平均分成7段的规律,用OFFSET()把一行数据分成7段进行引用,作SUBTOTAL()或SUMIF()的参数。 SUBTOTAL()的结果是返回各段中的数字,如:{9;6;8;1;3;6;2},把这些数字连接成字符串,经典做法是乘以10的不同次幂,再把结果相加: 10^(7-ROW($1:$7))即是{1000000;100000;10000;1000;100;10;1} SUM({9;6;8;1;3;6;2}*{1000000;100000;10000;1000;100;10;1}) =9000000+600000+80000+1000+300+60+2 =9681362 {=TEXT(SUM((N(OFFSET(A2,,SMALL(IF(A2:BR2<>"",COLUMN(A2:BR2)),ROW($1:$7))-1,)))*(10^(7-ROW($1:$7)))),"0000000")} {=TEXT(SUM(LOOKUP(SMALL(IF(A2:BR2<>"",COLUMN(A2:BR2)),ROW($1:$7)),COLUMN(A2:BR2),A2:BR2)*10^(7-ROW($1:$7))),"0000000")} {=TEXT(SUM(N(INDIRECT("r"&ROW()&"c"&SMALL(IF(A2:BR2<>"",COLUMN(A2:BR2)),COLUMN($A$2:$G$2)),))*TRANSPOSE(10^(7-ROW($1:$7)))),"0000000")} 不管数字在哪个段,只要存在数字,先返回数字所在的列号,根据列号,用OFFSET()返回数值,是另一个思路,也值得学习。 =TEXT(MMULT(SUBTOTAL(9,OFFSET($A$2:$J$2,ROW($A$2:$A$14)-2,(COLUMN($A$2:$G$2)-1)*10)),10^(7-ROW($1:$7))),"0000000") =TEXT(SUM(MMULT(N(OFFSET($A2,,TRANSPOSE(ROW($1:$10))+(ROW($1:$7)-1)*10-1,,)),ROW($1:$10)^0)*10^(7-ROW($1:$7))),"0000000") MMULT()在这题中有笨重之嫌,但总是一个思路,研究它还是有益的。 {=TEXT(SUM(MOD(SMALL(IF(A2:BR2<>"",COLUMN(A2:BR2)),ROW($1:$7))-1,10)*10^(7-ROW($1:$7))),"0000000")} {=TEXT(SUM((A2:BR2<>"")*MOD(COLUMN(A2:BR2)-1,10)*(10^(6-INT((COLUMN(A2:BR2)-1)/10)))),"0000000")} 单元格中的数字等于MOD(COLUMN(A:BR)-1,抓住这一规律,使公式显得独特而情趣盎然。 4、传说中的饺子就在你我眼前。 {=RIGHT("0000000"&SUM(A2:BR2*10^(6-INT((COLUMN(A2:BR2)-1)/10))),7)} =TEXT(SUMPRODUCT(A2:BR2*10^INT((71-COLUMN(A2:BR2))/10)),REPT(0,7)) =MID(SUMPRODUCT(A2:BR2,10^(-INT(COLUMN(A2:BR2)/10+0.9)))&"000000000",3,7) 70个单元格平均分成7段,每段的10个数字(其中9个空单元格当0计算)乘以10的不同次幂,把70个结果求和。 5、老师啊,你要是再端点醋来,该多好啊。 结果要求以7位文本显示,多数人想到用TEXT(),包括我,当然,用它没错。有点意外,这里还有新鲜的花样给你带来好心情,RIGHT()、MID()本是十分平常的函数,平常得就像陈醋,但今天,它让你回味无穷。
[此贴子已经被作者于2007-2-28 8:36:16编辑过] |