主表上的2列:
col1 col2
Apple Fruit
Spinach Veg
Orange Fruit
Potatoe Veg
Pear Fruit
Bannana Fruit
Carrot Veg
Potataoe Veg
说我想将所有Fruit
数据复制到另一个工作表,将所有Veg
数据复制到第三个工作表。有没有办法做到这一点?它需要一个宏还是我能以某种方式做VLOOKUP
?
此外,我需要将其设置为动态,因此如果添加了新行,则会更新相应的工作表。
答案 0 :(得分:2)
你可以使用这个公式的可怕怪物:
=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/
这可能不是这个公式的最佳版本或最优雅的版本(这是一个常见的公式任务),但它将完成工作。
答案 1 :(得分:2)
我使用数据透视表(使用Excel 2007),但每次修改/扩展源时都需要刷新,并且要关注表/数据范围:不要停止任何添加:
答案 2 :(得分:1)
每当列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