【问题标题】:Copy rows from one sheet into another depending on value in cell根据单元格中的值将行从一张表复制到另一张表中
【发布时间】:2026-02-05 19:15:02
【问题描述】:

我的电子表格中有两张表格,我正在寻找一些 VBA 代码(或简单公式)来将值从一张表格批量复制到另一张表格中。

Sheet1,在三列 (A-C) 中列出了城市、市场和产品。总共接近 19,000 行。

Sheet2,包含产品列表、产品子类别和产品来源(A-C 列),总共接近 300 行。

我想将产品子类别和产品来源(即 Sheet2 中的 B 列和 C 列)复制到 Sheet1 中,其中 Sheet1 的 C 列中的产品 = Sheet2 的 A 列中的产品。请注意,在复制到 Sheet1 时,我希望保持 Sheet2 中行的顺序。

我尝试了以下 INDEX/MATCH 方法,但它在第 18 行之后停止工作(我在 Sheet1 中有接近 19,000 行),并且一次只适用于一列。

=IFERROR(INDEX('Sheet2'!$B$2:$B$284, SMALL(IF($D2='Sheet2'!$B$2:$B$284, ROW('Sheet2'!$B$2:$ B$284)-1,""), ROW()-1)),"")

使用示例数据的示例输出:

【问题讨论】:

  • 您能否提供所需输出的示例?我不清楚Sheet1Sheet2 中产品的多次出现应该如何匹配。 Sheet1 中的模式是否与您向我们展示的不同?如果是重复模式,您可以简单地手动复制Sheet2 中的数据,这将是最快的方法。
  • 您好,感谢您的快速回复。我在上面的编辑中添加了一个示例输出。我试图避免手动复制,因为 Sheet1 中的数据有 19,000 行长。如果有帮助,总共有 11 种产品,它们在 Sheet1 中的多行中重复出现,但与 Sheet2 中的顺序不同。但是,当从 Sheet2 复制到 Sheet1 时,我想保留 Sheet2 中的 Product - Product sub-category - Product origin 的相同顺序。我希望这会有所帮助。

标签: excel vba


【解决方案1】:

如果它只是重​​复复制静态数据,那么可能是这样的。如果不是,那么我误解了你的问题。 这是单元格 B2 中的公式:

=INDEX(Copy.Table,IF(MOD(ROW()-ROW($B$1),Table.Count)=0,$E$2,MOD(ROW()-ROW($B$1),Table.Count)))

【讨论】:

  • 显然在您的解决方案中,您需要两个“Copy.Table”(即黄色表格),一个用于产品子类别,一个用于产品来源
  • 您好,谢谢您,恐怕我对如何使用您的公式有点不清楚。它如何与 11 种不同的产品一起工作,每种产品在 Sheet1 和 Sheet2 中重复出现不同的次数?例如。 'Cheese' 重复 5 次(即 Product-Product 子类别-Product origin 的五种不同组合),但 'Nuts' 重复 37 次?
  • 我不知道您的数据是如何构成的。如果所有城市和所有市场都有相同的产品,那么您可以调整我的公式。如果不是这种情况,那么您将无法使用它。
最近更新 更多