引言:本文的练习整理自chandoo.org。多一些练习,想想自己会怎么解决这个问题,看看别人又是怎样解决的,这样能够快速提高Excel公式编写水平。
本次的练习是:示例数据如下图1所示。
图1
图1的列B和列C中是项目及其相应的价格。在列A中,等级表示为[x]#,其中[x]表示层次结构的级别,#表示该层次结构的数字。因此,如果要确定层次结构,可以计算点的数量,或者提取列A中数据右侧的数值。
注意,最顶层的层次结构没有价格值,因为这是最高级别。顺便说一下,列B与我们的问题无关。
列D是公式的输出。不能使用辅助列,请写下你的公式。
解决方案
公式1:数组公式。
=IFERROR(SUM(OFFSET(C2,,,MATCH(TRUE,RIGHT(A3:A20)<=RIGHT(A2),0))),SUM(C2:C20))
或者:
=IFERROR(SUM(OFFSET(C2,,,MATCH(TRUE,RIGHT(A3:A20,2)*10<=RIGHT(A2,2)*10,0))),SUM(C2:C20))
公式2:数组公式。
=SUM(OFFSET(C2,,,MATCH(0,--(--SUBSTITUTE(0&A3:A$22,".","0")>--SUBSTITUTE(A2,".","0")),)))
或者:
=SUM(OFFSET(C2,,,MATCH(0,N(--SUBSTITUTE(0&A3:A$22,".",0)>--SUBSTITUTE(A2,".",0)),)))
公式3:数组公式。
=SUM(OFFSET(C2,,,IFERROR(MATCH(0,N(LEN(A2)<LEN(A3:A$20)),),19)))
公式4:数组公式。
=IFERROR(SUM(OFFSET(C2,,,MATCH(1,IF(VALUE(SUBSTITUTE(A2,".",""))<VALUE(SUBSTITUTE(A3:C20))
……
公式并没有给出详细的解析,有兴趣的朋友可以参照前面推送的有关分析公式的文章对这些公式进行解析,相信对理解Excel函数,编写公式解决问题会有很大的帮助。
注:公式练习的示例可能有用,也可能没有多大实际用处,主要目的是通过编写公式解决Excel问题来磨练公式与函数应用技能,也让研究Excel的大脑时刻保持良好的状态。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。