【问题标题】:Excel 2010 - Take whole rows from one sheet and display them in the 2nd sheet based on match in 3rd sheetExcel 2010 - 从一张纸中取出整行并根据第三张纸中的匹配将它们显示在第二张纸中
【发布时间】:2015-11-13 00:41:56
【问题描述】:

我会切入正题:

Excel 2010

我有Sheet1 的订单列表。客户名称在F 列中。

Sheet2 包含客户列表,在A 列中仅包含他们的姓名。

我想运行一个宏/vlookup/索引(无论什么都行)来遍历Sheet1 中的数千个订单列表,并将客户名称来自@987654327 的行(整行)复制到Sheet3 @ 火柴。

Sheet1 有 10 列和大约 10000 行。 Sheet2 仅在 A 列中有大约 50 行。

我尝试了几种类型的宏并进行了适当的搜索,但找不到任何可行的方法。我会粘贴我所拥有的,但这只会令人尴尬。

我可能会补充一点,我需要每周运行一次,并且订单列表会发生变化。名单也可以,但频率很低。

你能帮忙吗? :)

编辑:从目前的答案中我可以看出我需要使用 VBA 脚本。我将不胜感激,因为我对这种语言几乎一无所知。我应该能够管理修改脚本以满足我的需要,但我需要一些东西来开始。也许这个伪代码会让你们好人更容易:


从 Sheet2 中的 A1:A50 读取数据

将 F1、Sheet1 与 A1:A50、Sheet2 进行比较

如果不匹配 - 继续 F2

如果匹配 - 将整行复制到 Sheet3 中的 A1

(...)

比较 Fx、Sheet1 与 A1:A50、Sheet2

如果不匹配 - 继续 Fx+1

如果匹配 - 将整行复制到 Sheet3 中的 A(n+1) [n=匹配数]

继续将 Sheet1 中的行与 A1:A50、Sheet2 进行比较并返回 An、Sheet3 中的下一个匹配项


到目前为止,我有类似的东西,但问题是,如果 Sheet2 中的行号与 Sheet1 中的行号匹配,它仅将数据返回给 Sheet3。此外,它会将其返回给 Sheet3,行号与 Sheet1 匹配。所以我最终在 Sheet3 的第 45 行得到一个结果,而不是在第 1-20 行得到大约 20 个结果。

Sub asd()
For Counter = 1 To Sheets(1).UsedRange.Rows.Count
    If Sheets(1).Range("F" & Counter).Value = Sheets(2).Range("A" & Counter).Value Then
      Sheets(3).Range("C" & (Counter)).Value = Sheets(1).Range("A" & Counter).Value
      Sheets(3).Range("D" & (Counter)).Value = Sheets(1).Range("B" & Counter).Value
    End If
Next Counter
End Sub

谢谢你, 帕特

【问题讨论】:

  • 创建 Sheet1 的副本并将其命名为“Orders”。在“订单”表的新列(第 11 列)中,使用匹配公式查看 F 列何时与 sheet2 中的 A 列匹配。然后过滤“订单”表并删除数据中的所有#NA,您就完成了。
  • 感谢 rwilson 的回复。我有一种感觉,它不会像我希望的那样简单,每周重复使用。特别是考虑到我想分享我的同事使用的方法/宏。再次感谢。
  • 我只是为您提供可以在 Excel 中完成该过程的步骤。使用这些步骤、宏记录器和一些工作,您应该能够做到这一点。 SO 上没有人比您更了解您的数据。

标签: excel vba


【解决方案1】:

我相信您需要使用 VBA 脚本来复制整行。

如果您希望使用 vlookup,请确保对表 1 和表 2 中的数据进行排序,但我认为这不会有帮助,因为 vlookup 会在第一次点击时“停止”,这意味着如果您有客户名称约翰在 sheet1 上重复了几次,vlookup 只会选择第一次出现

问候,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2023-02-02
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多