【发布时间】:2017-05-15 22:20:14
【问题描述】:
我在 16 GB 内存的 Windows 10 上运行 Excel 2013。
我有一个类似于下图 1 的层次结构。我的结构有 1000 多行,深达 27 层。
对于上图的“树”,如何识别单元格的父节点?
这是我到目前为止所做的。使用条件格式,以及这个公式:
=AND(A1<>"",OFFSET(A1,1,1)="")
我能够识别树的叶子节点,如下图2所示。
现在我需要找到树中每个单元(子)的直接祖先(父)(除了没有父的第一行)。
图 3(下)显示了一个手动完成的示例:
此外,我可以将树与轮廓相关联。 然后我可以计算大纲中的小数位数,以便使用以下公式跟踪级别变化:
=LEN(A2)-LEN(SUBSTITUTE(A2,".",""))
如下图4所示:
如何以编程方式完成图 3 中手动完成的工作?
对于每一行(记录在树外的一列中),打印作为单元格父级的单元格的位置。
这是一个手动提供“级别”信息的类似问题。
How to find parent in an indented hierarchy?
就我而言,我需要使用大纲(如图所示)或使用条件格式的公式。
【问题讨论】:
-
给定一个
cell,它的父级是cell.offset(0,-1).end(xlUp)。 -
您会在建议的答案中展示您的解决方案吗?我不确定如何将您的评论应用于我的样本?我应该将示例放在 Google 电子表格上并分享网址吗?
-
这是一个 VBA 表达式,它返回给定单元格的父级。我不确定如何将
End(xlUp)翻译成公式,它可能会涉及一个复杂、令人困惑且缓慢的构造。如果您对某些 VBA 感到满意,请创建一个接受c并返回c.offset(0,-1).end(xlUp)的函数并从工作表中使用它,否则它可能对您没有帮助。 -
听起来很有希望。我曾希望避免使用 VBA,因为我不是 VBA 程序员,但如果它有效,我会接受它。您会发布脚本以便我可以复制/粘贴到 VBA 编辑器中并尝试一下吗?我希望这些值出现在自己的列中,在层次结构的左侧或右侧。
-
我已经发布了公式。
标签: excel