標題:

如何用Excel巨集刪除特定列資料

發問:

 

此文章來自奇摩知識+如有不便請留言告知

請問如何用Excel巨集刪除特定欄位裡,符合某些文字的整列資料第一欄........... 第二欄.............. 第三欄 324.................. AA.................. fgdfg 233.................. BB .................. hkm 234.................. CC.................. trsxa 238.................. BB.................. kuyfj 234..................... 顯示更多 請問如何用Excel巨集刪除特定欄位裡,符合某些文字的整列資料 第一欄........... 第二欄.............. 第三欄 324.................. AA.................. fgdfg 233.................. BB .................. hkm 234.................. CC.................. trsxa 238.................. BB.................. kuyfj 234.................. AA.................. yjctht 455.................. DD.................. tyjfgh 454.................. CC.................. tfjkk 例如我想用巨集,將第二欄符合"AA"&"DD"的資料整列刪除 (欄位應該是英文字,條件也可能不只二個.....) 執行巨集結果如下: 第一欄........... 第二欄.............. 第三欄 233.................. BB .................. hkm 234.................. CC.................. trsxa 238.................. BB.................. kuyfj 454.................. CC.................. tfjkk 更新: 謝謝 TREE 的回答 我有用你的回答試了一下,好像不行耶,可能是我哪裡弄錯了吧..... 而且這個巨集是不是會出現個輸入的視窗,讓我輸入要刪除的文字 因為我每次要刪除的關鍵字都固定那幾個(目前只有三個) 可以直接將要刪除的關鍵字直接寫在巨集內嗎 因為每次系統匯出的資料很多,我想執行巨集後直接排除那幾個關鍵字的整列 謝謝

最佳解答:

你好: 請試試如下: Sub aa() Dim mSht As Worksheet Dim i%, s%, s1%, r% Dim ar() Dim mStr$, mTmp$ Dim mRng As Range Set mSht = Worksheets(1) With mSht i = .[a65536].End(xlUp).Row Do mStr = Application.InputBox(prompt:="請輸入指定字串" & vbCrLf & "空白字串並按確定時代表離開", Type:=2) If mStr <> "" Then ReDim Preserve ar(s) ar(s) = mStr s = s + 1 End If Loop Until mStr = "" For s1 = LBound(ar) To UBound(ar) Do Set mRng = .Columns("b").Find(what:=ar(s1), LookIn:=xlValues) If Not mRng Is Nothing Then r = mRng.Row Rows(r).Delete shift:=xlUp Else Exit Do End If Loop Next End With End Sub 2010-04-16 12:48:36 補充: 你好: 我是將工作表指定為第一工作表 你試著將Set mSht = Worksheets(1) 改為Set mSht=Activesheet看看 另如果你能指定固定的幾個字串 ,請告知其內容。我再試著改其內 容。 2010-04-17 06:02:17 補充: 下列為指定字串刪除列 Sub bb() '請將ar陣列內的字串換成你指定的字串 Dim mSht As Worksheet Dim i%, s%, s1%, r% Dim ar() Dim mStr$, mTmp$ Dim mRng As Range Set mSht = ActiveSheet 2010-04-17 06:02:47 補充: With mSht i = .UsedRange.SpecialCells(xlCellTypeLastCell).Row ar = Array("AA", "BB", "DD") For s1 = 0 To 2 Do Set mRng = .Columns("b").Find(what:=ar(s1), LookIn:=xlValues, Searchorder:=xlByRows, searchdirection:=xlPrevious) 2010-04-17 06:02:56 補充: If Not mRng Is Nothing Then r = mRng.Row Rows(r).Delete shift:=xlUp Else Exit Do End If Loop Next End With End Sub

其他解答:

Sub DeleteRow() Set R1 = Range("B1:B65536") For N = R1.Rows.Count To 1 Step -1 If R1(N) = "AA" Or R1(N) = "DD" Then R1(N).EntireRow.Delete End If Next End SubF893957AEB7D5408
arrow
arrow
    創作者介紹
    創作者 fksnlix 的頭像
    fksnlix

    fksnlix的部落格

    fksnlix 發表在 痞客邦 留言(0) 人氣()