2012-12-14 50 views
1

我有一个CSV文件,其中有很多空列。我有Excel 2010女士但是,我不知道如何使用宏或排序功能。删除Ms Excel 2010中的空列

我已经做了Google搜索并按照步骤操作。他们没有帮助我。有人能指导我通过一步一步的过程删除空列吗?

编辑:

对不起,我不知道这个网站是如何工作的。我一直在搜索整天,因此很难通过我的网络搜索历史找出适当的链接。

但我从我的历史,是有帮助的类似我这样的人一些链接(但不是我:()

http://www.addictivetips.com/windows-tips/how-to-delete-remove-blank-rows-columns-in-excel-2010-spreadsheet/ http://www.mrexcel.com/archive/VBA/11225.html

+0

你能提供链接到你使用的页面和/或你使用的步骤吗?另外,你可以提供一个示例列(只是一个CSV行)。这些列完全是空的吗? – Thumper

+0

对不起,我不知道这个网站是如何工作的。我一整天都在搜索,因此很难通过我的网络搜索历史找出适当的链接。 但是,等等,我确实找到了一些我的历史记录中对类似像我这样的人有用的链接(但不是我:() http://www.addictivetips.com/windows-tips/how-to-delete- remove-blank-rows-columns-in-excel-2010-spreadsheet/ http://www.mrexcel.com/archive/VBA/11225。html –

回答

3

这里有一个宏,将通过所有列,从最后一个与任何数据在它的第一,并删除有没有在他们的任何列:

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 

另外:它赢得”如果工作表中没有任何内容,并且不必将自己限制在一定数量的列中,则会自动检查所有这些列。

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

+0

这一个非常接近我的要求。但是,我还没有完成。我有一些标题,我不得不删除它来完成这个宏。但是,现在我错过了标头与数据的映射。你能帮我吗?我看到列数从CJ减少到Y(这是从88开始的25)thx –

+0

@RubenKf是的,如果有标题,那么列将不会被删除,因为它们中有数据。所以我不确定你想要什么:如果有一个标题,但是它下面没有文本,你想要删除一列吗? –

+0

嗨希德。是。我想“跳过验证的第一行”确切地说。 –

2

假设你有这样的:

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(代码

Sub showMessage() 
    Dim cChar As String 
    Dim Index As Integer 
    For Index = 0 To 25 
     cChar = Chr(90-Index) 
     if Application.WorksheetFunction.CountA(Columns(cChar)) = 0 Then 
      Columns(cChar).EntireColumn.Delete 
     End If 
    Next Index 
End Sub 

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

它的作用是查看Z到A列(是的,反过来)并删除其中没有数据的任何数据。

享受。

+0

感谢您的回答。但是,这并不是很好。也许我错过了一些明显的东西。我确实跑了,屏幕只是平静的;没有反应。 我拥有的CSV是从Google通讯录中导出的。所以,你知道列的数量取决于CJ。至少有40-50个空栏。 我在这里要做的是导出我的Google联系人,删除不需要的联系人(3k +以外),并让我的Android手机只显示我想要的联系人。也有重复的。我发现很难合并android手机中的联系人。所以,我想到了这种方式。 –