Board logo

標題: [發問] 依照所指定欄位條件而刪除該列 [打印本頁]

作者: b9208    時間: 2012-3-21 10:28     標題: 依照所指定欄位條件而刪除該列

各位先進您好
依照所指定欄位條件而刪除該列。
附件:當「地區1~4」及「單價」等欄位空白時,則刪除該列。
敬請先進們指導
非常感謝

[attach]10082[/attach]
作者: hugh0620    時間: 2012-3-21 13:52

回復 1# b9208

我採用的是由最後一筆該使處理~
這樣比較簡單~
有測試過了~ 沒有問題~
你再修改成適用於你要的~
  1. Sub EX_1()
  2. A = Sheet1.Range("A65536").End(xlUp).Row

  3. For I = A To 2 Step -1
  4.     If Application.CountA(Sheet1.Range(Cells(I, 4), Cells(I, 7))) = 0 And Sheet1.Cells(I, 9) = "" Then
  5.        Sheet1.Rows(I).Delete
  6.     End If
  7. Next
  8. End Sub
複製代碼

作者: Hsieh    時間: 2012-3-21 18:53

本帖最後由 Hsieh 於 2012-3-21 22:40 編輯

回復 1# b9208
  1. Sub bb()
  2. Dim Rng As Range, A As Range
  3. For Each A In Range("A1").CurrentRegion.Columns(9).SpecialCells(xlCellTypeBlanks)
  4.   If Application.CountA(A.Offset(, -5).Resize(, 4)) = 0 Then
  5.      If Rng Is Nothing Then
  6.         Set Rng = A
  7.         Else
  8.         Set Rng = Union(Rng, A)
  9.      End If
  10.   End If
  11. Next
  12. If Not Rng Is Nothing Then Rng.EntireRow.Delete
  13. End Sub
複製代碼

作者: b9208    時間: 2012-3-21 22:29

回復 2# hugh0620
謝謝前輩指導
可以使用
但例外情形是A欄最後一列如果沒有資料,則最後一列無法判斷。
作者: b9208    時間: 2012-3-21 22:50

回復 3# Hsieh
感謝Hsieh版主
程式執行ok
再請教如依〞品名〞重複者,再判斷後面是否為空格而刪除該列
如附件
[attach]10088[/attach]
作者: Hsieh    時間: 2012-3-21 23:01

回復 5# b9208
  1. Sub bb()
  2. Dim Rng As Range, A As Range
  3. For Each A In Range("A1").CurrentRegion.Columns(9).SpecialCells(xlCellTypeBlanks)
  4.   If Application.CountA(A.Offset(, -5).Resize(, 4)) = 0 And Application.CountIf(Range("B:B"), A.Offset(, -7)) > 1 Then
  5.      If Rng Is Nothing Then
  6.         Set Rng = A
  7.         Else
  8.         Set Rng = Union(Rng, A)
  9.      End If
  10.   End If
  11. Next
  12. If Not Rng Is Nothing Then Rng.EntireRow.Delete
  13. End Sub
複製代碼

作者: hugh0620    時間: 2012-3-22 10:56

回復 4# b9208

  你自己要去思考一下~ 怎麼樣去修改程式碼~ 就能套用能你自己的需求~
  你提出來的品名重覆/單價沒有資料~ 要踢除~
  這個問題~ 你自己要去思索一下~ 你的品名與地區的關係~
  同一個品名但地區不一樣~ 也要刪除嘛??
  假設如下的例子:
  11        WE        456121        高雄        屏東                南投        6        65
  12        WE        456121        高雄        屏東        新竹        南投        6       
  
  思索一下~ 你真正要留下來的資料是什麼??
  1. Sub EX_1()
  2. A = Application.Max(Sheet1.Range("A65536").End(xlUp).Row, Sheet1.Range("B65536").End(xlUp).Row, Sheet1.Range("C65536").End(xlUp).Row, Sheet1.Range("D65536").End(xlUp).Row, Sheet1.Range("E65536").End(xlUp).Row, Sheet1.Range("F65536").End(xlUp).Row, Sheet1.Range("G65536").End(xlUp).Row, Sheet1.Range("H65536").End(xlUp).Row, Sheet1.Range("I65536").End(xlUp).Row)

  3. For I = A To 2 Step -1
  4.     If Application.CountA(Sheet1.Range(Cells(I, 4), Cells(I, 7))) = 0 Or Sheet1.Cells(I, 9) = "" Then
  5.        Sheet1.Rows(I).Delete
  6.     End If
  7. Next
  8. End Sub
複製代碼

作者: b9208    時間: 2012-3-23 00:08

非常感謝前輩們的指導
執行OK了




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