将特定数据从一张纸复制到另一张
母版上的2列:
col1 col2 Apple Fruit Spinach Veg Orange Fruit Potatoe Veg Pear Fruit Bannana Fruit Carrot Veg Potataoe Veg
假设我想将所有Fruit
数据复制到另一张纸上,并将所有Veg
数据复制到第三张纸上。 有没有办法做到这一点? 它需要一个macros,或者我可以以某种方式做一个VLOOKUP
?
此外,我需要这是dynamic的,所以如果添加一个新的行相应的工作表被更新。
你可以用这个可怕的怪物:
=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的formsinput数组公式。
我在这里find了这个公式: http : //www.get-digital-help.com/2009/10/25/how-to-return-multiple-values-using-vlookup-in-excel/
这可能不是这个公式的最好的版本或最优雅的版本(这是一个常见的公式任务),但它会完成工作。
我会使用数据透视表(使用Excel 2007),但每次修改/扩展源时都需要刷新,并留意表/数据范围:不要停止添加任何内容:
- 右键单击您的工作表标签
- 查看代码
- 复制并粘贴在下面的代码
每当列B被更改的代码
- 自动过滤列B为“水果”,然后将logging复制到工作表2列A:B
- AutoFilters列B为“Veg”,然后将logging复制到第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