Board logo

標題: VBA刪除固定列數 [打印本頁]

作者: samwang    時間: 2013-10-31 08:54     標題: VBA刪除固定列數

刪除固定列,
1~16列
59~74列
117~132列
.
.
.
資料前面16列要刪除,58列為一個區間,請問VBA如何寫
作者: c_c_lai    時間: 2013-10-31 09:36

刪除固定列,
1~16列
59~74列
117~132列
.
.
.
資料前面16列要刪除,58列為一個區間,請問VBA如何寫
samwang 發表於 2013-10-31 08:54
  1. Sub Ex()
  2.     With Sheets(1)
  3.         .Range("A117:A132").EntireRow.Delete
  4.         .Range("A59:A74").EntireRow.Delete
  5.        .Range("A1:A16").EntireRow.Delete
  6.     End With
  7. End Sub
複製代碼

作者: samwang    時間: 2013-10-31 10:08

回復 2# c_c_lai

    謝謝您的回覆,資料有上千筆,請問如何做
作者: c_c_lai    時間: 2013-10-31 10:16

回復 3# samwang
先說說你對此案的處理方案!
作者: samwang    時間: 2013-10-31 11:06

回復 4# c_c_lai


   我從我們的server download 資料,資料會有上千筆,但是前面的16列是沒有用的,接著42列是有用的,一直重複的結束
現在我是用手動去刪除一筆筆逐一刪除很耗時,想用VBA解決,謝謝
作者: c_c_lai    時間: 2013-10-31 12:56

回復  c_c_lai


   我從我們的server download 資料,資料會有上千筆,但是前面的16列是沒有用的,接著 ...
samwang 發表於 2013-10-31 11:06

你的意思是說,在每一次從 server download 資料,資料會有上千筆,但是前面的16列是固定沒有用的,接著42列 (17 ~ 58) 是有用的?
如此不停地以此原則固定去處理 download 的資料錄?
作者: samwang    時間: 2013-10-31 15:57

回復 6# c_c_lai
是的,只能手動逐一刪除資料
作者: tpwhdavid    時間: 2013-10-31 16:45

要由下 往上刪除  row  才不會跑掉
作者: georgema    時間: 2013-10-31 17:56

請試試看下列程式:
  1. Sub delRows()
  2.     Dim i&, j&, x%, y%
  3.     j = Range("a1").End(xlDown).Row
  4.     MsgBox "j = " & j
  5.     j = j / 42
  6.     MsgBox "New j = " & j
  7.     x = 1
  8.     y = 16
  9.     For i = 1 To j
  10.         If i = 1 Then
  11.             Rows(x & ":" & y).Select
  12.             Selection.Delete Shift:=xlUp
  13.         Else
  14.             x = x + 42
  15.             y = y + 42
  16.             Rows(x & ":" & y).Select
  17.             Selection.Delete Shift:=xlUp
  18.         End If
  19.     Next i
  20. End Sub
複製代碼

作者: c_c_lai    時間: 2013-10-31 20:19

回復  c_c_lai
是的,只能手動逐一刪除資料
samwang 發表於 2013-10-31 15:57

只要將以下程式碼套入到你的程式內就 OK 了!
  1.     With Sheets(1)
  2.         '  由最底逐步往上刪除 Rows 便不會亂掉了!
  3.         .Range("A117:A132").EntireRow.Delete
  4.         .Range("A59:A74").EntireRow.Delete
  5.        .Range("A1:A16").EntireRow.Delete
  6.     End With
複製代碼

作者: luhpro    時間: 2013-10-31 21:12

刪除固定列,
1~16列
59~74列
117~132列
.
.
.
資料前面16列要刪除,58列為一個區間,請問VBA如何寫
samwang 發表於 2013-10-31 08:54

不管你原稿有幾列都適用 : (可用空表測試, 只要 A1=1 然後遞增儲存格內值到想要的列數, 再跑此程式即可知結果)
  1. Sub NN()
  2.   Dim lRows&
  3.   
  4.   lRows = 1
  5.   Do While Cells(lRows, 1) <> ""
  6.     Rows(lRows & ":" & lRows + 15).Delete
  7.     lRows = lRows + 42
  8.   Loop
  9. End Sub
複製代碼

作者: samwang    時間: 2013-11-1 07:34

回復 9# georgema


    因為無用的資料16列中有些空格,所以程式無法執行,
作者: samwang    時間: 2013-11-1 07:53

回復 11# luhpro


    謝謝大大幫忙,測試沒問題
作者: ui123    時間: 2013-11-7 19:40

謝謝大大的解說




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)