2015-08-04 2 views
-2

Я новичок в VBA, и я работал над проектом VBA, которому нужно найти пустую ячейку и добавить все ячейки выше этого пустого ячейку, а также поместить на нее сумму. Я попытался найти правильный код для него, но не повезло. Любые предложения будут высоко оценены.Найти пустую ячейку, добавить все ячейки выше и поместить сумму в пустую ячейку

Вот часть данных в проекте:

jhvkkjhvghvj

Спасибо!

+0

Я не очень ясно говорит об этом _find пустую ячейку и добавить все ячейки выше этой пустой клетки, а также разместить сумму на it_ - добавить все значения из выше пустой ячейки, а также добавить сумму?!? также, ссылаетесь ли вы на ячейки, содержащие «# N/A», как пустые? что относительно верхних пустых ячеек, без значений выше них? –

+0

Да, я имею в виду # N/A как пустую ячейку. Мне нужно найти # N/A/пустую ячейку, затем добавить все значения перед ним (от 27 500 до 10 512.50) и поместить сумму в ячейку # N/A/empty и наоборот – Z9z9z9

ответ

1

Собственно, ваш вопрос непонятен. Логика моего кода

Looping все строки между 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 
+0

Здравствуйте. Я попробовал код. Появилась ошибка Runtime 13. Несоответствие типов. На странице Do While .Range ("N" и row) <> "" часть – Z9z9z9

+0

какая строка дает вам ошибку.? –

+0

На 9-й строке: Do While .Range ("N" и row) <> "" – Z9z9z9