如何使用VBA循环数据空行?

时间:2017-04-09 14:47:58

标签: excel vba excel-vba

我试图循环遍历非连续数据 - 基本上遍历所有Range("H4")中具有值的单元格,考虑到数据之间可能存在一些空行,我需要跳过并移动在<{1}}中将 3 单元格合并到 1 中。

尝试了不同的方法,但每次击中空行时都会停止。下面将更像是一个无限循环,它可以满足我的需求,但是当没有更多数据时,无法在某些时候突破。

Sub GenerateStyleFabricColourV2()
        Dim srcData As Range
        Dim RowNum As Long
        RowNum = 4
        Set srcData = Range("K:M")
        If Not IsEmpty(srcData.Value) Then
          Do While IsEmpty(RowNum) = False
            Cells(RowNum, 8).Value = Cells(RowNum, 11).Value & Cells(RowNum, 12).Value &  Cells(RowNum, 13).Value
            RowNum = RowNum + 1
          Loop
        End If
        Range("H4").Select
        Range(Selection, Selection.End(xlDown)).Select
     End Sub

3 个答案:

答案 0 :(得分:6)

IsEmpty指的是可能有或没有值的单元格(即空白或非空白)。它不打算用整数做任何事情。

Sub GenerateStyleFabricColourV2()
    Dim srcData As Range
    Dim rowNum As Long, lastRow As Long

    With Worksheets("sheet2")
        lastRow = Application.Max(4, _
                    .Cells(.Rows.Count, "K").End(xlUp).Row, _
                    .Cells(.Rows.Count, "L").End(xlUp).Row, _
                    .Cells(.Rows.Count, "M").End(xlUp).Row)
        With .Cells(4, "H").Resize(lastRow - 4 + 1, 1)
            .FormulaR1C1 = "=rc[3]&rc[4]&rc[5]"
            .Value = .Value2
        End With
    End With
End Sub

答案 1 :(得分:1)

Sub GenerateStyleFabricColourV2()
    Dim srcData As Range, rcell As Range

    Set srcData = ThisWorkbook.Sheets("Sheet1").Range("K4:K" & ThisWorkbook.Sheets("Sheet1").Cells(Sheet1.Rows.Count, "K").End(xlUp).Row)
    For Each rcell In srcData.Cells
        rcell.Offset(0, -3).Value = rcell.Value & rcell.Offset(0, 1).Value & rcell.Offset(0, 2).Value
    Next rcell

 End Sub

这很简单。我喜欢循环遍历一列并使用偏移量。我可能会过度简化它。

答案 2 :(得分:-1)

这个简单的代码非常简单&amp;也有效,

对于a = 1到lastrow

如果单元格(a,1)=“”那么

转到最后一行

您可以在这里输入代码

lastline:

接下来