- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
18#
發表於 2013-7-25 08:56
| 只看該作者
回復 16# jackyliu
這是經過我測試過 OK 的,雖然內容大致一樣,
但還是使用我的程式碼試試看。
(之前我亦測出你所說的狀況,試試這隻看看,其中也將 Debug 的過程內容亦併作成註釋)- Option Explicit
- Sub Ex()
- Dim Dk As Object, E As Variant, cts As Integer
- ' Dim Dk As Object, E, cts As Integer
-
- Set Dk = CreateObject("Scripting.dictionary") ' 字典物件
-
- ' 1. 將 Sheet1 的資料,複製到 Sheet2 的 A1 位置開始,依序寫入.
- ' 2. 重複性的資料,不要再重複複製到Sheet2
- ' 3. 比較不可重複欄位:姓名,地區,性別,婚姻
- For Each E In Sheet1.Range("A1").CurrentRegion.Rows ' 物件: A1 所延伸範圍的列
- ' E.Value : Variant/Variant(1 to 1, 1 to 6) : ThisWorkbook.Ex
- ' E.Value(1,1) : "姓名" : Variant/String : ThisWorkbook.Ex2
- ' E.Value(1,2) : "地區" : Variant/String : ThisWorkbook.Ex2
- ' E.Value(1,3) : "性別" : Variant/String : ThisWorkbook.Ex2
- ' E.Value(1,4) : "教育程度" : Variant/String : ThisWorkbook.Ex2
- ' E.Value(1,5) : "婚姻" : Variant/String : ThisWorkbook.Ex2
- ' E.Value(1,6) : "子女" : Variant/String : ThisWorkbook.Ex2
- Dk(E.Cells(1, 1) & E.Cells(1, 2) & E.Cells(1, 3) & E.Cells(1, 5)) = E.Value
- Next
-
- With Sheet2
- .Cells.Clear
- cts = 1
- For Each E In Dk.KEYS
- ' UBound(Dk(E), 1) : 1 : Long : ThisWorkbook.Ex
- ' UBound(Dk(E), 2) : 6 : Long : ThisWorkbook.Ex
- ' E : "姓名地區性別婚姻" : Variant/String : ThisWorkbook.Ex2
- ' E : "小李台北女已婚" : Variant/String : ThisWorkbook.Ex2
- ' E : "小劉桃園男已婚" : Variant/String : ThisWorkbook.Ex2
- .Cells(cts, "A").Resize(1, UBound(Dk(E), 2)).Value = Dk(E) ' 讀取字典物件的 ITEM (陣列)
- cts = cts + 1
- Next
- End With
- End Sub
複製代碼 請把以上複製的程式碼放入到 ThisWorkbook 程式碼區內執行。
P.S. 目前在我的檔案中 Module1 區亦放入相同程式碼分別測試結果 (Sub 名稱不同),
這是為了方便測試 "型態不符" 問題所在之故。 |
|