基于具有缩进

时间:2015-09-18 09:58:42

标签: excel vba excel-vba

我有这样的布局:

0
 0
  0  5
  1  6
 1
  0  7
  1  8
1
 0
  0  9
  1  10
 1
  0  11
  1  12

以上是包含000, 001, 010, 011 to 111组合的列表。这些组合都有一定的值,从5到12。 (输入是新行,空格是单元格,5, 6, 7, etc.位于新列中.0和1都在同一列中。)

现在我需要得到第一个0/1为1的所有值的总和,即第二个0/1为1的所有值的总和,以及最后一个值的相同值。这种情况下的结果必须是:42, 38 and 36

我无法找到如何正确编程。我希望有这样的事情:

While not Sheets("Sheet 1").Cells(j, 1).indentlevel(2).Value = 0
    sum = sum + cells(j,2)
    j = j + 1
Wend

但显然这不起作用。我无法在没有循环的情况下全部编程,因为代码最多可以有5个小部件(例如01101)

2 个答案:

答案 0 :(得分:0)

你有没有想过使用for循环?另外我认为您使用的是IndentLevel syntax incorrectly.

With ThisWorkbook.Sheets("Sheet 1")
    set rng = Range(.cells(1,1), .cells(3,10)) ' Change this to match your range
End With

For each c in rng
    If c.IndentLevel = 2 Then
        sum = sum + c
    End If
Next c

答案 1 :(得分:0)

这不需要VBA。真正的问题是不合适的数据格式。更新您的约定,以便将每个缩进级别移动到单独的列。然后,您就可以继续使用简单的Excel公式。