2009-10-26 114 views
1

我试图构建一个Excel宏,它允许我执行以下操作:匹配值并将其复制到一个新的单元格

我有两个Excel工作表。

我想让宏匹配Sheet1中的所有值,col A与Sheet2中的单元格A1。如果匹配,请将Sheet1中的单元格Dx复制到Sheet2中的单元格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 

你有什么建议吗?

回答

2

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

= VLOOKUP(A1,Sheet1!A:D, 4,FALSE)

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

+0

嘿。 VLOOKUP不起作用,因为我需要遍历COL A Sheet 2中的所有单元格以匹配Sheet 1中的单元格A1。 谢谢。 – user196803 2009-10-27 15:09:14

+0

我认为您正在寻找将Sheet2 D1中的公式简单地复制到下面的所有其他单元格中。即将上述完全相同的公式放入D1,D2,D3 .....无限期。这将意味着对于表2中列A中的每一行都有值的行,您还将在列D中具有上面的公式。 – 2009-10-27 17:02:07

+0

实际上,我所做的是使用两个“For” “如果”与相对范围。作为魅力工作。 无论如何。 – user196803 2009-10-28 13:30:52

相关问题