Return 列中第一个非空单元格中的值直接向左并向上

Return the value in the first non-empty cell in the column directly to the left and going upward

我是 VBA 的新手,大部分时间都在尝试在录制宏后修改代码,所以这一切都非常基础,而且方法可能不如我见过的一些东西那么优雅在这。所以我们开始吧。

我已经(通过蛮力)编码我的数据,使其像 CAD 设计树视图一样排列,父级 products/assemblies 和子级 sub-assemblies/parts。

E 列包含 0 级顶部组件零件号 F 列包含 1 级项目零件号 ...等一直到... M 列包含 8 级项目部件号

例如,单元格G112包含ASSY1;单元格 H113 到 H134 包含其构成项。

我想在新列(即 O 列)中显示单元格 G112 (ASSY1) 的每个组成部分的值。所以 O113 到 O134 将显示 G112 的值。这将需要应用于程序集的每个级别。

我不确定我说得有没有道理请看下面链接的图片,它说了一千个字。我在 O 列中突出显示并用颜色编码了我想要的结果。

附录 - 澄清事情: 我不知道还能如何解释我的请求,只能 post 我原始图片的简化版本。 SIMPLIFIED EXCEL TABLE

.CSV 可在此处获取 WeTransfer

一个非常有用的工具来检索VBA确定动作的代码是宏记录器,在功能区中,Developer -> RecordMacro,执行你的动作并停止记录,然后你可以检查为你记录的动作。它不是最干净的代码,但您可以在那里找到您想要的特定操作的代码行。一旦您使用您尝试的代码解决了一个具体问题,您就可以就更具体的事情寻求帮助,而不是期望有人会为您编写代码。

无论如何,如果您希望有人尝试解决您的问题,您需要 post table 使用可访问的数据而不是图像,以便试图解决您的问题的人有可用的数据。

希望对您有所帮助

如果有人感兴趣,这是我从其他地方得到的答案:

单元格 O3 中的公式:

=IF(C3=0,"N/A , 已经是顶级",INDEX(D$2:D2,AGGREGATE(14,6,(ROW(D$2:D2)-ROW(D$2 )+1)/(C$2:C2=C3-1),1)))

Copy/Paste 在 O

列的每个单元格中向下