【问题标题】:Excel VBA - If cell begins with "find" then return value of a different cellExcel VBA - 如果单元格以“查找”开头,则返回不同单元格的值
【发布时间】:2015-11-02 11:57:51
【问题描述】:

我有一个包含很多行的电子表格。我想要的是搜索 N 列中的每个单元格。如果单元格以“find”开头(希望它不区分大小写),则返回 A 列(同一行)中的值。例子。如果 N2 以“Find”或“FIND”或“find”(或任何其他变体)开头,则返回 A2。工作表是“主”,我希望它在不同的工作表上运行。我的 Excel 版本是 2013。

【问题讨论】:

  • 您能否编辑您的问题以显示您已经尝试过但不起作用的方法?
  • 使用自动过滤器怎么样?在“Begins with”的列 N 上放置一个文本过滤器,将搜索字符串设置为“find”。然后将结果复制到不同的工作表。

标签: vba excel


【解决方案1】:

这将在任何情况下返回以“find”开头的所有行的 A 列中的值。 编辑:已更新,以便在 Sheet1 的 N 列中查找值并将 A 列的结果粘贴到 Sheet2 的 A 列。

Sub Find()

    Dim rFoundAddress As Range
    Dim sFirstAddress As String
    Dim x As Long

    x = 1
    With ThisWorkbook.Worksheets("Sheet1").Columns(14)
        Set rFoundAddress = .Find("find*", LookIn:=xlValues, LookAt:=xlWhole)
        If Not rFoundAddress Is Nothing Then
            sFirstAddress = rFoundAddress.Address
            Do
                ThisWorkbook.Worksheets("Sheet2").Cells(x, 1) = .Cells(rFoundAddress.Row, 1)
                x = x + 1
                Set rFoundAddress = .FindNext(rFoundAddress)
            Loop While Not rFoundAddress Is Nothing And _
                rFoundAddress.Address <> sFirstAddress
        End If
    End With

End Sub

它会找到与这些匹配的:

  • 找到这个
  • 找到这个
  • 找到这个

但找不到匹配项:

  • 找到这个

【讨论】:

  • 谢谢达伦!正是我想要的!
【解决方案2】:

下面会将 A 中的值打印到即时窗口。

Sub returnA()
    With Sheets("Master")
        For Each cell In .Range("N2:" & .Range("N2").End(xlDown).Address)
            If UCase(Left(cell.Value, 4)) = "FIND" Then
                Debug.Print .Cells(cell.Row, 1).Value
            End If
        Next
    End With
End Sub

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多