使用macros或VBA中的匹配和地址function

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

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

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

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

但即使它是可用的,我仍然会使用下面的Find方法

  • 使您能够匹配全部或部分string,区分大小写
  • 如果find该值,则返回一个范围对象
  • 很容易处理一个不匹配
  • 您可以在search范围内控制search开始的位置
  • 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 

这个例子应该让你知道如何在另一张纸上find相应的值,并在左边的列中放置第二个值。 使用VBA时,不需要select单元格然后粘贴; 你可以直接在一个范围(cell)对象中input一个值。

 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是您想要input的任何值的占位符。)