【问题标题】:Copying specific data from one sheet to another将特定数据从一张纸复制到另一张纸
【发布时间】:2012-10-17 10:53:46
【问题描述】:

主工作表上的 2 列:

col1      col2
Apple     Fruit
Spinach   Veg
Orange    Fruit
Potatoe   Veg   
Pear      Fruit
Bannana   Fruit
Carrot    Veg
Potataoe  Veg

假设我想将所有Fruit 数据复制到另一张表,并将所有Veg 数据复制到第三张表。有没有办法做到这一点?它需要一个宏还是我可以以某种方式做一个VLOOKUP

我还需要它是动态的,所以如果添加了新行,相应的工作表就会更新。

【问题讨论】:

  • 只需自动过滤 Fruit 的列 - 将过滤后的记录复制到工作表 2,然后重复 Veg
  • 对不起,我希望这是动态的,所以如果添加新行,它将出现在其他工作表上
  • 尝试“录制宏”,打开过滤器,将剩余数据复制到新工作表,停止录制。有了这个代码,你就可以开始了;)
  • 我只是快速输入了这些作为示例

标签: excel pivot-table worksheet-function array-formulas vba


【解决方案1】:

你可以使用这个可怕的怪物公式:

=INDEX($B$2:$B$9, SMALL(IF("veg"=$A$2:$A$9, ROW($A$2:$A$9)-MIN(ROW($A$2:$A$9))+1, ""), ROW(A1)))

使用 Ctrl+Shift+Enter 将其作为数组公式输入。

我在这里找到了公式: http://www.get-digital-help.com/2009/10/25/how-to-return-multiple-values-using-vlookup-in-excel/

这可能不是这个公式的最佳版本或最优雅的版本(这是一个常见的公式任务),但它会完成工作。

【讨论】:

    【解决方案2】:

    我会使用数据透视表(使用 Excel 2007),但您需要在每次修改/扩展源时刷新并密切关注表/数据范围:不要停止添加任何内容:

    【讨论】:

      【解决方案3】:
      • 右键单击您的工作表标签
      • 查看代码
      • 复制粘贴下面的代码

      每当 B 列更改代码时

      1. “水果”的自动筛选列 B,然后将记录复制到工作表 2 列 A:B
      2. “Veg”的自动筛选列 B,然后将记录复制到工作表 2 列 A:B

      代码

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng1 As Range
      Dim ws1 As Worksheet
      Dim ws2 As Worksheet
      Set rng1 = Intersect([B:B], Target)
      If rng1 Is Nothing Then Exit Sub
      Set ws1 = Sheets(2)
      Set ws2 = Sheets(3)
      ws1.[A:B].ClearContents
      ws2.[A:B].ClearContents
      Application.ScreenUpdating = False
      ActiveSheet.AutoFilterMode = False
      With ActiveSheet.Range("A:B")
      .AutoFilter Field:=2, Criteria1:="Fruit"
      .Copy ws1.[a1]
      .AutoFilter Field:=2, Criteria1:="Veg"
      .Copy ws2.[a1]
      End With
      ActiveSheet.AutoFilterMode = False
      Application.ScreenUpdating = True
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        相关资源
        最近更新 更多