首页 > 解决方案 > 选择非文本列中的单元格

问题描述

我有一列有 20 行。该列的标题是“MONTH”。在前 10 行中,单元格包含文本“Jan”。在接下来的 10 行中,单元格包含日期“18-12-2019”。我想编写一个宏,它将遍历列,从 A2 开始,并在包含日期的单元格处停止。

我已经编写了以下代码。但它不起作用。Excel 说,“函数未定义。” 请。帮助我为此编写正确的代码。

Sub Find_Date()
    Dim cell As Range
    Dim Rng As Range

    Set Rng = Range(("A2"), Range("A2").End(xlDown))

    For Each cell In Rng
        If IsText(cell) = True Then: cell.Offset(1, 0).Select
    Next
End Sub

标签: excelvba

解决方案


这是另一种更具动态性和流畅性的解决方案...

但是,使用这种方法,您不能跳过单元​​格行。

Sub Find_Date()
Dim row As Integer

For row = 2 To ActiveSheet.Cells(1,1).End(xlDown).Row
    'Use ActiveSheet.Cells(row, 1) to control the current cell (1 = First Column)
    If IsDate(ActiveSheet.Cells(row, 1).Value) = TrueThen
        ' Add Code Here to be executed if there is Date 
    Else
        ' Add Code Here to be executed if there is TEXT
    End If
Next

End Sub

同样,在修改上述代码之前,上面的代码实际上不会做任何事情。

下面是一组代码,它将简单地选择“A”列中所有日期的单元格。

Sub Find_Date()
Dim row As Integer
Dim y() As Variant
Dim z As Integer
z = 1

For row = 2 To ActiveSheet.Cells(1, 1).End(xlDown).row
    If IsDate(ActiveSheet.Cells(row, 1).Value) = True Then
        ReDim Preserve y(1 To z) As Variant
        y(z) = ActiveSheet.Cells(row, 1).Address
        z = z + 1
    End If
Next
For Each x In y
    ranges = ranges + x + ", "
Next x

Range(Left(ranges, Len(ranges) - 2)).Select

End Sub

推荐阅读