Excel刪除空白列1048576是很常用到的技巧,利用工作表最大列數的特性刪除特定列,本文同時補充VBA另一種相關工具,讓你可以視情況加以應用,靈活整理資料。
目錄
Toggle綜合本書到目前為止的內容,可知利用Excel取得網頁資料並不難,麻煩的是整批量下載的內容,於工作表上會有很多不必要的東西,例如重覆的標題列和與核心資料無關的訊息,所幸於整理資料表這方面,Excel剛好是專家,再搭配VBA可以達到很高效率的作業。這一節便以歷史匯率為範例,介紹如何適當地刪除多餘的資料。
一、VBA網路爬蟲程式
結合第三節利用「QueryTables.Add」取得網頁匯率的程式碼、和上一節利用「Application.InputBox」輸入年份幣別的方法,編寫VBA程式碼如圖所示。

二、初步執行待解決的問題
執行程式,選擇2016年的港幣(HKD)。為了方便截圖,直接取得的資料在格式上已經先調整了欄寛,並且把日期隱藏起來,但是有兩個問題,一個是圖片綠色部份,標題欄位的格式跑掉了,另一個是圖片黃色部份,在不同月份之間會有空白列存在。

三、刪除空白列程式
編寫刪除空白列的程式碼,意思是找出A欄中,儲存格特殊狀態為空白的對象物件,然後執行刪除整列的方法。這一行程式碼為慣常用法,看起來有點複雜,但一經拆解,其實在架構上仍然是「物件.方法」的標準VBA語法。

四、再次執行程式測試
執行「DeleteRows」巨集程式,結果如圖所示,原本黃色部份的空白列、包括一部份綠色A欄為空格,整列都被刪除了,不過仍然有多餘的標題欄存在。

五、Excel不同版本最大列數
不同版本的Excel最大列數也不同,以作者2013年的Office而言,在任一工作表,按住「Ctrl」鍵再按方向鍵「下」,直接跳到最後一列,如圖所示為「1048576」,這便是目前Excel最大列數。如果想要針對整張工作表作整理,例如刪除含某特定內容儲存格所在的列,首先必須先知道最大列數。

六、由下往上跑列迴圈
編寫程式如圖所示,設置以i為變數的迴圈,從「1048576」到「2」,「Step -1」表示為遞減順序,保留第一列,是因為第一列應當為標題欄。在迴圈裡設計儲存格內容的判斷式,滿足條件時刪除第i列(Rows(i).Delete)。

七、最終VBA程式執行結果
執行結果如同預期,成功將其他多餘的資料都刪除了,只保留匯率的部份,截圖是每個月顯示三天,其餘隱藏,另外也手工修改了標題欄。

VBA資料整理術:刪除空白列與特定內容
這一節介紹兩種方法刪除資料,其一是刪除空行,其二是刪除特定內容的整行。依照範例程式碼,必須兩個方法的巨集都執行過,才能預期的效果。其實如果理解了刪除特定內容的程式碼精髓,在程式設上可以很靈活,設計出一次到位的程序,擴大而言,視不同網頁的結構狀況,以類似程式設計,都可以在下載資料的同時,把多餘不必要的內容刪除掉。在本書後面的章節,會再針對其他網頁分享如何整理所取得的資料。
贊贊小屋VBA教學中心:
Excel巨集錄製教學、Excel巨集程式、VBA編輯器、VBA自學入門、VBA基礎語法、VBA基本應用、VBA UserForm、VBA VLOOKUP。
取得範例程式請前往VBA社團,訂閱請加入VBA Line社群。
VBA課程推薦:零基礎入門進階的20小時完整內容