需求:
1.根據一定條件進行篩選,把篩選的結果放到新的工作表中
2.根據篩選條件命名工作表
3.刪除空表
4.刪除第六列、第七列都是-99的行
第一次用VBA,現查現用,
Sub 宏1()
' 宏1 宏 0 1
Selection.AutoFilter //開啓篩選
ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=2, Criteria1:="string01" //條件篩選
ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=3, Criteria1:="9010" //條件篩選
ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=4, Criteria1:="0" //條件篩選
Range("A1:N65536").Select //選中一個區域的單元格
Selection.Copy //複製選中區域
Sheets.Add After:=ActiveSheet //在活動工作表(當前工作表)後面新建一個工作表
ActiveSheet.Paste //新建工作表後,活動工作表就換成了新建的工作表,粘貼複製的單元格區域
Rows("1:1").Select //選中第一行
Application.CutCopyMode = False //把複製剪切模式設爲false,
Selection.Delete Shift:=xlUp //刪除選中的第一行
' ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=6, Criteria1:="-99"
' ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=7, Criteria1:="-99"
' ActiveSheet.Range("a1:a" & ActiveSheet.UsedRange.Rows.Count).EntireRow.SpecialCells(xlVisible).Delete
//想做個篩選,然後刪除篩選的結果,但是篩選條件不一定存在,沒成功
Sheets("Sheet1").Select //新建的工作表名稱爲Sheet1
Sheets("Sheet1").Name = "string01-9010-0" //重命名工作表Sheet1
Sheets("test6g20_gun_status").Select //返回最初的工作表,因爲對最初的工作表還有後續操作
ActiveWindow.SmallScroll Down:=-160 //滾動條向上滾動
Selection.AutoFilter
//取消篩選,開啓篩選和取消篩選應該是同一條命令,發一次命令開啓篩選,再發一次命令取消篩選
newHour = Hour(Now()) //新的小時參數爲當前小時
newMinute = Minute(Now()) //新的分鐘參數爲當前分鐘
newSecond = Second(Now()) + 2 //新的秒參數爲當前秒加2
waitTime = TimeSerial(newHour, newMinute, newSecond) //等待的時間長度
Application.Wait waitTime //等待waitTime的時間長度,再進行後續操作,複製粘貼操作需要時間
End Sub
---------------------------------------------------------------------------分割線-------------------------------------------------------------------------------
上次數據要的急,用的笨辦法,半自動半手工處理的,然後發現錯了個參數,改腳本的話費勁,就從頭重寫了一遍腳本,代碼簡潔,效率提高,大神別笑
Sub proc()
'長文件名
//定義三個數組
iI = Array("string01", "string02", "string03", "string04", "string05", "string06")
jI = Array("9010", "9011", "9013", "9014", "9015", "9016", "9018", "9019", "9020", "9024", "9025", "9026", "9027", "9028", "9029")
kI = Array("1", "2")
Selection.AutoFilter //開啓篩選
For Each i In iI //三重循環嵌套,依次篩選
For Each j In jI
For Each k In kI
ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=2, Criteria1:=i //篩選
ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=3, Criteria1:=j //篩選
ActiveSheet.Range("$A$1:$N$65536").AutoFilter Field:=4, Criteria1:=k //篩選
Dim str1 As String
Range("A1:N65536").Select //選中一個區域
Selection.Copy //複製選中區域
Sheets.Add After:=ActiveSheet //在當前工作表後面新建一個工作表
ActiveSheet.Paste //在新建的工作表中粘貼
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond) //等待1s時間
Application.Wait waitTime
Rows("1:1").Select //選中第一行
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp //刪除選中的區域
ActiveSheet.Select
str1 = CStr(i) & CStr(j)
ActiveSheet.Name = str1 & CStr(k) //組合三個參數,作爲當前工作表的名稱
If IsEmpty(ActiveSheet.UsedRange) Then ActiveSheet.Delete //刪除空工作表
Sheets("test6g25_gun_status").Select //返回最初的工作表,進行下一次循環
ActiveWindow.SmallScroll Down:=-160
Selection.AutoFilter
Next
Next
Next
End Sub