[問題] excel vba語法:刪除K欄為空白之列

看板Office作者 (Max)時間8年前 (2015/11/21 21:39), 8年前編輯推噓1(1022)
留言23則, 2人參與, 最新討論串1/1
軟體:Excel 版本:2013 「第k欄」為空白者的「列」一律刪除 這個VBA的語法要怎麼寫? 例如 表格如下: A B C D E F G H I J K 1 v v v v v v v v v v 2 v v v v v v v v v v v 3 v v v v v v v 4 v 5 v v v v v v v 6 v v v v v v 7 v v v v 8 v 9 v v v v v v v 第1, 3, 4, 8列的K欄位 = 空白 所以第1, 3, 4, 8整列的所有資料「刪除」,讓整列儲存格消失後, 下面的資料自動往上移,不是按delete清除資料內容 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.105.195.214 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1448113190.A.0F9.html ※ 編輯: maxmnbqq (106.105.195.214), 11/21/2015 21:47:05 ※ 編輯: maxmnbqq (106.105.195.214), 11/21/2015 21:49:45

11/21 22:18, , 1F
Rows(i).delete shift:=xlup
11/21 22:18, 1F

11/21 22:19, , 2F
可用for..next,由下而上step -1
11/21 22:19, 2F

11/21 22:21, , 3F
有標題列則用range.autofilter篩選
11/21 22:21, 3F

11/21 22:22, , 4F
配合range.specialcells內的可見儲存格
11/21 22:22, 4F

11/21 22:23, , 5F
就可不用迴圈,一次刪除
11/21 22:23, 5F

11/21 22:24, , 6F
但留意要保留標題列的話要用range.size及range.offset將要
11/21 22:24, 6F

11/21 22:25, , 7F
刪除下移縮小
11/21 22:25, 7F

11/21 22:29, , 8F
用for..next內為if range("k" & 變數名稱) ="" then
11/21 22:29, 8F

11/21 22:29, , 9F
rows(變數名稱).delete
11/21 22:29, 9F

11/21 22:34, , 10F
then後接或加上:接rows.delete則不用end if,如無請加上
11/21 22:34, 10F
補充說明:「列」會一直新增下去,所以共有幾列是變數 很感謝樓上大大的指教,但是我看不太懂...... ※ 編輯: maxmnbqq (106.105.195.214), 11/21/2015 22:57:26

11/21 22:58, , 11F
要抓最下方的列,用range.end
11/21 22:58, 11F

11/21 23:06, , 12F
補充上方為可抓最下方的儲存格,如要列號請後面加上.row
11/21 23:06, 12F

11/21 23:27, , 13F
再提供另一個方式
11/21 23:27, 13F

11/21 23:27, , 14F
range("k1:k9").specialcells(4).entirerow.delete
11/21 23:27, 14F

11/21 23:28, , 15F
k9的9要變數就在用range.end().row的方式取得
11/21 23:28, 15F

11/21 23:29, , 16F
就不用篩選、迴圈了
11/21 23:29, 16F

11/21 23:49, , 17F
上述要正確抓取的話k1:k9要為empty(uninitialized),如為
11/21 23:49, 17F

11/21 23:49, , 18F
字串string就無法了
11/21 23:49, 18F
soyoso大大好強!! 請問k9的9要變數,語法為? 上面的解釋看不太懂 另外,specialcells(4)的4是什麼意思? 使用現況 目前共有17815列,使用排序後,最後不為空白=16336列 16337列開始至17815列為空白 使用rnage(k1:k17815).specialcells(4).entirerow.delete 16337~17815列被刪除,但是16336列非空白,也被刪除 補充說明:K欄位為日期,例如2015/10/10 謝謝 ※ 編輯: maxmnbqq (106.105.195.214), 11/21/2015 23:52:25 ※ 編輯: maxmnbqq (106.105.195.214), 11/21/2015 23:55:53

11/22 00:00, , 19F
google range.specialcells 就可查到4的常數是什麼了
11/22 00:00, 19F
※ 編輯: maxmnbqq (106.105.195.214), 11/22/2015 00:03:43

11/22 00:03, , 20F
9要變數google range.end xlup
11/22 00:03, 20F

11/22 00:07, , 21F
回文rnage是錯的,是range http://imgur.com/VQsv3Qn
11/22 00:07, 21F
不小心打錯字 對不起,我看錯了,16336列的K欄位是空白,所以當然會被刪掉 ※ 編輯: maxmnbqq (106.105.195.214), 11/22/2015 00:14:38 ※ 編輯: maxmnbqq (106.105.195.214), 11/22/2015 00:16:16

11/22 00:15, , 22F
這要看實際檔案了
11/22 00:15, 22F

11/22 00:16, , 23F
了解^^
11/22 00:16, 23F
回soyoso大大,我查不到k9的9如何用變數 所以我直接使用excel 2013最後一列的數字1048576 range(k1:k1048576).specialcells(4).entirerow.delete 一樣可以用 太感謝你了^^ ※ 編輯: maxmnbqq (106.105.195.214), 11/22/2015 00:57:54
文章代碼(AID): #1MK7Gc3v (Office)