2015-05-26 192 views
2

我有在B列的差距垂直数据:摹Excel的VBA:查找空单元格,并删除该行

我希望我的代码执行以下操作:

  1. 屏幕通过B柱
  2. 查找空单元格
  3. 删除空单元格的整行
  4. 重复此操作,直至找到10个空单元格(这是最棘手的,因为它不应该删除这10个空单元格)// 10只是一个任意的y个,有没有更多的数据
  5. 然后去C列重复充分理线,以此类推,直到所有的列进行筛选

我有一些基本的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 +我可以更改为sourceCol = x + i其中x是您的起始列

相关问题