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

2010-04-16 4:44 am
請問如何用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
更新1:

謝謝 TREE 的回答 我有用你的回答試了一下,好像不行耶,可能是我哪裡弄錯了吧..... 而且這個巨集是不是會出現個輸入的視窗,讓我輸入要刪除的文字 因為我每次要刪除的關鍵字都固定那幾個(目前只有三個) 可以直接將要刪除的關鍵字直接寫在巨集內嗎 因為每次系統匯出的資料很多,我想執行巨集後直接排除那幾個關鍵字的整列 謝謝

回答 (2)

2010-04-16 6:58 am
✔ 最佳答案
你好:

請試試如下:
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
2010-04-16 3:25 pm
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 Sub


收錄日期: 2021-04-27 16:25:54
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20100415000015KK07342

檢視 Wayback Machine 備份