找到连续文本后的第一个空单元格

时间:2018-05-07 18:58:26

标签: excel vba excel-vba

我正在研究一个项目,目前需要在Excel中连续查找文本单元格之后的第一个空单元格。为了澄清,让我用这个截图向你解释我在寻找什么

enter image description here

我想写一个代码为我返回,例如在第20行的情况下,单元格E20的列数,即使第一个空单元格是A20,但就像我说的那样,我希望第一个空在最后一个“非空”之后的单元格juste。 对于第21行,结果将是C21,第22行将是F22,然后你去

这是我写的代码,但由于某种原因它不起作用,请帮忙。

Function emptyCell(ws As Worksheet, ligne As Integer)
    Dim m, p, n As Integer
    Dim suite(700) As Integer

    For k = 0 To 700
        suite(k) = 0
    Next
    emptyCell = 0
    i = 1
    Do Until suite(i) = 0 And suite(i - 1) = 1
        If ws.Cells(ligne, i) <> "" Then
            suite(i) = 1
        End If
        i = i + 1
        emptyCell = emptyCell + 1
    Loop
    End Function

    Sub test()
    Dim d As Integer
    empty_cell = emptyCell(Sheets("tmp"), 2)
    MsgBox (empty_cell)

    End Sub

我的代码的逻辑是为空单元格分配0而在另一个caase中分配1,运行测试以找到将出现在我的数组中的第一个1-0并从此“1”的顺序获取列顺序“

我知道我不是那么清楚,因为我不想让它成为一个长篇大论,英语不是我的第一语言。

提前致谢

1 个答案:

答案 0 :(得分:1)

如果你想在最后一个非空单元格之后得到第一个空单元格,那么为什么不试试这样呢?

Function emptyCell(ws As Worksheet, Row As Long) As Range
    Set emptyCell = ws.Cells(Row, ws.Columns.Count).End(xlToLeft).Offset(, 1)
End Function

Sub Test()
Dim empty_cell As Range
Set empty_cell = emptyCell(Sheets("tmp"), 20)
MsgBox empty_cell.Address
End Sub