A. VBA筛选数据后复制到另一张表
可以在收货管理表打开时就更新数据,无须增加控件。
代码清单:
Private Sub Worksheet_Activate()
Rows.ClearContents
Dim r, c, s As Integer
s = 0
For c = 1 To 8
Sheets("收货管理表").Cells(1, c).Value = Sheets("订单表").Cells(1, c).Value '插入表头
Next c
For r = 2 To 9
If Sheets("订单表").Cells(r, 8) = "是" Then
s = s + 1
Sheets("收货管理表").Cells(s + 1, 1).Value = s '自动顺序编号
For c = 2 To 8
Sheets("收货管理表").Cells(s + 1, c).Value = Sheets("订单表").Cells(r, c).Value '插入产品其他信息
Next c
End If
Next r
End Sub
该程序已通过测试。
B. 如何能过VBA将筛选后的内容复制到另一张表的指定位置
If Target.Column = 16 Then
Range("q2:x50").ClearContents
Sheets("2").Range("A1:AE42").AutoFilter Field:=5, Criteria1:=Range("p1")
Sheets("2").cells.SpecialCells(xlCellTypeVisible).Copy Range("A1")
这么多 应该就可以了
C. EXCEL的VBA实现将筛选后的记录复制到新文件中
通常情况下,用VBA就不会用筛选来做了。
建议:第一步:将原始数据读取后存入一个数组;
第二步:对数组逐条访问,根据筛选设定的条件,如果满足条件则将这条记录的内容写入目标位置
第三步:也就是循环第二步,一直到结束就完成了。
D. VBA 按条件筛选数据库记录导出Excel(如何加快写入速度)
你这样循环查询是不科学了,上万记录会慢死,应该一次性读出所有数据,然后去填写:
'建立已经字典,把数据库内容存入字典
setdaList=CreateObject("Scripting.Dictionary")
rs.Open"selectDA,B1,S1,M1,St1,R1from`A`",conn
DoWhileNotrs.EOF()
daList.Addrs(1),Array(rs(2),rs(3),rs(4),rs(5),rs(6))
rs.MoveNext
Loop
'填写EXCEL表
fori=2toCells(rows.count,"D").End(xlUp).Row
da=Cells(i,"D")
ifdaList.Exists(da)then
Cells(i,"E").resize(5,1)=daList(da)
else
Cells(i,"E").resize(5,1)=Empty
endif
nexti