返回列表 上一主題 發帖

[發問] Excel2003 remove duplicates相容性問題

回復 3# sunshine010
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng(1 To 2), Sh As Worksheet, i As Integer, E As Variant
  4.     Set Sh = Workbooks.Add(1).Sheets(1)  '所新增活頁簿的第一張工作表
  5.     For i = 2 To 33
  6.         Set Rng(1) = Sheets(i).Range("B4:AG65536")
  7.         Set Rng(2) = Sh.Range(Rng(1).Address)
  8.          With Rng(2)
  9.             .Clear
  10.             .Value = Rng(1).Value  '複製Rng(1)
  11.         End With
  12.         For Each E In Array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
  13.             Rng(1).Columns(E).AdvancedFilter xlFilterCopy, "", Rng(2).Cells(E), True
  14.             '每一欄的 進階篩選 不重複的值 到 Rng(2)的每一欄
  15.         Next
  16.         Rng(1).Value = Rng(2).Value
  17.     Next
  18.     Sh.Parent.Close False   '關閉新增活頁簿
  19. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 2# faye59


您好 謝謝您的回覆 我本身不會寫VBA,主要是因為我電腦只有買EXCEL2003 所以只能想辦法讓VBA可以在2003版執行

也有發現 remove duplicates是2007年才有的功能,因此才特別苦惱QQ

謝謝您提供建議為CreateObject("Scripting.Dictionary")

這個用法我在PO文前沒有查到,我也來研究看看 如果寫不出來再上來請教各位 謝謝!

TOP

回復 1# sunshine010


    其實office這個降等級問題不太可能會做的事...相信要降等有特殊因素吧!
而你指的remove duplicates在2003版本此功能不存在,
remove duplicates是從2007版本才開始有的,
工具位置在[資料]→[資料工具]。
(試試錄製巨集就知道了)

從你的程式碼中看起來是要以2003版開始執行32個活頁簿做重覆資料刪除,對吧?
那麼可以用CreateObject("Scripting.Dictionary")建立字典方式就可以做到了。
(搜索可以找到很多相關參考資料,而且都是超版提供的)
如果還寫不出來,可以上傳資料並說明原因,再來協處解決問題。

提醒:如果資料是只要每個Sheet不重覆請再下個Sheet前Nothing。
一分努力,一分收穫。
發問題前可以先搜索內文是否有相關範例。

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題