Board logo

標題: [發問] 請教刪除一整列問題 [打印本頁]

作者: xbzxbzxbz    時間: 2012-9-20 13:18     標題: 請教刪除一整列問題

各位大大您好

附件中,如果我N行的任一個儲存格是0的話
就把0所在的那一列整列刪除
我應該要怎麼下指令
感謝您
作者: GBKEE    時間: 2012-9-20 16:57

本帖最後由 GBKEE 於 2012-9-20 17:00 編輯

回復 1# xbzxbzxbz
  1. Option Explicit
  2. Sub Ex()
  3.     Dim R As Range, Rng As Range
  4.     For Each R In ActiveSheet.Range("J:N").SpecialCells(xlCellTypeConstants).Rows
  5.     'ActiveSheet(作用工作表) SpecialCells(xlCellTypeConstants "包含常數的儲存格")
  6.          If Not IsError(Application.Match(0, R, 0)) Then
  7.             '工作表函數Match 尋找到0 傳回數字,找不到0 傳回錯誤值 #N/A
  8.             If Rng Is Nothing Then Set Rng = R Else Set Rng = Union(R, Rng)
  9.             'Union 方法 傳回兩個或多個範圍的合併範圍。
  10.         End If
  11.    Next
  12.    If Not Rng Is Nothing Then Rng.EntireRow.Delete   '範圍整欄刪除
  13. End Sub
複製代碼

作者: xbzxbzxbz    時間: 2012-9-20 17:38

回復 2# GBKEE


GBKEE大大

我對您的景仰有如滔滔江水連綿不絕

感謝您
作者: xbzxbzxbz    時間: 2012-9-26 10:31

回復 2# GBKEE


    請問一下各位大大

這個公式是當N欄位的值為0的時後,刪除一整列
Option Explicit
Sub Ex()

Dim R As Range, Rng As Range

For Each R In ActiveSheet.Range("N:N").SpecialCells(xlCellTypeConstants).Rows


      If Not IsError(Application.Match(0, R, 0)) Then

         If Rng Is Nothing Then Set Rng = R Else Set Rng = Union(R, Rng)

     End If

Next

If Not Rng Is Nothing Then Rng.EntireRow.Delete

End Sub

若要改成N欄位的值超過1800的時後,刪除一整列
請問要如何進行修改?
感謝!!
作者: GBKEE    時間: 2012-9-26 13:43

回復 4# xbzxbzxbz
請到工作表查看函數Match說明
Match_type    是個數字,其值有三種可能:-1、0 或 1。用以指定 Microsoft Excel 如何從 lookup_array 裡尋找 lookup_value。
如果 match_type 是 1,則 MATCH 函數會找到等於或僅次於 lookup_value 的值。Lookup_array 必須以遞增次序排列:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。
如果 match_type 是 0,則 MATCH 函數會找第一個完全等於 lookup_value 的比較值。Lookup_array 可以依任意次序排列。
如果 match_type 是 -1,則 MATCH 函數會找到等於或大於 lookup_value 的最小值。Lookup_array 必須以遞減次序排序:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ...,以此類推。
如果 match_type 引數被省略,則假設其值為 1。
  1. Option Explicit
  2. Sub Ex()
  3.     Dim R As Range, Rng As Range
  4.     For Each R In ActiveSheet.Range("J:N").SpecialCells(xlCellTypeConstants).Rows
  5.     'ActiveSheet(作用工作表) SpecialCells(xlCellTypeConstants "包含常數的儲存格")
  6.          If Not IsError(Application.Match(1800, R, -1)) Then
  7.             '工作表函數Match 尋找到0 傳回數字,找不到0 傳回錯誤值 #N/A
  8.             If Rng Is Nothing Then Set Rng = R Else Set Rng = Union(R, Rng)
  9.             'Union 方法 傳回兩個或多個範圍的合併範圍。
  10.         End If
  11.    Next
  12.    If Not Rng Is Nothing Then Rng.EntireRow.Delete   '範圍整欄刪除
  13. End Sub
複製代碼

作者: xbzxbzxbz    時間: 2012-9-26 14:33

回復 5# GBKEE


    感謝GBKEE大大詳細的解說
    又學到一招了
    真的感謝您




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)