iT邦幫忙

0

Excel VBA 刪除列問題

  • 分享至 

  • xImage

理想:A列與B列不同時可完全刪除,以及D列小於設定數字時也可以刪除。
有試寫但執行結果與預期不符,懇請幫忙修正原因,感謝。

Sub ex()
For az = 2 To 11
If Range("A" & az) <> Range("B" & az) Then
Cells(az, "B") = ""
[B2:B11].SpecialCells(4).Delete (3)
ElseIf  Range("D" & az) < 120 Then
Cells(az, "D") = ""
[D2:D11].SpecialCells(4).Delete (3)
Else
End If
Next az
End Sub

https://ibb.co/3BZ2CRH

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-09-24 15:19:57
最佳解答

使用說明:
1.請先用複製資料進行測試
2.會由游標目前位置往下判斷執行
3.「欄A <> 欄B」或「欄 D < 120」時會刪除該列
4.當該列欄 A 值為空白時即結束

Sub DeleteRows()
    Do While True
        '當該列欄 A 值為空白時即結束
        If Range("A" & ActiveCell.Row) = "" Then
            Exit Do
        End If
        '「欄A <> 欄B」或「欄 D < 120」時會刪除該列
        If ((Range("A" & ActiveCell.Row) <> Range("B" & ActiveCell.Row)) Or _
        (Range("D" & ActiveCell.Row) < 120)) Then
            Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
            Selection.Delete shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Loop
    Debug.Print "Done"
End Sub

另外,點這裡是我這次鐵人賽唯一的一篇文章,喜歡的話左上角點 Like

終於能完全刪除了。
海綿寶寶,謝謝你的回答。

問題解決就好
/images/emoticon/emoticon13.gif

0
richardsuma
iT邦大師 1 級 ‧ 2020-09-24 00:55:58

A列與B列不同時可完全刪除
是刪除整列? 還是將B的儲存格清成空白?

以及D列小於設定數字時也可以刪除
是刪除整列? 還是將D的儲存格清成空白?

你只有執行後的結果圖。
沒有你想要的結果圖?

想要的結果是A列與B列不同時就會刪除,試著寫的程式是因為不知道怎麼直接刪除,所以先使B列不同時變成空白(D列相同作法),然後再刪除。
依照初始圖,想要的結果就是能一次性全部刪除列。
richardsuma,感謝你的回答。

Sub 巨集4()
For az = 2 To 10
If Cells(az, 1) <> Cells(az, 2) Then
Cells(az, 11).EntireRow.Delete
End If
If Cells(az, 4) < 120 Then
Cells(az, 11).EntireRow.Delete
End If
Next az
End Sub

我要發表回答

立即登入回答