gpt4 book ai didi

excel - 如何在缩进层次结构中找到父级?

转载 作者:行者123 更新时间:2023-12-04 20:12:34 24 4
gpt4 key购买 nike

我目前在 excel 中有一个带有缩进层次结构的工作表,如下所示。每个项目都被缩进(每个缩进四个空格)以显示它如何适应整个层次结构。我已经能够创建一个“级别”列,将缩进级别转换为数字。

    +------------+-------+--------+
| Item | Level | Parent |
+------------+-------+--------+
| P1 | 1 | N/A |
| P2 | 2 | P1 |
| P3 | 2 | P1 |
| P4 | 3 | P3 |
| P5 | 2 | P1 |
| P6 | 3 | P5 |
+------------+-------+--------+

我想要做的是生成上面的“父级”列,它使用“级别”信息来显示每个项目的父级。我认为这需要通过一个循环来完成,该循环将为每个项目 X 执行此操作:
    -Find level info for X
-Find (levelx-1) which would equal the parent item's level
-Search upward for the first row with a level equal to (levelx-1)
-Find the item number in that row
-Write item number in adjacent cell to X

不幸的是,我不确定如何将这个想法转化为 VBA。在此先感谢您的帮助。

最佳答案

好的,假设上表从单元格 A1 开始,有用的数据从第 2 行开始。这个公式可以解决问题:

=INDEX($A$1:$A$7,MAX(IF($B$2:$B2=B2-1,ROW($B$2:$B2),"")))

在单元格 C2 中输入作为数组公式(Ctrl+Shift+Enter),然后将其拉下。第一个显然是一个错误(不是 #NA 而是 #VALUE )。

工作原理:
IF($B$2:$B2=B2-1,ROW($B$2:$B2),"")

这将创建一个数组,其中包含比实际值低一级的值的行号。仅检查值 以上当前行,您需要使用扩展范围,因此 $B$2:$B2样式引用。
MAX函数获取这些行中的最大值,它最接近我们当前的单元格。现在我们有了行号。我们现在只需要一个从列 A 中提取数据的公式。从指示的行。这就是 INDEX做。

关于excel - 如何在缩进层次结构中找到父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34753817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com