在Macro或VBA中使用匹配和地址功能

时间:2011-12-06 11:09:25

标签: excel excel-vba excel-match vba

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  • 使您能够匹配整个或部分字符串,区分大小写或不区分
  • 返回一个范围对象,以便在找到值时使用
  • 随时处理不匹配
  • 您可以控制搜索范围内的点,以确定搜索的开始位置
  • 可以使用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

答案 1 :(得分:0)

此示例应该让您了解如何在另一个工作表上找到相应的值,并在左侧的列中放置第二个值。使用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是您想要输入的任何值的占位符。)