2017-02-17 378 views
1

我有一項任務,如果某列的標題爲「Jan-00」,則應刪除整個列。工作表中有許多這樣的列。 Jan-00由於無效公式而出現,該公式在插入列時會自動填入(我無法更改公式,但只能刪除列)。下面附有表格的屏幕截圖。如何在VBA中搜索和刪除包含「Jan-00」的單元格

screenshot of the table

這是更正後的代碼:

For i = LastColumn to i+1 step -1 
    If ActiveSheet.Cells(1, i) = 0 And IsDate(ActiveSheet.Cells(1, i).Value) Then 
    Columns(i).EntireColumn.Delete 
    Else 
    End If 
Next i 

我覺得這裏的問題是出點揚-00的格式是否正確?任何建議將不勝感激。謝謝!

+0

不要忘記接受其中一個答案。 –

回答

1
Option Explicit 

Public Sub TestMe() 

    Dim i   As Long 
    dim k   as long: k = 1 
    Dim LastColumn As Long: LastColumn = 6 

    For i = LastColumn To k Step -1 

     If ActiveSheet.Cells(1, i) = 0 And IsDate(ActiveSheet.Cells(1, i).Value) Then 
      Columns(i).EntireColumn.Delete 
     Else 
     End If 

    Next i 

End Sub 

您在引用單元格的方式有錯誤。它不應該是Cells.Value(1,i),但如圖所示。此外,我已經添加了格式檢查,無論是日期。

+0

'我= LastColumn到我'?你的意思是? – Bathsheba

+0

@Bathsheba - 它的星期五:) – Vityata

+0

當刪除* *專題*時向後循環。好的一點,也是不應該刪除其他零的事實。 –

1

Jan-00是最有可能的值是0

所以(和整理了一些語法)

If ws.Cells(1, i).Value = 0 Then 
應該工作

一些不起眼的格式。

另外,考慮向後運行循環,否則你會錯過連續的零。

+0

感謝您的評論。但Cells.Value = 0不起作用? –

+0

什麼不適用於它?你得到的錯誤是什麼? – Bathsheba

+0

'ws.Cells.Value(1,i)'不是有效的VBA語法。 – Vityata

0

您可以使用此

For i = 1 To LastColoumn 
    If ws.Cells(1, i).Value Like "Jan-00" Then Columns(i).EntireColumn.Delete 
Next i 
0

有一個在你的代碼中的錯字,ws.Cells.Value(1, i)應改爲ws.Cells(1, i).Value

由於Jan-00是日期,Excel可能會在單元格的值中存儲不同的值。選擇單元格,看看顯示在公式欄:

enter image description here

你既可以改變你的if語句,以正確的值,或者你可以測試.Text代替.Value

一旦刪除列中,該列右側的所有列都會移過,所以在當前循環中,將刪除每列的列。在您的刪除語句後更正這個包括i = i - 1

相關問題