匹配值并将其复制到新单元格

时间:2009-10-26 18:01:59

标签: excel vba excel-vba

我正在尝试构建一个允许我执行以下操作的Excel宏:

我有两张Excel表格。

我希望宏匹配Sheet1中的所有值,col A与Sheet2中的单元格A1匹配。如果匹配,则将Sheet1中的单元格Dx从Sheet1复制到单元格D1。如果没有,只需转到Sheet2中的单元格A2并执行相同操作,但将单元格Dx从Sheet1复制到单元格D2。

我尝试了vlookup方法而且失败了。

=vlookup($A1,CELLREF-SHEET1,column(),false)

我也在尝试实现我为另一个项目编写的方法:

Dim cel As Range, celFound As Range, rg As Range, rgLookHere As Range
Dim i As Long
Dim v As Variant
Set rg = Range("A1") 'First cell to check
Set rgLookHere = rg.Offset(0, 1).EntireColumn 'Check for matches in this column
Set rg = Range(rg, Cells(Rows.Count, rg.Column).End(xlUp))

On Error Resume Next
ReDim v(1 To rg.Cells.Count, 1 To 1)
For Each cel In rg.Cells
i = i + 1
If cel <> "" Then
Set celFound = Nothing
Set celFound = rgLookHere.Find(cel.Value, LookIn:=xlValues, LookAt:=xlWhole)
v(i, 1) = IIf(celFound Is Nothing, "Null", "yes")
End If
Next
rg.Offset(0, 2).Value = v
On Error GoTo 0

你有什么建议吗?

1 个答案:

答案 0 :(得分:2)

VLookup似乎是要走的路。如果我在Sheet1上的列A和D中有数据,并且在Sheet2中的列A中匹配数据,那么我将以下VLookup放在Sheet2列D中:

= VLOOKUP(A1,Sheet 1中!A:d,4,FALSE)

您将在没有匹配的单元格中看到N / A.您总是可以使用ISNA()来识别这些,并根据IF()输出实际匹配或不输出任何内容。