卡迪那 發問時間: 電腦與網際網路軟體 · 10 年前

請教Excel vba高手

請教各位前輩

我想把Excel中資料(每頁標題)隔6行刪去(也就是A1~A6的列)

規則是: 刪 A1~A6列 (6筆)

留下7~17列 (11筆)

刪 A18~23列 (6筆)

留下24~34列 (11筆)

是很有規律的, 也曾看過用網友用巨集寫VB的程式,

但是因為刪除的規則不太一樣, 程式白痴的我試著自己改卻又不成功, 所以想請大家幫忙...千萬個感謝....

已更新項目:

這題EXCEL裡的資料以後都會陸續增加...所以要請教各位前輩!!

另一種寫法好像是..資料擷取,也就是A7~A17,A18~23.......等複製到另一個資料表...如果前輩也會的話,是否能順便教我

2 個已更新項目:

准提部林大師, Worlon 大師說的對=.=

001+002 他會顯示 此處需要物件....(小的不懂)

003前面刪除是ok的,但到後面多筆的時候....有些資料被刪...標題沒被刪..

可以再跟您請教刪除法的寫法嗎~~謝謝您

3 個已更新項目:

厄.准提部林大師,都測試完畢了...後面亂掉...資料被刪..有些標題沒被刪.....是因為資料太多嗎

4 個已更新項目:

准提部林大師,我已經收到囉,非常的清楚巨集的用法了,雖然還是寫不太出來XD.

再次感謝准提部林大師提供相關巨集給小弟參考,您的知識與能力令在下非常的佩服!您真的太厲害了!

另外....准提部林大師....可以請您將提供之意見...放在回答嗎...不然送不出點數(有Worlon 大師贊助)...

for ger**** 謝謝您的提供唷!!

對此兩位提供相關之參考程式感激不盡及Worlon 大師的鼎力贊助!!!

6 個解答

評分
  • ?
    Lv 7
    10 年前
    最佳解答

    For 版大: 

    寄來的檔案看了,部份資料並不符合題中的規則(6列表頭+11列資料),

    之前的範例均不適用(刪了),再者題中提到〔資料以後都會陸續增加〕

    ,所以再提供兩個巨集參考,只會刪去表頭及標題列,既使以後有

    新增資料也可再次處理,不會有重覆刪除的問題。

    因屬公司資料,就不上傳,另以Email回傳,若未收到請告知!

    2011-05-05 10:23:04 補充:

    將連續報表的〔表頭及標題列〕刪除,僅留必要資料列

                              .准提部林.

    ----------------------------------

    ■資料樣式:(以A欄及第一筆為例)

     第1列:A1 空白  

     第2列:A2 空白,B2:V2為公司名稱(合併儲存格)

     第3列:A3 空白,H3:H4為報表名稱(合併儲存格)

     第4列:A4 文字〔權  屬:〕

     第5列:A5 文字〔保管單位:〕

     第6列:A5 標題列〔物品編號、物品名稱...保管人〕共 22 欄 12 格

     第7列以後:為資料列,標準列數為 11 列,經核對〔列數不固定〕,

         物品編號資料,例如:

         601010534-0000004

         601010543A-0000003

         601030101D-0000015

    ■之前所提供以每 17 列刪除表頭 6 列的 VBA 程式範例,完全不適用。

    ■又〔資料會繼續增加〕--- 謝謝 Worlon 大 的提醒,這是本題最重要

     的關鍵,若未考慮到,則往後陸續增加資料,再執行刪除時,必定發生

     嚴重的錯誤。

    ■依上述狀況,提供下列2種做法參考。

    ■<巨集1>指定條件刪除法:

     Sub 刪除表首標題之一()

     Dim j&, Jm&, dCunt&, xT$, xRng As Range

     xT = "權  屬:,保管單位:,物品編號"

     '↑目前表首及標題固定的文字

     dCunt = [A65536].End(xlUp).Row

     If dCunt = 1 And [a1] = "" Then Exit Sub

     '↑檢測資料列數,無資料時,跳出

     Application.ScreenUpdating = False

     For j = dCunt To 1 Step -1

       Set xRng = [a1].Cells(j, 1)

       '↑由下而上逐一檢測各列資料

       If xRng = "" Or InStr(1, xT, xRng) > 0 Then

        Jm = Jm + 1: xRng.EntireRow.Delete

       End If

       '↑如果儲存格為〔空白〕或內容文字與〔xT〕符合時,刪除該列

     Next j

     If Jm = 0 Then MsgBox "※未刪除任何資料!": Exit Sub

     If Jm > 0 Then MsgBox "※處理完成,共刪除 " & Jm & " 列。 "

     End Sub

    ■<巨集2>不符合指定條件刪除法:

     Sub 刪除表首標題之二()

     Dim j&, Jm&, dCunt&, xRng As Range

     dCunt = [A65536].End(xlUp).Row

     If dCunt = 1 And [a1] = "" Then Exit Sub

     Application.ScreenUpdating = False

     For j = dCunt To 1 Step -1

       Set xRng = [a1].Cells(j, 1)

       If xRng.Value Like "*-#######" = False Then

        Jm = Jm + 1: xRng.EntireRow.Delete

       End If

      '↑以目前資料,要保留的部份都是〔?????????-0000000〕的格式,

      ' 如果儲存格資料內容〔不符合〕上述格式,刪除該列

    Next j

    If Jm = 0 Then MsgBox "※未刪除任何資料!": Exit Sub

    If Jm > 0 Then MsgBox "※處理完成,共刪除 " & Jm & " 列。 "

    End Sub

    ----------------------------------

    2011-05-05 10:28:33 補充:

    更正:

    第6列:A5 標題列〔物品編號、物品名稱...保管人〕共 22 欄 12 格

     ↓

    第6列:A6 標題列〔物品編號、物品名稱...保管人〕共 22 欄 12 格

  • 7 年前

    >這家不錯lv333。cC買幾次啦真的一樣

    傌呕劈

  • 匿名使用者
    7 年前

    >這家不錯*****買幾次啦真的一樣

    呓分串亇

  • 匿名使用者
    7 年前

    >這家不錯*****買幾次啦真的一樣

    冸冸

  • 您覺得這個回答如何?您可以登入為回答投票。
  • KK
    Lv 7
    10 年前

    版大,程式應該是沒有問題,可以用下列程式將刪除資料預先標顏色檢查一下

    Sub 刪除項標顏色()

    Application.ScreenUpdating = False

    i = 1

    Do While Range("A" & i) <> ""

    Rows(i & ":" & i + 5).Interior.ColorIndex = 40

    i = i + 17

    Loop

    Range("A1").Select

    End Sub

  • 匿名使用者
    10 年前

    001 ~ 003 略看覺得可能要試多筆一點 ...

還有問題?馬上發問,尋求解答。