ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 函数与公式 > 练习题-多级自动编码

练习题-多级自动编码

作者:绿色风 分类: 时间:2022-08-18 浏览:146
楼主
gouweicao78
 

【答题期限】2009-12-20 0:00截稿
【题目1】如图所示:附件中是公路工程施工定额的一部分(为更好说明问题,图中部分单元格隐藏),采用4级编码,规则如下:
1、第1级01、02分别代表路基和路面工程;第2级开始,分别是构成前一个级别的子项目。
2、每个级分别流水编码,比如:
第2级0101、0102、……0201、0202……
第3级010101、010102……
第4级01011801……等等
3、每个级别的项目个数都都在99个以内,要求根据B:E列单元格的数据情况,在A列用公式得到自动编码。
【题目2】上述规则类似,但编码为:
用1、2表示第1级;每个级别分别流水编号,级别之间用-号相连,比如:
第2级:1-1、1-2……2-1、2-2……
第3级:1-1-1、1-1-2……
第4级:1-1-18-1、1-1-18-2……
【要求】
1、不使用VBA
2、允许使用辅助列,但不允许定义名称。
3、答案请保存为:练习题-多级自动编码-ID,压缩后上传附件。
【评分】
1、题目1答案正确得1技能分;题目2答案正确得2技能分。
2、不使用辅助列直接得出答案可再各加1技能分。
3、精彩答案可再获得2~5技能分。

题目附件:
多级自动编码.rar
2楼
biaotiger1
史上最长的公式了 呵呵
等着看高手精彩作品
  1. =TEXT(COUNTA(B$2:B2),"00")&TEXT(COUNTA(OFFSET(INDIRECT("c"&MATCH(LOOKUP("座",B$2:B2),B$2:B2,)),1,,ROW()-MATCH(LOOKUP("座",B$2:B2),B$2:B2,),)),"00;;")&TEXT((LEN(D2&E2)>0)*COUNTA(OFFSET(INDIRECT("d"&MATCH(LOOKUP("座",C$2:C2),C$2:C2,)),1,,ROW()-MATCH(LOOKUP("座",C$2:C2),C$2:C2,),)),"00;;")&TEXT((E2<>"")*COUNTA(OFFSET(INDIRECT("e"&MATCH(LOOKUP("座",D$2:D2),D$2:D2,)),1,,ROW()-MATCH(LOOKUP("座",D$2:D2),D$2:D2,),)),"00;;")

  2. =SUBSTITUTE(TRIM(COUNTA(B$2:B2)&" "&TEXT(COUNTA(OFFSET(INDIRECT("c"&MATCH(LOOKUP("座",B$2:B2),B$2:B2,)),1,,ROW()-MATCH(LOOKUP("座",B$2:B2),B$2:B2,),)),"#;;")&" "&TEXT((LEN(D2&E2)>0)*(COUNTA(D$2:D2)>0)*COUNTA(OFFSET(INDIRECT("d"&MATCH(LOOKUP("座",C$2:C2),C$2:C2,)),1,,ROW()-MATCH(LOOKUP("座",C$2:C2),C$2:C2,),)),"#;;")&" "&TEXT((E2<>"")*COUNTA(OFFSET(INDIRECT("e"&MATCH(LOOKUP("座",D$2:D2),D$2:D2,)),1,,ROW()-MATCH(LOOKUP("座",D$2:D2),D$2:D2,),)),"#;;"))," ","-")

多级自动编码-biaotiger1.rar
3楼
toby08
练习题-多级自动编码-toby08.rar
4楼
rongjun
练习题-多级自动编码-rongjun.rar
5楼
王冰
怎样才能实现啊,感谢各位高手!
6楼
gouweicao78
我的答案:
题目1:
A2公式

  1. =LEFT(A1,2*MATCH("*",B2:E2,)-2)&TEXT((0&MID(A1,2*MATCH("*",B2:E2,)-1,2))+1,"00")

水星钓鱼给出3个答案,都比我的答案好,呵呵:
  1. =LEFT(F1,2*MATCH("座",B2:E2)-2)&TEXT((0&MID(F1,2*MATCH("座",B2:E2)-1,2))+1,"00")
  1. =LEFT(G1,2*MATCH("座",B2:E2)-2)&RIGHT(0&(0&MID(G1,2*MATCH("座",B2:E2)-1,2))+1,2)
  1. =RIGHT(0&LEFT(H1&0&0,2*MATCH("座",B2:E2))+1,2*MATCH("座",B2:E2))

rongjun兄的答案:
  1. =RIGHT(10^8+LEFT(A1&REPT(0,8),2*MATCH("*",B2:E2,))+1,2*MATCH("*",B2:E2,))


题目2:
我的答案1,借用题目1的结果(相当于题目1作为辅助列):
  1. =MID(SUBSTITUTE(TEXT(A2,REPT("-00",LEN(A2)/2)),"-0","-"),2,9)

不借用答案1的公式:
  1. =MID(SUBSTITUTE(TEXT(SUM(TRIM(MID(SUBSTITUTE(0&A1&"-0-0-0","-",REPT(" ",50)),COLUMN(A:D)*50-49,50))*100^(MATCH("*",B2:E2,)-COLUMN(A:D)))+1,REPT("-00",MATCH("*",B2:E2,0))),"-0","-"),2,11)


水星钓鱼给出2个答案(和我想法比较接近,不过比我的简洁):
  1. =MID(SUBSTITUTE(SUBSTITUTE(TEXT(SUM(MID(SUBSTITUTE(0&F1&"-0-0-0","-",REPT(" ",9)),{1,9,21,31},9)*100^(MATCH("座",B2:E2)-{1,2,3,4}))+1,REPT("-00",4)),"-00",),"-0","-"),2,11)
  1. =LEFT(G1&"-",IF(B2="",FIND(" ",SUBSTITUTE(G1&"-","-"," ",MATCH("座",C2:E2)))))&1+MID(SUBSTITUTE(0&G1&"-0","-",REPT(" ",9)),9*MATCH("座",B2:E2)-8,9)


rongjun兄的答案:
  1. =IF(MATCH("*",B2:E2,)=1,COUNTA($B$2:B2),LOOKUP("座",OFFSET($A$1:A1,,MATCH("*",B2:E2,)-1),$A$1:A1)&"-"&COUNTA(OFFSET(B2,,MATCH("*",B2:E2,)-1,LOOKUP("座",OFFSET($A$1:A1,,MATCH("*",B2:E2,)-1),ROW($1:1))-ROW())))


简单点评:总体上说,toby08的答案是本题的最佳答案。我一直想用SUBTOTAL+多维引用构建一下的,不过没成功,当然题目2如果使用题目1的结果作辅助列的话,问题就简单得多。
自动定额编码答案.rar
7楼
donghan
学习高手的函数

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap