2015-05-26 3 views
2

У меня есть вертикальные данные с промежутками в колонках B: GExcel VBA: Найти пустую ячейку и удалить строку

Я хочу, чтобы мой код делает следующее:

  1. экранов через колонку B
  2. Найти пустую ячейку
  3. Удаляет всю строку пустой ячейки
  4. Повторяйте это до тех пор, пока не будут найдены 10 пустых ячеек (это самое сложное, так как оно не должно удалять эти 10 пустых ячеек) // 10 - это просто произвольный у числа, нет больше данных
  5. Затем перейдите в столбец C повторите полный PROCES и так далее, пока все столбцы не экранированы

У меня есть некоторые базовые знания VBA и это код, который я нашел на до сих пор, однако это путаница в моей голове, как подойти к этому.

Основная проблема, с которой я столкнулся, заключается в том, как код знает, когда прекратить удаление и перейти к следующему столбцу.

Этот код ниже находит следующую пустую ячейку в столбце B и выбирает ее.

Public Sub SelectFirstBlankCell() 
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
Dim currentRowValue As String 

sourceCol = 6 'column F has a value of 6 
rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row 

'for every row, find the first blank cell and select it 
For currentRow = 1 To rowCount 
    currentRowValue = Cells(currentRow, sourceCol).Value 
    If IsEmpty(currentRowValue) Or currentRowValue = "" Then 
     Cells(currentRow, sourceCol).Select 
     Exit For 'This is missing... 
    End If 
Next 
End Sub 

ответ

0
Public Sub SelectFirstBlankCell() 
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
Dim currentRowValue As String 

For i = 0 To Cells(1, Columns.Count).End(xlToLeft).Column 'count and loop cols 

    sourceCol = 1 + i 'increment with i, move 1 to start column 
    rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row 

    For currentRow = rowCount To 1 Step -1 ' this will start at end and work its way up 

     currentRowValue = Cells(currentRow, sourceCol).Value 

     If IsEmpty(currentRowValue) Or currentRowValue = "" Or Trim(currentRowValue) = "" Then 'Trim accounts for " " may not be needed 
      Cells(currentRow, sourceCol).EntireRow.Delete 
     End If 

    Next 
Next 
End Sub 

Попробуйте выше. sourceCol = 1 + i может быть изменен на sourceCol = x + i, где x - ваш начальный столбец

Смежные вопросы