使用VBA从Excel表中查找行

Shy*_*yam 3 excel vba excel-2007 excel-vba

在Excel中,我使用表将动态数据存储在单独的工作表中.输入新数据就像魅力一样,但是,我希望能够从该表中动态检索单行并将其数据存储在变量中.我更喜欢构建一个函数,所以我可以做这样的事情:

findFromCatsByDate(searchterm) 'returns a single row if found with mathing date.
Run Code Online (Sandbox Code Playgroud)

请注意,该表是动态的,而不是固定的范围(因此它会垂直变化).我想重复使用这个函数,稍微修改其他表.我需要一个例子来说明如何在VBA中实现这一点.

谢谢,

chr*_*sen 8

这将返回Key指定表中匹配的行的引用

Function GetRow(TableName As String, ColumnNum As Long, Key As Variant) As Range
    On Error Resume Next
    Set GetRow = Range(TableName) _
        .Rows(WorksheetFunction.Match(Key, Range(TableName).Columns(ColumnNum), 0))
    If Err.Number <> 0 Then
        Err.Clear
        Set GetRow = Nothing
    End If
End Function
Run Code Online (Sandbox Code Playgroud)

使用示例

Sub zx()
    Dim r As Range
    Set r = GetRow("MyTable", 1, 2)
    If Not r Is Nothing Then
        r.Select
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)