Excel 如果子行有1个或多个填充值,则更新大纲标题单元格

Excel 如果子行有1个或多个填充值,则更新大纲标题单元格,excel,vba,loops,Excel,Vba,Loops,在扫描轮廓和子行时,我真的很挣扎。在我下面的代码中(见附图),我有一个工作表(图a),其中我想扫描C列,当值为1时(大纲)然后,我想扫描所有嵌套行,直到我点击下一个大纲,即1,您可以在C列中为嵌套组分配级别编号,因此当C列中的级别编号为1时,相同的例程需要再次循环,直到C列中的最后一行(或最后一个大纲)。找到大纲(级别1)后,我想扫描所有嵌套行/子组,以查看D列(加载编号)中是否有值。如果至少有一行有一个值,那么我想用状态“SPLIT LOAD”或“SINGLE LOAD”更新原始父级上的单元格

在扫描轮廓和子行时,我真的很挣扎。在我下面的代码中(见附图),我有一个工作表(图a),其中我想扫描C列,当值为1时(大纲)然后,我想扫描所有嵌套行,直到我点击下一个大纲,即1,您可以在C列中为嵌套组分配级别编号,因此当C列中的级别编号为1时,相同的例程需要再次循环,直到C列中的最后一行(或最后一个大纲)。找到大纲(级别1)后,我想扫描所有嵌套行/子组,以查看D列(加载编号)中是否有值。如果至少有一行有一个值,那么我想用状态“SPLIT LOAD”或“SINGLE LOAD”更新原始父级上的单元格值(参见图D)。这是我的代码,我只是兜圈子,因为它没有扫描我的子行

Sub ScanRows()
     Dim LoadNumber As Integer
     Dim LevelNumber As Integer
     Dim LoadStatus As String
     Dim LastRow As Long, i As Long

     LastRow = Cells(Rows.Count, "C").End(xlUp).Row
       
     For i = 1 To LastRow
         
       If Range("C" & i).Value = 1 And Range("D" & i).Value <> "N/A" Then
        
            LoadNumber = Range("D" & i).Value
            LoadStatus = Range("E" & i).Value
            
           If Range("C" & i).Value > 1 And IsEmpty(Range("D" & i).Value) Then
               ' Update the Loadstatus "SINGLE LOAD"
               Else
               ' Update the Loadstatus "SINGLE LOAD"
           End If
            
     End If
    
 Next i
 
 End Sub
子扫描行()
将LoadNumber设置为整数
Dim LevelNumber为整数
将加载状态设置为字符串
昏暗的最后一排一样长,我一样长
LastRow=单元格(Rows.Count,“C”)。结束(xlUp)。行
对于i=1到最后一行
如果范围(“C”和i).Value=1,范围(“D”和i).Value“N/A”,则
LoadNumber=范围(“D”和i).值
LoadStatus=范围(“E”和i).值
如果范围(“C”&i).Value>1且为空(范围(“D”&i).Value),则
'更新加载状态“单次加载”
其他的
'更新加载状态“单次加载”
如果结束
如果结束
接下来我
端接头
谢谢


使用一个helper列很容易做到这一点。使用公式添加新的列d =如果(C2=1,D1+1,D1)

那么你之前的d就是公式
=IF(C2=1,IF(AND(C2=1,COUNTIFS(D:D,D2,E:E,“>=”&0)>1),“拆分加载”,“单个加载”),”)

使用一个辅助列很容易做到这一点。使用公式添加新的列d =如果(C2=1,D1+1,D1)

那么你之前的d就是公式
=IF(C2=1,IF(和(C2=1,COUNTIFS(D:D,D2,E:E,“>=”&0)>1),“分载”,“单载”),”)

非常感谢您的回复,我希望它能正常工作。非常感谢你的帮助。再次感谢你,很高兴这有帮助!当我进一步思考这个问题时,如果你真的想要一个宏解决方案,你可以创建一个宏来添加一行,自动填充那些公式,粘贴为值,然后删除helper列。如果您需要帮助,请告诉我。我更喜欢此解决方案,但感谢您并尊重您的支持伙伴!我是vba和编码的新手,非常喜欢学习,但时间是站在我这一边的,所以我写了这篇文章。我不想遇到懒惰:-)您为我排序的解决方案是从我们的PLM系统中提取的BOM(物料清单),在该系统中,我们希望使用相关逻辑进行后期处理,以提供运输装箱单,以便我们的生产团队可以将相关生产零件装载到相关容器中。这就是为什么负载很重要!我会坚持使用PLM系统,我想lol………谢谢Marc我猜客户现在要求的是宏。原因是级别1(父行)和子行的数量可能会根据它们从BOM表本身获取的提取而有所不同。我已经创建了一个宏来轻松创建Helper列并填充公式,但我现在的问题是如何根据级别1的数量和总行数使这两个列工作,因为它们每次都可能不同,Buddy,您可以发布另一个数据外观的屏幕截图吗?非常感谢您的回复,并且工作方式完全相同我想要它。非常感谢你的帮助。再次感谢你,很高兴这有帮助!当我进一步思考这个问题时,如果你真的想要一个宏解决方案,你可以创建一个宏来添加一行,自动填充那些公式,粘贴为值,然后删除helper列。如果您需要帮助,请告诉我。我更喜欢此解决方案,但感谢您并尊重您的支持伙伴!我是vba和编码的新手,非常喜欢学习,但时间是站在我这一边的,所以我写了这篇文章。我不想遇到懒惰:-)您为我排序的解决方案是从我们的PLM系统中提取的BOM(物料清单),在该系统中,我们希望使用相关逻辑进行后期处理,以提供运输装箱单,以便我们的生产团队可以将相关生产零件装载到相关容器中。这就是为什么负载很重要!我会坚持使用PLM系统,我想lol………谢谢Marc我猜客户现在要求的是宏。原因是级别1(父行)和子行的数量可能会根据它们从BOM表本身获取的提取而有所不同。我已经创建了一个宏来轻松创建Helper列并填充公式,但我现在的问题是如何根据级别1的数量和总行数使这两个列工作,因为它们每次都可能不同Buddy你能发布另一个数据外观的屏幕截图吗?