如何在空白和填充的单元格之间移动

时间:2019-06-13 09:01:17

标签: excel vba

我正在尝试编写一个vba以隔离一行中的特定单元格。到目前为止,我的代码使我进入了活跃的单元,从这里开始,我被困住了。 我需要的单元格将始终是该行中的第三个非空白/空单元格。在活动单元格和所需单元格之间是空白单元格,以及两个不相关的非空白/空单元格。 它们之间的间距不是固定的,因此我无法抵消一定数量的单元格。 我已经获得了一定程度的帮助,但是现在我陷于困境,任何帮助将不胜感激!

i = 1
    For Each cell In ws.Rows(ActiveCell.Row).Cells

    If Not IsEmpty(cell) = True Then i = i + 1
    If i = 4 Then cell.Select: Exit For

    Next cell

1 个答案:

答案 0 :(得分:0)

您不应该使用ActiveCell和。看看是否有帮助:

Sub thirdNonBlank()

Dim ws As Worksheet: Set ws = ActiveWorkbook.Sheets("sheet name")
Dim lRow As Long: lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

Dim C As Long, cnt As Long
Dim rngCellFind As Range

With ws.Range("A1:A" & lRow)
    Set rngCellFind = .Find( _
                        What:="Hello", _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext _
                        ).Offset(1, 0)
End With

For C = 1 To ws.Cells(rngCellFind.Row, Columns.Count).End(xlToLeft).Column
    If Not IsEmpty(ws.Cells(rngCellFind.Row, C)) Then cnt = cnt + 1
    If cnt = 3 Then
        ws.Cells(rngCellFind.Row, C).Select 'I'd advise against using .Select
        Exit For
    End If
Next C
End Sub

编辑:根据OP新输入进行了更改。