删除Ms Excel 2010中的空列

删除Ms Excel 2010中的空列,excel,csv,multiple-columns,Excel,Csv,Multiple Columns,我有一个CSV文件,其中有很多空列。我有Ms Excel 2010,但我不知道如何使用宏或排序函数 我已经做了谷歌搜索,并按照步骤进行了操作。他们没有帮助我。有人能指导我一步一步地删除空列吗 编辑: 对不起,我不知道这个网站是怎么运作的。我很难通过我的网络搜索历史来找到合适的链接,因为我已经搜索了一整天 但我有一些来自我的历史的链接,这些链接对像我这样的人很有帮助(但不是我:() 假设您有以下情况: 1,,,,4,55,,92,,,,,,,,,62, 3,,,,7,43,,12,,,,,,,,

我有一个CSV文件,其中有很多空列。我有Ms Excel 2010,但我不知道如何使用宏或排序函数

我已经做了谷歌搜索,并按照步骤进行了操作。他们没有帮助我。有人能指导我一步一步地删除空列吗

编辑:

对不起,我不知道这个网站是怎么运作的。我很难通过我的网络搜索历史来找到合适的链接,因为我已经搜索了一整天

但我有一些来自我的历史的链接,这些链接对像我这样的人很有帮助(但不是我:()


假设您有以下情况:

1,,,,4,55,,92,,,,,,,,,62,
3,,,,7,43,,12,,,,,,,,,74,
7,,,,3,58,,52,,,,,,,,,64,
0,,,,6,10,,22,,,,,,,,,96,
3,,,,8,13,,92,,,,,,,,,22,
对于CSV文件,您需要在Excel 2010中执行以下操作:
1.保存文件副本(以防您在此处出错)
2.按Alt+F11键
3.双击Sheet1(Book1)-或任何您的工作表名称。(位于Microsoft Excel对象下。
4.将此代码复制并粘贴到名为Book1.csv-Sheet1(代码)的窗口中

5.单击顶部工具中的绿色箭头。(或者,按F5) 请注意,您可能需要修改的值是“25”和“90”。这些值与从ASCII转换为字符有关。如果您愿意,您可以使用这些值

这样做的目的是通过A(是的,相反)查看Z列,并删除其中没有数据的任何列


享受吧。

假设你有:

1,,,,4,55,,92,,,,,,,,,62,
3,,,,7,43,,12,,,,,,,,,74,
7,,,,3,58,,52,,,,,,,,,64,
0,,,,6,10,,22,,,,,,,,,96,
3,,,,8,13,,92,,,,,,,,,22,
对于CSV文件,您需要在Excel 2010中执行以下操作:
1.保存文件副本(以防您在此处出错)
2.按Alt+F11键
3.双击Sheet1(Book1)-或任何您的工作表名称。(位于Microsoft Excel对象下。
4.将此代码复制并粘贴到名为Book1.csv-Sheet1(代码)的窗口中

5.单击顶部工具中的绿色箭头。(或者,按F5) 请注意,您可能需要修改的值是“25”和“90”。这些值与从ASCII转换为字符有关。如果您愿意,您可以使用这些值

这样做的目的是通过A(是的,相反)查看Z列,并删除其中没有数据的任何列


享受。

这是一个宏,它将遍历所有列,从最后一列到第一列,并删除其中没有任何数据的列:

Sub DeleteEmptyColumns()

    Dim lastColumn As Integer
    Dim lastRow As Integer
    Dim i As Integer
    Dim r As Range

    Set r = ActiveSheet.Cells.Find("*", SearchOrder:=xlByColumns, LookIn:=xlValues, SearchDirection:=xlPrevious)

    If Not r Is Nothing Then

        lastColumn = r.Column

        For i = lastColumn To 1 Step -1

            Set r = ActiveSheet.Columns(i).Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious)

            If r Is Nothing Then
                ActiveSheet.Columns(i).Delete
            Else
                If r.Row = 1 Then
                    ActiveSheet.Columns(i).Delete
                End If
            End If

        Next i

    End If

End Sub
此外:如果工作表中没有任何内容,它也不会崩溃,而且您不必将自己限制在一定数量的列中,它会自动检查所有列


编辑:修改为跳过第一行并忽略任何标题。

这里有一个宏,它将遍历所有列,从最后一列到第一列,并删除其中没有任何数据的列:

Sub DeleteEmptyColumns()

    Dim lastColumn As Integer
    Dim lastRow As Integer
    Dim i As Integer
    Dim r As Range

    Set r = ActiveSheet.Cells.Find("*", SearchOrder:=xlByColumns, LookIn:=xlValues, SearchDirection:=xlPrevious)

    If Not r Is Nothing Then

        lastColumn = r.Column

        For i = lastColumn To 1 Step -1

            Set r = ActiveSheet.Columns(i).Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious)

            If r Is Nothing Then
                ActiveSheet.Columns(i).Delete
            Else
                If r.Row = 1 Then
                    ActiveSheet.Columns(i).Delete
                End If
            End If

        Next i

    End If

End Sub
此外:如果工作表中没有任何内容,它也不会崩溃,而且您不必将自己限制在一定数量的列中,它会自动检查所有列


编辑:修改为跳过第一行并忽略任何标题。

能否提供指向所用页面和/或所用步骤的链接?此外,能否提供示例列(仅CSV行)。这些列完全是空的吗?对不起,我不知道这个网站是如何工作的。我很难通过我的web搜索历史找到合适的链接,因为我已经搜索了一整天。但是等等,我确实从我的历史中找到了一些对像我这样的人有用的链接(但不是我:()您能否提供指向您使用的页面和/或步骤的链接?此外,您能否提供一个示例列(仅CSV行)。这些列完全是空的吗?对不起,我不知道这个网站是如何工作的。我很难通过我的web搜索历史找到合适的链接,因为我已经搜索了一整天。但是等等,我确实从我的历史中找到了一些对像我这样的人有用的链接(但不是我:()谢谢你的回答。但是,效果不是很好。也许我遗漏了一些明显的东西。我点击了run,屏幕很平静;没有回应。我的CSV是从Google联系人导出的。所以,你知道列数是CJ。至少有40-50个空列。我在这里尝试的是导出我的Google联系人s、 移除不需要的触点(3k+中)让我的Android手机只显示我想要的联系人。还有重复的联系人。我发现在Android手机中很难合并联系人。所以,我想到了这种方法。谢谢你的回答。但是,效果不是很好。也许我错过了一些明显的东西。我确实点击了run,屏幕很平静;没有回应。我的CSV是从Google contacts导出的。因此,您知道列数最多为CJ。至少有40-50个空列。我在这里尝试的是导出我的Google contacts,删除不需要的联系人(共3k+)并且让我的Android手机只显示我想要的联系人。也有重复的联系人。我发现在Android手机中合并联系人很困难。所以,我想到了这种方法。这一个非常接近我的要求。但是,我还没有完成。为了使这个宏工作,我必须删除标题。但是,现在我缺少了heade的地图rs与数据。你能帮忙吗?我看到列数从CJ减少到Y(从88减少到25)thx@RubenKf是的,如果有标题,则不会删除列,因为其中包含数据。因此我不确定您想要什么:如果有标题但下面没有文本,是否要删除列?hi Sid。是的。我想要删除“从验证中跳过第一行”准确地说。@RubenKf好的,我已经修改了它,这样它就可以跳过标题。再试试,让我知道它是怎么回事。@RubenKf没问题。你应该勾选你选择的答案,以便人们将来知道使用哪一个(并且对另一个的投票不会有任何伤害;)这一个非常接近我的要求。但是,我还没有完成。我有一些标题,我必须删除到ma