EXCEL 中从一个子表中提取某类特定数据至另一个子表,可以这样:
【1】用函数或VBA。
如果用函数的话最好将部门那列(C列)移动到最左列,使其变成A列,然后用INDEX+SMALL+IF组成的数组函数,附件中的表格是写好公式的。
【2】这个在不使用VBA公式的情况下实现起来似乎有点难度,,就算公式实现了,每次也是需要打开这个表2来更新一下数据,表1的数据才是想要,如果不需要后续更新数据,直接给表2做个筛选,直接就可以看到指定类型的数据了,复制到其它表格也可以。
【3】如果从A列开始提,把D:D改成A:A就行,在A6输入公式如下,横拉,下拉=INDEX('财务管理-线上商城应付款'!A:A,SMALL(IF('财务管理-线上商城应付款'!$D$6:$D$1000="VIP换购",ROW($6:$1000),10^3),ROW(D1)))
【4】比如在分表中已经有A列的内容,想提取总表中D列的内容,那么在分表的D1输入公式=VLOOKUP(A1,总表名称!A:I,4,0),然后向下填充D列。如果想提取其他列的内容,只要把上面公式中的4,改为总表从左边数的第几列。
假设表1的姓名在A1,分数在B1; 表2的姓名在A1,分数在B1
vba鼠标放在表标签点击右键,查看代码,复制进去,按F5执行
sub t()
n=2
for i=2 to 101 '假设有100个姓名,从第二行开始
if sheets(1).cells(i,2)>70 then
sheets(2).cells(n,1)=sheets(1).cells(i,1)
sheets(2).cells(n,2)=sheets(1).cells(i,2)
n=n+1
end if
next
end sub
做个透视表就可以了...
可以用VBA实现
Sub 宏1()
j = 1
For i = 1 To 1000
If [a1].Offset(i, 0) = "" Then GoTo end1
If [b1].Offset(i, 0) > 70 Then
Sheets(2).[a1].Offset(j, 0) = [a1].Offset(i, 0)
Sheets(2).[b1].Offset(j, 0) = [b1].Offset(i, 0)
j = j + 1
End If
Next i
end1:
End Sub