【问题标题】:Using Match and Address functions within Macro or VBA在宏或 VBA 中使用匹配和地址函数
【发布时间】:2011-12-06 11:09:24
【问题描述】:

我有两个工作表,我想使用工作表to_approve 中的一个值来查找工作表column A 中的submitted,然后识别单元格引用,以便我可以在相邻的单元格中粘贴一个值 (column B )。

我已经使用以下来识别单元格引用,但我不知道如何在 VBA 代码中使用它。

=ADDRESS(MATCH(To_Approve!D19,Submitted!A:A,0),1,4,1,"submitted")

【问题讨论】:

    标签: excel excel-match vba


    【解决方案1】:

    虽然使用Application.WorksheetFunction.FunctionName ADDRESS 可以在VBA 中使用许多函数,但地址不是其中之一(匹配是)

    但即使它可用,我仍然会使用 Find 方法,如下所示:

    • 让您能够匹配整个或部分字符串,区分大小写与否
    • 如果找到值,则返回要使用的范围对象
    • 轻松处理不匹配
    • 您可以控制要搜索的范围内的点以及搜索开始的位置
    • 可以使用FindNext返回多个匹配项

    类似

    Sub GetCell()
     Dim ws As Worksheet
        Dim rng1 As Range
        Set ws = Sheets("submitted")
        Set rng1 = ws.Columns("A").Find(Sheets("To_Approve").[d19], , xlValues, xlWhole)
        If Not rng1 Is Nothing Then
            MsgBox rng1.Address & " in sheet " & ws.Name
        Else
            MsgBox "not found", vbCritical
        End If
    End Sub
    

    【讨论】:

    • 那太好了,如何使用rng1作为select的基础
    • Application.Goto rng1 代替 MsgBox rng1.Address & " in sheet " & ws.Name。欢呼戴夫
    【解决方案2】:

    此示例应让您了解如何在另一张纸上找到相应的值并将第二个值放置在左侧的列中。使用VBA时,无需选择单元格再粘贴;您可以直接在范围(单元格)对象中输入值。

    Sub TransferValue()
        Dim rngSearch As Range
        Dim rngFind As Range
        Dim dValue As Double
        ' initialization
        Set rngSearch = Worksheets("to_approve").Range("D19")
        dValue = Date
        ' find the match & insert value
        Set rngFind = Worksheets("submitted").Columns(1).Find(What:=rngSearch.Value)
        If Not rngFind Is Nothing Then
            rngFind.Offset(ColumnOffset:=1).Value = dValue
        End If
    End Sub
    

    (注意:dValue 是您要输入的任何值的占位符。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多