作者ptguitar (佩蒂吉他)
看板Office
标题[算表] 多工作表筛选後复制到一个工作表vba
时间Tue Sep 17 15:04:14 2019
软体:excel
版本:2007以上
试写了一个把很多工作表写到一个整理工作表vba
Sub copyto()
Dim mytable As Range, targetrange As Range
For i = 1 To Sheets.Count
If Sheets(i).Name <> "整理" Then Sheets(i).Select
Set targetrange = Worksheets("整理").Range("A" &
Range("A65536").End(xlUp).Row)
Set mytable = Sheets(i).Range("A2:E" & Range("A65536").End(xlUp).Row)
With mytable
.AutoFilter Field:=5, Criteria1:=">=1070801", Operator:=xlAnd,
Criteria2:="<=1080831"
.SpecialCells(xlCellTypeVisible).Copy
targetrange.PasteSpecial xlPasteValues
.AutoFilter
End With
Next i
End Sub
但是执行结果怪怪的
档案如下
http://0rz.tw/D9JsF
不知道我逻辑问题在那边 感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.67.78 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1568703856.A.9EC.html
1F:→ soyoso: 1.因为作用工作表不在"整理",而要取得整理最後一笔有值的 09/17 15:17
2F:→ soyoso: 储存格的话,变数targetrange的range.end.row方面再加上 09/17 15:18
3F:→ soyoso: worksheets(...).range(..).end(..).row 09/17 15:19
4F:→ soyoso: 2.if判断方面如要工作表名称"整理"时,就不再执行下方至 09/17 15:20
5F:→ soyoso: end with的动作的话,a)if sheets.name="整理" then 09/17 15:21
6F:→ soyoso: exit for,b)if sheets.name<>"整理" then ...end if 09/17 15:23
7F:→ soyoso: 来包从sheets.select到end with的动作 09/17 15:23
8F:→ soyoso: 3.取得最後一笔有值的列号需加1,不然再贴上时会覆盖已存 09/17 15:28
9F:→ soyoso: 在的资料 09/17 15:28
10F:→ ptguitar: 果然可以了!感谢S大指点跟教学~ 09/17 16:42