請教Excel vba高手
請教各位前輩
我想把Excel中資料(每頁標題)隔6行刪去(也就是A1~A6的列)
規則是: 刪 A1~A6列 (6筆)
留下7~17列 (11筆)
刪 A18~23列 (6筆)
留下24~34列 (11筆)
是很有規律的, 也曾看過用網友用巨集寫VB的程式,
但是因為刪除的規則不太一樣, 程式白痴的我試著自己改卻又不成功, 所以想請大家幫忙...千萬個感謝....
這題EXCEL裡的資料以後都會陸續增加...所以要請教各位前輩!!
另一種寫法好像是..資料擷取,也就是A7~A17,A18~23.......等複製到另一個資料表...如果前輩也會的話,是否能順便教我
准提部林大師, Worlon 大師說的對=.=
001+002 他會顯示 此處需要物件....(小的不懂)
003前面刪除是ok的,但到後面多筆的時候....有些資料被刪...標題沒被刪..
可以再跟您請教刪除法的寫法嗎~~謝謝您
厄.准提部林大師,都測試完畢了...後面亂掉...資料被刪..有些標題沒被刪.....是因為資料太多嗎
准提部林大師,我已經收到囉,非常的清楚巨集的用法了,雖然還是寫不太出來XD.
再次感謝准提部林大師提供相關巨集給小弟參考,您的知識與能力令在下非常的佩服!您真的太厲害了!
另外....准提部林大師....可以請您將提供之意見...放在回答嗎...不然送不出點數(有Worlon 大師贊助)...
for ger**** 謝謝您的提供唷!!
對此兩位提供相關之參考程式感激不盡及Worlon 大師的鼎力贊助!!!
6 個解答
- ?Lv 710 年前最佳解答
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 年前
>這家不錯*****買幾次啦真的一樣
呓分串亇
- 匿名使用者7 年前
>這家不錯*****買幾次啦真的一樣
冸冸
- 您覺得這個回答如何?您可以登入為回答投票。
- KKLv 710 年前
版大,程式應該是沒有問題,可以用下列程式將刪除資料預先標顏色檢查一下
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 略看覺得可能要試多筆一點 ...