本帖最后由 wlc5201130 于 2014-3-17 09:17 编辑
先上个长的吧 376字符,在慢慢简化。
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LOOKUP(--LEFT(0&MMULT((MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),ROW($1:333333)-1,MMULT(--(0&MID(ROW($1:333333),COLUMN(A:F),1)),ROW($1:$6)^0)),MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1),F$2:F$19,),)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>111111]0;")
数组
测试等了15分钟。真漫长,估计是我电脑问题吧。
简化下333字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,"11"),3,"111")),MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1),F$2:F$19,),)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>111111]0;")
329字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,"11"),3,"111")),MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>99999]0;")
317字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT(ROW($2:729)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,11),3,111)),MOD(INT(ROW($2:729)/3^(6-COLUMN(A:F))),3)+1),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>99999]0;")
以上公式情况好像都有些问题,假如是“我我我我我我我我”超过7的话,还会显示6位的编码。故修改下。
又变成了389字符了,运算速度还行。
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT(ROW($1:729)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,11),3,111)),MOD(INT(ROW($1:729)/3^(6-COLUMN(A:F))),3)+1),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT((MOD(INT(ROW($1:729)/3^(6-COLUMN(A:F))),3)+1),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")
简化 316字符,速度比较慢
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW($111111:333333),COLUMN(A:F)),2,11),3,111)),MID(ROW($111111:333333),COLUMN(A:F),1)),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT(--MID(ROW($111111:333333),COLUMN(A:F),1),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")
308字符 速度慢
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW(1:333333),COLUMN(A:F)),2,11),3,111)),--(0&MID(ROW(1:333333),COLUMN(A:F),1))),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT(--(0&MID(ROW(1:333333),COLUMN(A:F),1)),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")
293字符
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW(A:A),COLUMN(A:F)),2,11),3,111)),--(0&MID(ROW(A:A),COLUMN(A:F),1))),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT(--(0&MID(ROW(A:A),COLUMN(A:F),1)),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")
数组
速度更慢。公式应该没有问题的,不过下拉时提示。“试图计算1个或多个公式时,Excel资源不足,因此,无法计算这些公式”,关键引用了ROW(A:A)的关系。我用的是2007版本,不知道漫步满足要求。不满足就以下面的300字符为准吧。
正好300字符
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW(1:333333),COLUMN(A:F)),2,11),3,111)),0&MID(ROW(1:333333),COLUMN(A:F),1)),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW(1:6)^0),0,))*(MMULT(--(0&MID(ROW(1:333333),COLUMN(A:F),1)),ROW(1:6)^0)=LEN(A2))),"[>1E5]0;")
数组下拉。
|