close
標題:

EXCEL Vba 刪除雜散值

發問:

大大:請幫幫忙~~ 1.我想將(匯入表單)A欄內CODE值為(-1、1、3、10000、10001)整列刪除 2.在匯入表單內計A欄(每一種狀態碼CODE值)統計共發生幾次,並將統結果及資料,寫入故障總類表單內。 說明範例如下: http://www.funp.net/169037 更新: 首先,謝謝2位大大的精湛的解答~~ 但因(准提部林老師)大大的解說,非常完整.所以請(准提部林老師)將程式移至回答區讓大家參考~~ 再次感恩2位大大不吝賜教~~謝謝!! 更新 2: 謝謝老師大大: 可否請冰大~~請您將程式移至回答區,並幫我們解說一下好嗎~~ 感恩~~

最佳解答:

aa.jpg

 

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

參考檔案下載點 http://www.FunP.Net/402039 2013-01-14 23:31:26 補充: 謝謝 版主 ~ Sub T_20130112() Dim i% Dim xR As Range i = Sheets("匯入").[A65536].End(xlUp).Row Sheets("故障總類").Select [A2:C100].Delete xlUp ' 準備工作結束 ' 將資料庫第一列作進階篩選不重複取出所有"狀態碼" Sheets("匯入").Range("A1:A" & i).AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Range("A1"), Unique:=True ' 設定xR範圍為所篩選出之所有"狀況碼" Set xR = Range("A2:A" & [A65536].End(xlUp).Row) ' 在"狀態碼"右1欄,使用vlookup函數取出所有"狀態碼"之說明,並轉函數為值 With xR.Offset(0, 1) .Formula = "=vlookup(A2,匯入!A:B,2,)" .Value = .Value End With ' 在"狀態碼"右2欄,使用countif函數取出所有"狀態碼"之計次,並轉函數為值 With xR.Offset(0, 2) .Formula = "=countif(匯入!A:A,A2)" .Value = .Value End With ' 利用迴圈,刪除"狀況碼"為(-1、1、3、10000、10001)各列 For i = [A65536].End(xlUp).Row To 2 Step -1 With Cells(i, 1) If .Value = 10001 Or .Value = 10000 Or .Value = 1 Or .Value = -1 Or .Value = 3 Then Rows(i).Delete End With Next End Sub ~ 本題因某些篩選出資料超出承載,無法直接刪除 若仍欲將其刪除可考慮將保存之"狀態碼"為篩選對象複製至新增工作頁 見Sub 篩選() (因內定函數之執行速度較程式為快故優先考慮內定函數的使用) ~ 更新檔案下載點 http://www.FunP.Net/53589 ~ 新增之Sub 篩選()不知對後續發問是否有幫助

其他解答:

准提部林老師大大也感謝您~~|||||<參考檔>檔案太大,刪些資料: http://www.funp.net/314118 1.刪除及統計 2.只有統計 2013-01-14 15:21:35 補充: 冰大的方法簡單易懂,值得貼到回答區留供參考, 進階篩選加上簡單的公式,即可達到目的,最佳選擇, 使用dic及陣列稍為複雜,除非必要,不一定要用。 冰大請上答! 2013-01-14 15:26:21 補充: 002的方法已在很多題中回答應用過,再答就泛濫, 之前PP大的題中也有用,可能太難所以還不會應用吧! 冰大不要客氣,好的程式碼應到台面才是。|||||With respect to how do you intend to do, it belongs to professional skill. Such being the cause, I would rather hardly suggest you to request the relative professional store paticularly you bougt it for appropriate suggestion. I am confident that it is just a best way you can try.550A190B5FC08948
arrow
arrow

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