+ -
当前位置:首页 → 问答吧 → 判断科目编码是否末级

判断科目编码是否末级

时间:2011-08-05

来源:互联网

      求助,

     根据A列数据判断是否是末级编码了,末级是结构上没有下一级,比如---102,10201,1020101----这样的3个数据,102是第一级,后面加01是第二级,10201再加上01是第三级科目,如果A列的科目编码是末级了,就标识成 1 或者 是 ,不是末级,就标成 0 或者 否。
下面是数据的模型,已经整理好

   第一次上传的数据存在空格,导致专家们解答帮助的时候产生影响,
在此真诚的道歉,并且感谢大家的帮助和谅解,我以后会验证整理好的     
万分感激

[ 本帖最后由 1696075 于 2011-8-5 13:54 编辑 ]

附件

数据目标模型.rar(4.2 KB)

2011-8-5 13:51, 下载次数: 7

标准模型

作者: 1696075   发布时间: 2011-08-05

怎样识别 末级 呢  末级有何特点呢

作者: yangrongguan   发布时间: 2011-08-05

先用查找替换把A列的空格去掉。
B2=--(MAX((LEFT(A2,3)=LEFT($A$2:$A$82,3))*LEN($A$2:$A$82))=LEN(A2))
数组公式,按三键结束。下拉

作者: fjdky   发布时间: 2011-08-05

=--(COUNT(1/(SEARCH(TRIM(A2)&"?",$A$2:$A$82)=1))=1)

作者: kkitt   发布时间: 2011-08-05

附件中科目编码里面有空白单元格,所以处理起来稍微比较复杂一点
B2=IF(SUM(LEN(SUBSTITUTE(A2:A3," ",))*{1;-1})>-1,1,)  数组公式下拉复制

顺便说一下,楼主手工模拟的目标效果有好些都不对,比如B2、B9单元格
这样的粗心会误导给予你帮助的人,同时也是对他人的不尊重

作者: MicrosoftEH   发布时间: 2011-08-05

=NOT((ISNUMBER(FIND(--A2,--A3))))*1下拉

作者: swyrlbq   发布时间: 2011-08-05

数组公式可以稍微简化一下
B2=--(SUM(LEN(TRIM(A2:A3))*{1;-1})>-1)   下拉复制

作者: MicrosoftEH   发布时间: 2011-08-05

引用:
原帖由 swyrlbq 于 2011-8-5 09:42 发表
=NOT((ISNUMBER(FIND(--A2,--A3))))*1下拉
确实高明
再精简一点,=--(-ISNUMBER((FIND(-A2,-A3)))=0)

作者: MicrosoftEH   发布时间: 2011-08-05

再减,数组公式=--(SUM(LEN(-A2:A3)*{1;-1})>-1)

作者: MicrosoftEH   发布时间: 2011-08-05

我还减,普通公式   =--(LEN(-A2)>=LEN(-A3))

作者: MicrosoftEH   发布时间: 2011-08-05

楼上几位老师确实精简的好。
我怎么就没考虑到编码是顺序排列的

作者: fjdky   发布时间: 2011-08-05

=(LEN(-A2)>=LEN(-A3))+0

作者: yangrongguan   发布时间: 2011-08-05

=N(COUNTIF($A$2:$A$82,--A2&"*")=1)

[ 本帖最后由 goodkf 于 2011-8-5 10:44 编辑 ]

作者: goodkf   发布时间: 2011-08-05

      求助,

     根据A列数据判断是否是末级编码了,末级是结构上没有下一级,比如---102,10201,1020101----这样的3个数据,102是第一级,后面加01是第二级,10201再加上01是第三级科目,如果A列的科目编码是末级了,就标识成 1 或者 是 ,不是末级,就标成 0 或者 否。

我想请教,公式是只和下一行做对比,还是在整列的范围进行比较得出的是否末级的结果???我觉得整列范围比较科学,防止有时候排列顺序乱了
下面是数据的模型,已经整理好

   第一次上传的数据存在空格,导致专家们解答帮助的时候产生影响,
在此真诚的道歉,并且感谢大家的帮助和谅解,我以后会验证整理好的     
万分感激

附件

数据目标模型.rar(4.2 KB)

2011-8-5 13:57, 下载次数: 12

作者: 1696075   发布时间: 2011-08-05

按照顺序排列的情况下  牟尼佛  老师的  =--(LEN(-A2)>=LEN(-A3))    太巧妙了,直接用长度搞定了!!!万分感激   
其他几位的方法也是很好,处处值得我学习,感谢大家的解答,受教

作者: 1696075   发布时间: 2011-08-05

引用:
原帖由 1696075 于 2011-8-5 13:57 发表
      求助,

     根据A列数据判断是否是末级编码了,末级是结构上没有下一级,比如---102,10201,1020101----这样的3个数据,102是第一级,后面加01是第二级,10201再加上01是第三级科目,如果A列的科目编码是末 ...
如果没有人为刻意的调整,科目表的排列应该是相同科目集中在一起的。因此,只需要上下行比较编码位数就可以了。
就附件而言,B2=--(LEN(A2)>=LEN(A3))  下拉就行了

作者: MicrosoftEH   发布时间: 2011-08-05

=IF(COUNTIF(A:A,A2&"*")=1,1,0)

作者: dapeng171   发布时间: 2011-08-05

整列比较
=N(COUNTIF($A$2:$A$82,--A2&"*")=1)
=IF(COUNTIF(A:A,A2&"*")=1,1,0)
只和下一行做对比
=--ISERR(FIND(-A2,-A3))
=--(LEN(-A2)>=LEN(-A3)) 这个公式在46行出错。

作者: wddn   发布时间: 2011-08-07

相关阅读 更多