VBA代碼記錄1

需求:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章