【问题标题】:Copy entire row from a sheet if value found in another sheet to third sheet如果在另一张表中找到值,则将整行从一张表复制到第三张表
【发布时间】:2015-05-07 05:18:20
【问题描述】:

尝试使用 VBA/宏或 Excel 函数解决问题,但没有任何运气。

我有 3 张纸:

Source
Detail Listing
Final

在我的 Source 工作表中,我有一个唯一编号列表

A
-------
111
222
333
444

在我的 Detail Listing 我有这样的数据:

A      B       C        D 
-----------------------------
333    dog     fly      9
777    cat     wasp     2
111    bird    ladybug  8

Final 表上,我希望详细信息列表表中的所有行都与源表中的值匹配,如下所示:

 A      B       C        D 
---------------------------------
 333    dog     fly      9 
 111    bird    ladybug  8

我在工作表中尝试了Vlookup,但这只给了我一次单元格结果。如果找到匹配项,我需要整行。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我建议不要尝试在详细列表中查找源中的值,而是尝试反向操作,在 detail_listing 上运行 for 循环,并且对于范围 A:A 中的每个值,在您的源,如果匹配,则复制 for 循环中的当前行,否则继续下一个单元格。

    【讨论】:

    • 感谢您提出解决此问题的新方法。这就是我想出解决方案的原因。
    【解决方案2】:

    为了解决我的问题,我采用了 Avishay Cohen 建议的另一种方法。我在我的 详细列表 工作表中添加了一个附加列,其中包含以下单元格公式:

    =IF(ISNUMBER(MATCH(A2,Source!A:A,0)),"MATCH", "NOT FOUND")
    

    如果我的详细列表工作表的 A 列与我的 来源 工作表之间存在匹配,这将列出“匹配”。然后我只是过滤掉了“未找到”并将我的可见单元格复制到另一个工作表。

    ISNUMBER:检查值是否为数字 - 返回 TRUE 或 FALSE
    MATCH:返回数组中与指定值匹配的项的相对位置。

    我确信有很多方法可以解决这个问题,但这个方法适用于我的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 2015-02-09
      • 2012-12-31
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      相关资源
      最近更新 更多