Excel按顺序创建给定级别的层次结构
我有一个唯一Id的顺序和缩进的级别。它们是按顺序排列的,因此当前ID的父ID是比当前缩进级别小1的ID(例如,如果当前缩进级别为3,则父ID将是其上第一行的ID,缩进级别为3-1=2,在这种情况下为UniqueID=4) 以下是我的数据示例: 我想要一个新列,其父UniqueID为当前UniqueIDExcel按顺序创建给定级别的层次结构,excel,excel-formula,parent,hierarchy,vba,Excel,Excel Formula,Parent,Hierarchy,Vba,我有一个唯一Id的顺序和缩进的级别。它们是按顺序排列的,因此当前ID的父ID是比当前缩进级别小1的ID(例如,如果当前缩进级别为3,则父ID将是其上第一行的ID,缩进级别为3-1=2,在这种情况下为UniqueID=4) 以下是我的数据示例: 我想要一个新列,其父UniqueID为当前UniqueID 谢谢我想明白了。我编写了一个包含以下内容的Visual Basic脚本: Function parent(r As Range) As Integer curVal = r.Value des
谢谢我想明白了。我编写了一个包含以下内容的Visual Basic脚本:
Function parent(r As Range) As Integer
curVal = r.Value
desiredCol = 2
parentFound = False
counter = 1
'loop through until parent is found or at beginning
Do Until CInt(r.Row) < 2 Or parentFound = True
If r.Offset(-counter, 0).Value < curVal Then
parentFound = True
desiredRow = r.Offset(-counter, 0).Row
End If
counter = counter + 1
Loop
parent = r.Offset(-counter + 1, -1).Value
End Function
函数父函数(r作为范围)作为整数
曲线=r.值
desiredCol=2
parentFound=False
计数器=1
'循环直到找到父项或在开始处
直到CInt(r.Row)<2或parentFound=True
如果r.Offset(-counter,0).Value
这将搜索列中级别低于该列的第一个单元格,并获取其左侧的ID值。通过“缩进级别为X的第一行”是否表示与自顶向下一样无条件?意思是如果你的缩进级别从上到下:1,1,2,2,1,1,2,2。此序列中的最后2个将使parentID等于此序列中第一个“1”的唯一ID?与第5位或第6位的唯一ID(分别为第3/4个“1”)相比。假设前面的假设为真,您应该能够使用以下公式,从单元格D2开始,向下延伸=索引(B:B,匹配(C1-1,C:C,0))是的,克里斯,你的第一句话是正确的。至于你的第二句话,它很接近,但不起作用。以下是它从D2上返回的内容:#值#不适用,2,3,4,5,6,6,5,5,5,4,4,5,5,5,4,4,5,6,6,7,7,7,6,7。。。应该是:nothing,2,3,4,5,6,6,5,5,5,5,4,4,14,14,4,4,18,将公式包装在IFERROR中以删除#值。例如:=IFERROR(索引(..),“”)也从C2开始,而不是从单元格D2的C1开始。