2017-02-17 79 views
0

使用案例:我想從塔A的數據複製到柱B(其中A列,B是任意的列)。一旦數據是在列B,我想刪除列B.Excel中跨100+表標籤限定範圍,刪除重複在列100個+表

內重複條目使一個循環,從柱A移動數據到柱B,然後對每個片材在工作簿中刪除重複。

`Sub Copy() 
    For i = 1 To Sheets.Count 
     Worksheets(i).Range("A1:A100") 
     Destination:=Worksheets(i).Range("B1") 
    Next 
End Sub 
` 

爲了測試我將任務分成兩個不同的Sub()。 Sub Copy()正在工作並正確地複製我的數據。 Sheet1中也命名爲「工作表Sheet1」我的具體工作簿

`Sub RemoveStuff() 
    Dim rng As Range 
    For j = 1 To Sheets.Count 
     Set rng = Worksheets("Sheet1").Range(Range("B1"),Range("B1").End(xlDown)).Select 
     rng.RemoveDuplicates Columns:=(1), Header:=xlGuess 
    Next 
End Sub 
` 

我的錯誤似乎是正確地定義範圍。每張表都有不同數量的條目以刪除重複項。 Sheet1可能有50行並減少到6. Sheet2可以有70個並減少到3. Sheet3可以有20行並減少到12個唯一。 Excel不允許從範圍中刪除重複項(B:B!)

如何正確定義我的範圍,以便可以爲每個工作表的動態定義的範圍(工作表中的工作表中的選項卡)刪除循環中的重複項?

編輯17年2月23日 從Y0wE3K

Sub RemoveStuff() Dim ws As Worksheet For Each ws In Worksheets ws.Columns("P:P").RemoveDuplicates,Columns:=1, Header:=xlYes Next End Sub 新的代碼仍然不起作用。如果我在運行宏之前手動選擇P列,它將起作用。但它只適用於我選擇的一張紙,它似乎沒有執行循環。絕對不會自動執行每個表單,或者爲每個表單提示我。 編輯:3/4

確保你沒有任何保護的數據,我也經歷了與數據透視表的問題,但我想這可能是權限謝謝你的幫助。

+1

從'設置RNG刪除'.Select' = .... .Select' – YowE3K

+0

你'RemoveStuff'循環實際上不會改變任何東西每個循環。你的意思是選擇所有的紙張並在那裏設置範圍?您還應該小心,並在該範圍內添加工作表(「B1」)。否則,抓取的範圍將只是ActiveSheet的範圍。 – BruceWayne

+1

你確定'Copy'正在工作嗎?!?!?! – YowE3K

回答

3

RemoveStuff子程序可以改寫爲:

Sub RemoveStuff() 
    Dim ws As Worksheet 
    For Each ws In Worksheets ' Use Worksheets instead of Sheets, 
           ' in case there are any Charts 
     'You can just select the whole column, rather than selecting 
     'specific rows 
     ws.Columns("B:B").RemoveDuplicates Columns:=1, Header:=xlGuess 
    Next 
End Sub 
+0

這不起作用。我的新的代碼是這樣的: '子RemoveStuff() 昏暗WS作爲工作表 對於每個WS在工作表中 ws.Columns( 「P:P」)RemoveDuplicates柱:= 1,標題:= xlYes 接着 完Sub ' 查看編輯 – Goldfish

+0

@ktgold恐怕我不能想到爲什麼該代碼不應該工作。 (你粘貼到你的問題中的代碼不會,因爲裏面有額外的''')。我測試了它,並且它愉快地刪除了我的測試工作簿包含的三個工作表中的重複項。 – YowE3K

+0

我的錯誤是,通過搜索每張表格後,我意識到存在一張具有保護數據的表格,這些表格正在破壞它。我修好了,它運行良好!謝謝! – Goldfish

0
Sub RemoveStuff() 
    Dim ws As Worksheet 
    For Each ws In Worksheets 
     ws.Columns("P:P").RemoveDuplicates,Columns:=1, Header:=xlYes 
    Next 
End Sub 

此代碼將工作。作爲最後一點,請確保您沒有受保護的數據,或者您需要運行刪除腳本的工作表內部的透視表。無論出於什麼原因導致我的失敗,但在沒有受到保護的正確牀單上運行我的腳本都是非常棒的。