本帖最后由 delete_007 于 2013-6-25 10:14 编辑
可以定义名称就来个长的
选中C1,定义两个名称
X_1=TRIM(MID(SUBSTITUTE($A1,"/",REPT(" ",99)),99*COLUMN($A:$I)-98,99))
X_2=INDEX(X_1,N(IF({1},LEN(MMULT(9^COLUMN($A:$I)*(LEN(X_1)>5),N((ROW($1:$9)<COLUMN($B:$J))))))))
C1公式- =TEXT(SMALL(10^9^(RIGHT(0&X_1,2)-MID(X_1&1,8^(LEN(X_1)>8),2)<ROW($1:$9)-1)+(0&MID(X_1,8^(LEN(X_1)>8),2))+ROW($1:$9)-2+LEFT(X_2,7)/1%,COLUMN(A:A)),"[<1e9]0;")
复制代码 首先以“/”做分隔数据,得到数组X_1={"755725187","89","96-97","755878720-21","","","","",""}X_2的作用也是为了得到订单号的前7位编号,通过MMULT从前向后累加的方法来得到完整订单号的位置,这里的9^COLUMN($A:$I)和LEN用得很巧妙。
LEFT(X_2,7)={"7557251","7557251","7557251","7558787","7558787","7558787","7558787","7558787","7558787"}
单元格公式:用“-”后的两位数字减去“-”前的两位数字,RIGHT(0&X_1,2)-MID(X_1&1,8^(LEN(X_1)>8),2)={0,0,1,1,-1,-1,-1,-1,-1}
再与{0;1;2;3;4;5;6;7;8}比较,如果满足条件,就会得到10^9(大数,屏蔽),否则为1.
加上订单号的后两位(0&MID(X_1,8^(LEN(X_1)>8),2))+ROW($1:$9)-2
以及订单号的前7位LEFT(X_2,7)/1%
最后TEXT+SMALL得出结果。
——delete_007
|