计算未定义范围内的空白单元格数目,并将下一列中的值相加

我已经写了一个VBA脚本,允许用户允许插入一个新的组件和它的重量到一个表中。 插入的程序集可以是两个级别之一(1或2)。 如果插入的行是子组件(即级别2),则其位置直接位于较高级别组件的下方。 我希望1级权重等于所有2级权重的总和。 我相信最简单的方法是计算空白单元格来定义范围,然后进行计算。 如果等级1中的当前权重与等级2权重的总和之间的差异不是0,则希望将该值作为等级2权重插入与级别1程序集相同的行中。 我意识到这是相当混乱的,所以附上了一张图片来尝试和稍微解释一下。 任何帮助表示赞赏:)

Excel工作表图像

这里是我目前使用的代码插入值(从一个用户表单)

If TextBox_LevelNo.Value = 1 Then Cells(NextRow, 6).Value = TextBox_Weight.Value Cells(NextRow, 7).Value = TextBox_ExtraWeight.Value ElseIf TextBox_LevelNo.Value = 2 Then Cells(NextRow, 7).Value = TextBox_Weight.Value Cells(NextRow, 8).Value = TextBox_ExtraWeight.Value ElseIf TextBox_LevelNo.Value = 3 Then Cells(NextRow, 8).Value = TextBox_Weight.Value End If 

好的,在这里。 使用这个macros。 一旦你完成了对程序集的工作,就执行它。

代码解释:

  • 必须将col1和col2分别设置为级别的列号
  • 其他变化不应该是必要的。 检查列值只是一个很大的迭代

只要执行一次这个macros。 级别1条目旁边的所有级别2列将被设置。

 Sub SumLevelOne() Dim col1 As Integer Dim col2 As Integer col1 = 1 'level 1 column (1 = A) col2 = 2 'level 2 column (2 = B) Dim i As Integer Dim currentLevel1Row As Integer currentLevel1Row = -1 Dim currentLevel1Total As Integer currentLevel1Total = 0 Dim currentLevel2Sum As Integer currentLevel2Sum = 0 Dim LastRow As Integer LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col2).End(xlUp).Row For i = 1 To LastRow If Cells(i, col1) <> "" Then 'level 1 entry If currentLevel1Row <> -1 Then 'level 1 entry already set 'sum up former level 1 entry: Cells(currentLevel1Row, col2) = currentLevel1Total - currentLevel2Sum End If 'set new level 1 entry currentLevel1Row = i currentLevel1Total = Cells(i, col1) currentLevel2Sum = 0 ElseIf i = LastRow Then If currentLevel1Row <> -1 Then 'level 1 entry already set 'sum up former level 1 entry: Cells(currentLevel1Row, col2) = currentLevel1Total - currentLevel2Sum End If Else 'sum up level 2 entries If Cells(i, col2) <> "" Then 'level 2 entry here 'add this currentLevel2Sum = currentLevel2Sum + Cells(i, col2) End If End If Next i End Sub