如何利用excel vba提取指定条件的数据

我现在有几十年的数据(存储格式见图片),请问我如何利用vba将指定年份的数据全部提取出来呢?

第1个回答  推荐于2016-02-11
Sub Macro1()
dim years as string
years ="2000"
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.cells.AutoFilter Field:=4, Criteria1:=years 
End Sub

以上代码定于years 变量,可根据设置年份

然后选择第一行,生成高级筛选,筛选条件是第四列,筛选内容是变量years

追问

很感谢,但您的这个代码有问题,运行之后就只有表头还在了(见图)。因为表格很多,但都是按照同一个格式存储的。我想要的效果是通过vba来将指定年份(一年或者多年,比如2001-2005年)的数据另存到另外一个excel中。请大神帮忙解决一下,谢谢!!!

追答

没有内容证明AutoFilter Field:=4, Criteria1:=years 这些条件不存在这个表格里面呀啊,,,你要确定你筛选哪些列,哪些内容,还不行的话,你上存文件吧

本回答被提问者采纳
第2个回答  2019-02-21
可以的,vba和透视表都可以。
第3个回答  2015-11-17
代码如下:
请保存成名为BOOK的97-2003格式文件
并把所有的数据文件,放到与这个文件同一个文件夹中,再执行程序
Sub main()
f = Dir(ThisWorkbook.Path & "\" & "*.xls*")
Do While f <> ""
If f = "BOOK.xls" Then GoTo eee
Workbooks.Open ThisWorkbook.Path & "\" & f
arr = ActiveWorkbook.Sheets(1).Range("A1").CurrentRegion
For i = 2 To UBound(arr)
If ActiveWorkbook.Sheets(1).Cells(i, "D") = "2000" Then '这里是提取2000年数据,如果是其他年份,将2000更改
k = ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Row + 1
ActiveWorkbook.Sheets(1).Rows(i).Copy ThisWorkbook.Sheets(1).Rows(k)
End If
Next i
Workbooks(f).Close
eee:
f = Dir
Loop
End Sub
第4个回答  2015-11-17
透视表也可以。
相似回答