2012-07-19 17 views
0

我有以下格式的Excel表格:刪除特定的列在Excel

excel file

我只是想刪除沒有在第一行中的值爲1的列(「A」 )。我知道,刪除一列我可以使用類似的東西:

Columns("E:E").Select 
Selection.Delete Shift:=xlToLeft 

任何幫助它會很好。

一些解決方案,爲我的錯誤是:

Sub Delete_Column_Excel_VBA() 
    Dim Firstcolumn, fcol As Long 
    Dim Lastcolumn As Long 

    With ActiveSheet 
     .Select 
     Firstcolumn = .UsedRange.Cells(1).Column 
     Lastcolumn = .UsedRange.Columns(.UsedRange.Columns.Count).Column 
     For fcol = Firstcolumn To Lastcolumn 
      With .Cells(fcol, "1") 
       If .value <> 1 Then .EntireColumn.Delete 
      End With 
     Next fcol 
    End With 

如果我刪除不爲1的第一行中的值,我的表應該在年底這樣的那些列:

excel table 2

+0

你嘗試過什麼呢?你至少應該能夠想出一些僞算法。 – ApplePie 2012-07-19 10:47:18

+0

你會得到什麼錯誤?在哪一行? – ApplePie 2012-07-19 10:53:17

+0

應用程序定義或對象定義錯誤行.Cells(fcol,「1」) – Layla 2012-07-19 10:56:02

回答

0

此修復您的錯誤,但我覺得還是有後留下了一個邏輯錯誤:

With .Cells(fcol, 1) 

Excel期望引用被表示爲數字,而不是像你所做的字符串。然後在你的if我認爲它應該是相反的。您應該比較「1」,否則它只會刪除所有內容(在我的計算機上嘗試過)。

+0

謝謝,劇照刪除所有內容,我只需要刪除行1中有1的那些列,並將剩餘的值移動到左 – Layla 2012-07-19 11:08:59

1

試試這個

Sub Delete_Column_Excel_VBA() 
    Dim cl As Range, rng As Range 

    For Each cl In ActiveSheet.UsedRange.Rows(1).Cells 
     If cl <> 1 Then 
      If rng Is Nothing Then 
       Set rng = cl 
      Else 
       Set rng = Union(rng, cl) 
      End If 
     End If 
    Next 
    rng.EntireColumn.Delete 
End Sub 
+0

謝謝我已經更新了我希望決賽桌的樣子,你能檢查一下嗎? – Layla 2012-07-19 11:46:43

+0

謝謝@chris neilsen,我修改了它,現在我得到了我想要的結果 – Layla 2012-07-19 12:09:52