Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据列的名称(第一个值)删除列_Excel_Vba - Fatal编程技术网

Excel 根据列的名称(第一个值)删除列

Excel 根据列的名称(第一个值)删除列,excel,vba,Excel,Vba,我正在使用宏快速搜索一个大的学生数据表,并将其整合到一个单元格中,以便在座位计划中使用。我是一名教师。大部分都可以,但我在选择我需要的数据时遇到了问题 步骤: 1.删除数据。 2.运行一个公式,检查学生是否适合特定的群体,并整合他们的信息 3.格式 不同的科目和年级组有不同的数据布局,所以这一步给我带来了问题。我在步骤2中尝试过使用绝对单元格引用,但这不起作用,因为有时应该在D列中的信息在E列中,等等 我想要做的是有一个宏来检查列(即标题)中的第一个值,如果它与预定列表中的一个不匹配,则删除整个

我正在使用宏快速搜索一个大的学生数据表,并将其整合到一个单元格中,以便在座位计划中使用。我是一名教师。大部分都可以,但我在选择我需要的数据时遇到了问题

步骤: 1.删除数据。 2.运行一个公式,检查学生是否适合特定的群体,并整合他们的信息 3.格式

不同的科目和年级组有不同的数据布局,所以这一步给我带来了问题。我在步骤2中尝试过使用绝对单元格引用,但这不起作用,因为有时应该在D列中的信息在E列中,等等

我想要做的是有一个宏来检查列(即标题)中的第一个值,如果它与预定列表中的一个不匹配,则删除整个列及其数据

Dim rng As Range
For Each rng In Range("everything")

If rng.Value = "Test" Or rng.Value = "Test1" Then
    rng.EntireColumn.Hidden = True
End If
如果我可以将输出从隐藏列更改为删除列,我想我可以使用类似的方法

re:我想做的是有一个宏来检查列(即标题)中的第一个值,如果它与预定列表中的一个不匹配,则删除整个列及其数据

Dim rng As Range
For Each rng In Range("everything")

If rng.Value = "Test" Or rng.Value = "Test1" Then
    rng.EntireColumn.Hidden = True
End If
要删除列表之外的所有列,请执行以下操作:

Sub del_cols()
    Dim c As Long, vCOL_LBLs As Variant

    vCOL_LBLs = Array("BCD", "CDE", "DEF")

    With Worksheets("Sheet7")       '<~~ set this worksheet reference properly!
        For c = .Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
            If IsError(Application.Match(.Cells(1, c), vCOL_LBLs, 0)) Then
                .Columns(c).Delete
            End If
        Next c
    End With
End Sub
Sub del_cols()
    Dim v As Long, vCOL_LBLs As Variant

    vCOL_LBLs = Array("BCD", "CDE", "DEF")

    With Worksheets("Sheet7")       '<~~ set this worksheet reference properly!
        For v = LBound(vCOL_LBLs) To UBound(vCOL_LBLs)
            Do While Not IsError(Application.Match(vCOL_LBLs(v), .Rows(1), 0))
                .Cells(1, Application.Match(vCOL_LBLs(v), .Rows(1), 0)).EntireColumn.Delete
            Loop
        Next v
    End With
End Sub
要删除列表中的所有列,请执行以下操作:

Sub del_cols()
    Dim c As Long, vCOL_LBLs As Variant

    vCOL_LBLs = Array("BCD", "CDE", "DEF")

    With Worksheets("Sheet7")       '<~~ set this worksheet reference properly!
        For c = .Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
            If IsError(Application.Match(.Cells(1, c), vCOL_LBLs, 0)) Then
                .Columns(c).Delete
            End If
        Next c
    End With
End Sub
Sub del_cols()
    Dim v As Long, vCOL_LBLs As Variant

    vCOL_LBLs = Array("BCD", "CDE", "DEF")

    With Worksheets("Sheet7")       '<~~ set this worksheet reference properly!
        For v = LBound(vCOL_LBLs) To UBound(vCOL_LBLs)
            Do While Not IsError(Application.Match(vCOL_LBLs(v), .Rows(1), 0))
                .Cells(1, Application.Match(vCOL_LBLs(v), .Rows(1), 0)).EntireColumn.Delete
            Loop
        Next v
    End With
End Sub

请您展示一些示例数据以及您希望它的外观。谢谢请阅读如何询问a这很好它做了我想要的事情除了它删除了我在数组部分中声明的单元格,是否有一些小的内容我会更改以便我可以更改它是我输入的值是保留的而不是删除的值?谢谢我的道歉;显然我改变了你原来的状况。请参见上面的更正。