kyh 發問時間: 電腦與網際網路軟體 · 7 年前

寫excel程式可刪除不要的資料

有3欄A,B,C,有無數列,只要儲存格內,不是數字(其中儲存格有可能為文字及空格),就刪除整列,只保留三欄內都要有數字的列。

已更新項目:

請問高手,是否可以寫巨集。

原本是想在D1儲存格寫一個判斷式,複製後將判斷A.B.C欄若全部不是數字出現FALSE,若是全部都是數字才出現TRUE,然後再去刪FALSE,總覺得太麻煩,所以想說不知是否有達人能幫忙寫巨集,直接就刪除留下需要的數值。

謝謝

2 個已更新項目:

請問JOHN 為什麼套用後不能用呢

我對作業程序不太懂

可否幫忙修改檔案讓檔案可運作

檔案位置

http://www.FunP.Net/857788

工作表1是原來的資料

欲使用巨集後變成工作表2的資料

也謝謝EXCEL迷的協助

3 個已更新項目:

JOHN前輩所用的程式,我有下載測試過,並非我所想要完成的資料。

准大師所提意見內容的程式是我所需求的,且有試過,完成後工作表1原來的資料

使用准大師的巨集後變成工作表2的資料,完全符合。

這個問題要感謝准大、JOHN及EXCEL迷,最後請准大提出正式回答。

謝謝各位

4 個解答

評分
  • 7 年前
    最佳解答

    Sub 刪除空格及非數字列()

    On Error Resume Next

    For i = 1 To 3

    Columns(i).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

    Columns(i).SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete

    Next i

    On Error GoTo 0

    End Sub

    2013-04-15 16:14:13 補充:

    EXCEL VBA.檢測ABC欄,若為〔空格.非數字〕則刪除整列

                             <.准提部林.>

    ---------------------------------

    ■方法1:使用〔編輯.到〕功能

     Sub 刪除空格及非數字列1()

     On Error Resume Next

     Application.ScreenUpdating = False

     For i = 1 To 3

       Columns(i).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

       Columns(i).SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete

     Next i

     On Error GoTo 0

     End Sub

     

     --手動方法--

     1.選取〔A:C〕欄,功能表>編輯>到>特殊>空格>確定,

       將抓到的儲存格〔刪除.整列〕。

     2.編輯>到>特殊>常數>除〔數字〕外,勾選其它項目>確定,

       將抓到的儲存格〔刪除.整列〕。

     

    ■方法2:使用〔輔助欄.公式〕

     Sub 刪除空格及非數字列2()

     Application.ScreenUpdating = False

     With Range("D1:D" & ActiveSheet.UsedRange.Rows.Count)

       .Formula = "=IF(COUNT(A1:C1)=3,1,""V"")"

       On Error Resume Next

       .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete

       On Error GoTo 0

       .Clear

     End With

     End Sub

     

     --手動方法--

     1.D1公式:=IF(COUNT(A1:C1)=3,1,"V"),下刷至資料底列。

     2.編輯>到>特殊>公式>只勾選〔文字〕,其它項目取消>確定,

       將抓到的儲存格〔刪除.整列〕。

    ---------------------------------

    <範例檔>下載:

    檔案名稱:20130414a01(刪除三欄非數字列).rar

    下載連結:http://www.funp.net/239228

    ---------------------------------

    2013-04-15 16:18:45 補充:

    感謝版大再度盛情來信邀答!

    請等最後時刻再結案,

    也許JOHN大大可能想刪答,以免影響其採用率!

  • 7 年前

    sorry JOHN大大,個人未能注意到,准大的意見,可能想刪答這個問題,而結案在此抱歉,其實因個人對excel不熟悉,或許您所寫的是小地方更改後就可以用,只不過我個人不會改,所以就無法應用,也再次感謝JOHN大大,希望日後有機會再向您請教。

  • 7 年前

    F3:H7{=INDEX(A$3:A$9,LARGE((ISNUMBER($A$3:$A$9)*ISNUMBER($B$3:$B$9)*ISNUMBER($C$3:$C$9)*ROW($A$3:$A$9)),ROW(A1))-2)}

    A3:C9資料 陣列公式

    版面問題 歡迎至 YAHOO EXCEL迷 部落格指教 編號 (207)

  • 7 年前

    先選擇你要的資料列範圍後,在執行以下巨集:

    Sub test()

    For Each theC In Selection.EntireRow.Rows

    If Not (IsNumeric(theC.Cells(1)) And IsNumeric(theC.Cells(2)) And IsNumeric(theC.Cells(3))) Then

    If TypeName(rgtarget) = "Empty" Then

    Set rgtarget = theC

    Else

    Set rgtarget = Union(theC, rgtarget)

    End If

    End If

    Next theC

    rgtarget.EntireRow.Delete

    End Sub

    2013-04-13 16:39:53 補充:

    上傳了 : http://www.FunP.Net/213684

還有問題?馬上發問,尋求解答。