EXCEL篩選問題

資料檔案: http://www.FunP.Net/867157

圖片說明:http://photo.pchome.com.tw/qooqoo12345/016/

如檔案所示

A、B列 → 數字按照順序排序而已,以16行為一段

C列 → 數字不重要

D、E、F列 → 只要有其中一列出現數字(數字都會出現在第16行),就刪除整段(1~16行皆刪除)

主要是要篩選出"保留整段沒有出現數字(空白)的行數"

刪除DEF有出現數字的整段行數

【刪除是整行刪除,從A~F列的16行】

整段都是以16行為單位 (B列的數字排序)

故想請問大大們,這樣該如何才能篩選出要的行數,且刪除不要的行數

謝謝!!

Update:

ericsivs大給的答案怪怪的 @@

其實只是刪掉不要的行數而已

ABC列的數字照理說都不會動到才對

DEF答案應該都要空白

所以... 可能大大搞錯我的意思@@

Update 2:

婀... 我的意思是最後的答案要把DEF列只要有出現數字的地方,就把那16行刪除

不是把DEF弄成空白啦 @@

是我最後保留的行數,是只有DEF空白的那幾行

圖片說明裡頭就有寫,A列的數字1部分有16行,因為在DEF列上有出現數字

所以A列數字1的這16行,都必須刪除

但A列數字2的那16行,因為DEF列上都是空白的,

所以就保留住那16行

其它行也是以此類推...

4 Answers

Rating
  • 8 years ago
    Favorite Answer

    1.G1公式=IF(COUNT(D1:F16),1,"N")  

      公式下刷至資料底列

    2.功能表:編輯>到>特殊>公式>只勾選〔數字〕>確定

    3.滑鼠右鍵>刪除>整列

    4.全選G欄,Delete 清除公式

    2012-06-09 23:40:39 補充:

    Sub 刪除()

    With Range("G1:G" & [A65536].End(xlUp).Row)

      .Formula = "=IF(COUNT(D1:F16),1,""N"")"

      .Value = .Value

      .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete

      .Clear

    End With

    End Sub

    2012-06-10 14:16:46 補充:

    EXCEL VBA.當某列〔符合條件〕時,刪除其〔同群組多列資料〕

                             <.准提部林.>

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

    ■方法:每一群組資料必須皆為16列,刪除準則也在第16列。

     1.G1公式=IF(COUNT(D1:F16),1,"N")  

       公式下刷至資料底列

     2.功能表:編輯>到>特殊>公式>只勾選〔數字〕>確定

     3.滑鼠右鍵>刪除>整列

     4.全選G欄,Delete 清除公式

     

     --說明--

     此為 Office 2000 的方法,請參考!執行快速鍵〔Ctrl + G〕>〔Alt + S〕

     

    ■程式碼1:為上法之 VBA。

     Sub 刪除1()

     Application.ScreenUpdating = False

     With Range("G1:G" & [A65536].End(xlUp).Row)

       .Formula = "=IF(COUNT(D1:F16),1,""N"")"

       .Value = .Value

       On Error Resume Next '如果無符合刪除條件,略過

       .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete

       .Clear

     End With

     End Sub

     

    ■程式碼2:此法為不加公式,直接處理。

     Sub 刪除2()

     Dim i&

     Application.ScreenUpdating = False

     For i = [A65536].End(xlUp).Row To 1 Step -1

       If Application.Count(Range("D" & i).Resize(1, 3)) > 0 Then

        Range("A" & i - 15).Resize(16).EntireRow.Delete

       End If

     Next

     End Sub

     

    ■程式碼3:

     Sub 刪除3()

     Dim xR As Range, xH As Range, xC1&, xC2&, i&

     Application.ScreenUpdating = False

     For i = [A65536].End(xlUp).Row To 1 Step -1

       Set xR = Range("A" & i)

       If xR <> xR(2, 1) Then Set xH = xR

       If Application.Count(xR(1, 4).Resize(1, 3)) > 0 Then xC1 = 1

       If xC1 > 0 Then

         If xR.Row = 1 Then xC2 = 1

         If xR.Row > 1 Then If xR(0, 1) <> xH Then xC2 = 1

         If xC2 > 0 Then Range(xH, xR).EntireRow.Delete: xC1 = 0: xC2 = 0

       End If

     Next

     End Sub

     

     --說明--

     1.同〔群組〕資料以A欄內容是否〔連續相同〕為準則。

     2.不限定〔列數〕,以A欄〔連續相同內容〕列數為準則。

     3.刪除準則不限在〔哪一列〕,也不限定〔單一列〕,

       只要〔群組〕中的〔任一列〕包含刪除準則,則此群組即全刪。

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

    2012-06-10 14:26:15 補充:

    <範例檔>

    http://www.funp.net/840728

  • 冰淇
    Lv 6
    8 years ago

    准大太厲害了!

    連autofill destination都省了

  • 8 years ago

    准大太厲害了! 程式的公式沒錯

    不過上面那個功能表,我就找不到編輯在哪@@

    但下面的公式答案是對的

    可以請准大回答再回答區嗎 :D

    感謝准大!!

  • 8 years ago

    Range("A1").Select

    ActiveCell.End(xlDown).Select

    a = Selection.Row

    For b = 2 To a

    d = 0

    For c = 4 To 6

    If Cells(b, c) <> "" Then

    d = d + 1

    End If

    Next c

    If d > 0 Then

    Rows(b).Delete

    a = a - 1

    b = b - 1

    End If

    Next b

    End Sub

    完成檔:http://sdrv.ms/Krbn8v

    2012-06-09 22:56:10 補充:

    抱歉!是我會錯意了,如果是這樣的話那就更簡單了

    Sub 巨集1()

    Range("A1").Select

    ActiveCell.End(xlDown).Select

    a = Selection.Row

    For b = 2 To a

    d = 0

    For c = 4 To 6

    If Cells(b, c) <> "" Then

    Cells(b, c) = ""

    End If

    Next c

    Next b

    End Sub

    2012-06-10 10:54:23 補充:

    抱歉

    完成檔:http://sdrv.ms/Krbn8v

    Source(s): , 自己, 自己
Still have questions? Get your answers by asking now.