2012-12-14 81 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手機中的聯繫人。所以,我想到了這種方式。 –