使用公式中的几个函数在Excel中创build分层次序

我需要能够在行中创build层次结构,以将任务与子任务和子子任务分开。 基本上任务是1级,子任务是2级子任务是3级,子子任务是4级。

在这里输入图像说明

因此,单元格A1应该包含以下公式:复制到单元格G1时,应该剥离单元格的值F1,然后单击+1,以使单元格的值G1变为2.单元格B1应该包含将获取单元格A1的值的公式并添加.1以便该值变为1.1 ,如果向下复制,则会将该值增加.1以便下一个单元格为1.2等等。 第三级和第四级的其余步骤应该与第二级的公式几乎相同。

我试图做到这一点没有VBA只是简单的公式,可以作为模板行放在我的电子表格中,并可以复制到电子表格的任何地方在需要时。

好的,首先在这里查看这篇文章,你应该能够find你需要的一切来创build你所需要的。 现在这里是你的例子中每个级别的所有公式

1级

 =IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(A1,-1,0,1,1),".",""))),1,IF(ISERROR(FIND("@",SUBSTITUTE(OFFSET(A1,-1,0,1,1),".","@",1))),VALUE(OFFSET(A10,-1,0,1,1))+1,VALUE(LEFT(OFFSET(A1,-1,0,1,1),FIND("@",SUBSTITUTE(OFFSET(A1,-1,0,1,1),".","@",1))-1))+1)) 

2级

 =IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(A2,-1,0,1,1),".",""))),"0.1",IF(ISERROR(FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",1))),OFFSET(A2,-1,0,1,1)&".1",LEFT(OFFSET(A2,-1,0,1,1),FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",1)))&IF(ISERROR(FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",2))),VALUE(RIGHT(OFFSET(A2,-1,0,1,1),LEN(OFFSET(A2,-1,0,1,1))-FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",1))))+1,VALUE(MID(OFFSET(A2,-1,0,1,1),FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",1))+1,(FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",2))-FIND("@",SUBSTITUTE(OFFSET(A2,-1,0,1,1),".","@",1))-1)))+1))) 

3级

 =IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(A3,-1,0,1,1),".",""))),"0.0.1",IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",2))),OFFSET(A3,-1,0,1,1)&".1",LEFT(OFFSET(A3,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",2)))&IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",3))),VALUE(RIGHT(OFFSET(A3,-1,0,1,1),LEN(OFFSET(A3,-1,0,1,1))-FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",2))))+1,VALUE(MID(OFFSET(A3,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",2))+1,(FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",3))-FIND("`",SUBSTITUTE(OFFSET(A3,-1,0,1,1),".","`",2))-1)))+1))) 

4级

 =IF(ISERROR(VALUE(SUBSTITUTE(OFFSET(A4,-1,0,1,1),".",""))),"0.0.0.1",IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",3))),OFFSET(A4,-1,0,1,1)&".1",LEFT(OFFSET(A4,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",3)))&IF(ISERROR(FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",4))),VALUE(RIGHT(OFFSET(A4,-1,0,1,1),LEN(OFFSET(A4,-1,0,1,1))-FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",3))))+1,VALUE(MID(OFFSET(A4,-1,0,1,1),FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",3))+1,(FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",4))-FIND("`",SUBSTITUTE(OFFSET(A4,-1,0,1,1),".","`",3))-1)))+1))) 

当然也可能有其他的方法,但是也可以。

让我知道你是否有这个问题。

我也有这个问题。 我解决了这个问题:

  1. 我专注于点。 每个点是一个层次结构。 在单元格A2,查找层次结构我使用了这个公式。

     =LEN(c2)-LEN(SUBSTITUTE(c2;".";"")) 

    C列是我有树的地方。 在这个公式之后填充整个列。 对于find的每个点,它会增加/减less一个数字,所以您设置的级别。

  2. 对于4个级别,我已经制定了这个公式,但是您可以根据您的需要增加它:在B2单元格中设置:

     =IF(A2=4;"level4"&C2&" "&D2; IF(A2=3;"level3"&C2&" "&D2; IF(A2=2;"level2"&C2&" "&D2; IF( A2=1;"level1"&C2&" "&D2;IF(A2=0;""&C2&" "&D2))))) 

    单元格D2是层次结构引用的名称:例如, C2= 1.1.1 D2= Arthur

这个web表单“吃”了我的所有空间,所以我用level4,level3,level2,level1,level0replace了它们。 为了达到树形风格,请用每个级别replace0,1,2,3,4,5个空格乘以级别号码。

在此之后,填充整个列。 我使用空格,因此可以清楚地显示层次结构。

它为我工作。 希望对你有用。