【问题标题】:Use V-Lookup to the cell number使用 V-Lookup 查找单元格编号
【发布时间】:2016-01-06 09:54:06
【问题描述】:

所以我被赋予了与 excel 中的工作表进行比较的任务,如果有一个匹配项将一个单元格中的数据替换为另一个单元格,例如,我在 2 个 excel 工作表中有 2 列,ID 和名称,我想将表 1 中的 ID 与表 2 中的 ID 进行比较,如果找到匹配项,则更新与该 ID 关联的名称。

表 1

ID     Name
1      Thomas
2      Jerry

表 2

ID    Name
3     Spike
1     Tom

所以在上面的示例中,我需要代码来查看 ID 1 在两个工作表中,并更改工作表 1 中的名称以匹配工作表 2,使其看起来像这样:

ID    Name
1     Tom
2     Jerry

我正在尝试使用 Vlookup,它允许我找出它是否存在,但是我不知道如何更改单元格以匹配现有单元格,这是我的代码到目前为止:

Range("C2").Select
ActiveCell.Formula = _
    "=IF(ISNA(VLOOKUP([@[ID]], 'Sheet2'!A:B,1,FALSE)), ""New"", ""Existing"")"

Do While Len(Range("A" & r).Formula) > 0

If (Range("C" & r).Value = "Existing") Then
   Sheets("Sheet2").Range("A" & r & ":B" & r).Copy _
   Destination:=Sheets("sheet1").Range("A" & r & ":B" & r)
Else
End If

我需要能够从 Vlookup 中获取单元格编号,以便我可以在 if 语句中使用它来提取正确的数据。可能有更简单的方法可以做到这一点,如果是这样,我愿意改变一切。

任何帮助将不胜感激。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我认为这个任务不需要 VBA。由于必须通过查看“Sheet2”中的数据来更新“Sheet1”中的名称。以下公式可用于查找更新后的名称(通过查看“Sheet2”中的数据)。

    =IFERROR(VLOOKUP(A2,Sheet2!A2:B3,2,FALSE),B2)
    

    IFERROR 用于保留在“Sheet2”数据中未找到的名称。请看下面的示例截图。

    【讨论】:

      【解决方案2】:

      最简单的方法是在第三张纸上在 A 行中创建 3 个标题:ID、名称和来源。将表 1 中的数据复制到前两列,并用文本表 1 填充第三列。对表 2 执行相同操作,但将其粘贴到表 1 数据下方。你应该得到这样的结果:

      ID  Name   Source
      1   Thomas Sheet 1
      2   Jerry  Sheet 1
      3   Spike  Sheet 2
      1   Tom    Sheet 2
      

      然后,只需从该数据创建一个数据透视表,其中源为列,名称为行,数据的名称计数。它应该看起来像这样:

      Name    Sheet 1  Sheet 2  Total
      Thomas  1        0        1
      Jerry   1        0        1
      Spike   0        1        1
      Tom     0        1        1 
      

      然后,您可以在“总计”列上进行排序以查找总共有两个的重复项。

      使用此方法的另一个优点是很容易扩展它以比较三个或更多列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 2015-02-15
        • 1970-01-01
        • 2014-12-01
        相关资源
        最近更新 更多