找到空单元格,添加上面的所有单元格,并将总和放在空单元格中

时间:2015-08-04 03:54:35

标签: excel vba excel-vba

我是VBA的新手,我一直致力于一个VBA项目,该项目需要找到空单元格,并将所有单元格添加到该空单元格上方,并将总和放在上面。我尝试找到合适的代码,但没有运气。任何建议将不胜感激。

这是项目中数据的一部分:

jhvkkjhvghvj

谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,你的问题并不清楚。我的代码的逻辑是

  

循环 startRow lastRow 之间的所有行并找到空白单元格(#N / A)。
如果找到,则添加所有值从该单元格上方的单元格并将总数设置为该单元格。
但是每季度添加一次。如果找到连续的单元格,则设置为0.

     

表示:
如果startRow = 1且lastRow = 11,则空白单元格为5,10和11   因此,第5行单元格的总值是加上4个单元格(1 + 2 + 3 + 4)和
  第10行单元格的总值也加上4个单元格(6 + 7 + 8 + 9)。第11行单元格的总值为0.不知道要做的逻辑。

我认为我给出了正确答案。我已经测试了代码。它对我来说非常有用。如果不适合你,请告诉我。代码如下:

Public Sub findTotal()

    Dim startRow, lastRow As Long
    Dim row, innerStart As Long

    With Sheets("Budget")

        'Set start row
        startRow = 1
        innerStart = startRow

        'last row must be last blank row for add all cell above from that
        lastRow = 35

        'Looping all row between startRow and lastRow
        For row = startRow To lastRow Step 1

            'Loop until blank
            If .Range("N" & row).Text = "#N/A" Then

                If row - startRow > 0 And row <> innerStart Then

                    'Set total of above cell to blank cell
                    .Range("N" & row) = WorksheetFunction.Sum(.Range("N" & row - 1, "N" & innerStart))

                    'Set next start row for adding next blank cell
                    innerStart = row + 1

                Else

                    'Set 0 for continuous cells
                    .Range("N" & row) = 0

                    'Here, if you want to set above total, you can use as follow:
                    '.Range("N" & row) = .Range("N" & row - 1)

                End If

            End If

        Next row

    End With

End Sub