函高练习题-01
字符串:全角&半角&全角&半角要求一个公式提取第一个半角部分
全角即中文汉字,半角包括英文字母、数字、符号
不用回复可见了,题目比较妖,大家一起讨论。
本帖最后由 tyxh0916 于 2012-5-8 13:26 编辑
=MIDB(A1,SEARCHB("?",A1),INDEX(FREQUENCY(IF(MIDB(A1,ROW($1:$99),1)<>" ",ROW($1:$99)),IF(MIDB(A1,ROW($1:$99),1)=" ",ROW($1:$99))),SEARCHB("?",A1)))
=MIDB(A1,SEARCHB("?",A1),MIN(IF((MIDB(A1,ROW($1:$30),1)=" ")*ROW($1:$30)>SEARCHB("?",A1),ROW($1:$30)))-SEARCHB("?",A1)) =MID(A1,SEARCHB("?",A1)/2+0.5,MIN(IF(CODE(MID(A1,ROW(INDIRECT(SEARCHB("?",A1)/2+0.5 &":"&LEN(A1))),1))>122,ROW(INDIRECT(SEARCHB("?",A1)/2+0.5 &":"&LEN(A1)))))-SEARCHB("?",A1)/2-0.5) =MID(A2,MATCH(1,--(LEN(MID(A2,ROW($1:$25),1))=LENB(MID(A2,ROW($1:$25),1))),),MATCH(1,(LEN(MID(A2,ROW($1:$25),1))=LENB(MID(A2,ROW($1:$25),1)))*(LEN(MID(A2,ROW($2:$26),1))<>LENB(MID(A2,ROW($2:$26),1))),)-MATCH(1,--(LEN(MID(A2,ROW($1:$25),1))=LENB(MID(A2,ROW($1:$25),1))),)+1) 本帖最后由 CheryBTL 于 2012-5-8 13:03 编辑
想到个140字符:再简化吧: =REPLACE(LEFT(A1,MATCH(1,(LENB(MID(A1,ROW($1:$98),1))=1)-(LENB(MID(A1,ROW($2:$99),1))=1),)),1,MATCH(1,N(LENB(MID(A1,ROW($1:$98),1))=1),)-1,)看到大家用SEARCHB("?",A1)确实好,可以再简化到113:
=REPLACE(LEFT(A1,MATCH(1,(LENB(MID(A1,ROW($1:$98),1))=1)-(LENB(MID(A1,ROW($2:$99),1))=1),)),1,SEARCHB("?",A1)/2,)
本帖最后由 wp8680 于 2012-5-8 12:54 编辑
不用看了,好像不通用,公式后半部分有错。故删除了公式。请谅解
=MID(A1,0.5+SEARCHB("?",A1)/2,MATCH(2,LENB(MID(A1,ROW($1:$99),1))-(ROW($1:$99)<SEARCHB("?",A1)/2),0)-0.5-SEARCHB("?",A1)/2) =LEFT(MIDB(A1,SEARCHB("?",A1),98),MIN(IF(MIDB(MIDB(A1,SEARCHB("?",A1),99),ROW(2:99),1)=" ",ROW(1:98)))) 本帖最后由 wjc2090742 于 2012-5-8 14:19 编辑
数组公式=MIDB(A1,SEARCHB("?",A1),MATCH(" ",MIDB(A1,SEARCHB("?",A1)+ROW($1:$99),1),)+1)=MIDB(A1,SEARCHB("?",A1),MATCH(2,LENB(MID(A1,SEARCHB("?",A1)+ROW($1:$99),1)),)+1) =MIDB(A1,SEARCHB("?",A1),MATCH("?",MIDB(A1,SEARCHB("?",A1)+ROW($1:$99),2),))