循环直到具有内容的下一个单元

时间:2014-05-17 23:56:08

标签: excel vba loops is-empty

我是论坛的新手。我最近才开始使用VBA。但是,我已经遇到了问题。

想象一下下表

 x       y           z               j

 a   b   a   b   c   a   b   c   d   a   b   c

25  22  20  26  25  24  18  28  27  24  18  30

我从x开始,我想使用x和y之间的单元格数作为处理第3行中数字的规则。

在x和y的情况下。达到y需要两个步骤。所以我用25和22工作。循环用y重新启动,它需要3步才能达到z,所以我使用20和25循环重启z ... 4步,所以24和24,用j重启。

我特别在努力确定步骤数并使用下一步操作的步骤数。

2 个答案:

答案 0 :(得分:0)

不完全确定你打算做什么,以及"回答"这取决于你需要做什么,但你可以用几个语句迭代这个表:

以下是使用For Each .. Next的示例实现:

Sub Test()
Dim rng As Range
Dim firstCl As Range
Dim c As Integer     'Counts the columns
Dim i As Integer     'counts the intervals
Dim cl As Range

Set rng = Range("A1:L3") 'modify as needed
c = 1
For Each cl In rng.Rows(1).Cells '## Iterate each cell in first row
    If rng(1, c).Value <> "" Then
        MsgBox i & " cells since the last non-empty cell", vbInformation
        i = 0
    End If
    i = i + 1
    c = c + 1
Next

End Sub

答案 1 :(得分:0)

尝试使用第二行中的标记“a”检测间隔的最后一项和第一项:标记为“a”的项目是当前间隔的第一项。上一个间隔的最后一项是当前间隔的第一项之前的一项。最后一个间隔的最后一项是整行的最后一项。

Option Explicit
Sub DetectFirsAndLast()
    Dim rng As Range
    Dim cell As Range
    Dim formula As String
    Set rng = Range("A1:L3")
    'Identify first and last item of interval in row 2
    For Each cell In rng.Rows(2).Cells
        'Apply formula to first item
        formula = "=1+2"
        If cell.Value = "a" Then
            rng.Cells(3, cell.Column).formula = formula
        End If
        'Apply formula to last item
        formula = "=2+3"
        If cell.Column <> 1 And cell.Value = "a" Then
            rng.Cells(3, cell.Column - 1).formula = formula
        End If
        If cell.Column = rng.Columns.Count Then
            rng.Cells(3, cell.Column).formula = formula
        End If
    Next
End Sub