删除excel中的特定列

删除excel中的特定列,excel,Excel,我有一个excel表格,格式如下: 我只想删除第一行(“A”)中没有值1的列。我知道要删除列,我可以使用以下方法: Columns("E:E").Select Selection.Delete Shift:=xlToLeft 任何帮助都会很好 一些给我带来错误的解决方案是: Sub Delete_Column_Excel_VBA() Dim Firstcolumn, fcol As Long Dim Lastcolumn As Long With ActiveShe

我有一个excel表格,格式如下:

我只想删除第一行(“A”)中没有值1的列。我知道要删除列,我可以使用以下方法:

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
Sub Delete\u Column\u Excel\u VBA()
Dim Firstcolumn,fcol尽可能长
将最后一列变长
使用ActiveSheet
.选择
Firstcolumn=.UsedRange.Cells(1.Column)
Lastcolumn=.UsedRange.Columns(.UsedRange.Columns.Count).Column
对于fcol=从第一列到最后一列
带.单元格(fcol,“1”)
如果.value为1,则.entireclumn.Delete
以
下一个fcol
以
如果删除第一行中值不为1的列,则表的结尾应如下所示:


这修复了您的错误,但我认为在这之后仍然存在一个逻辑错误:

With .Cells(fcol, 1)
Excel希望引用用数字表示,而不是像您那样用字符串表示。那么在你的
如果
中,我认为应该是相反的。您可能应该与“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
Sub Delete\u Column\u Excel\u VBA()
尺寸cl作为范围,rng作为范围
对于ActiveSheet.UsedRange.Rows(1.Cells)中的每个cl
如果是cl 1,那么
如果rng不算什么,那么
设置rng=cl
其他的
设置rng=接头(rng,cl)
如果结束
如果结束
下一个
rng.entireclumn.Delete
端接头

您试过什么吗?你至少应该能够想出一些伪算法。你会得到什么错误?在哪一行?应用程序定义或对象定义行中有.Cells(fcol,“1”)错误谢谢,仍然删除所有内容,我只需要删除第1行中有1的列,并将剩余值移到左边谢谢我更新了我希望最终表格的外观,你能检查一下吗?谢谢@chris neilsen,我已经修改了它,现在我得到了我想要的结果