- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 88
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-4-12
               
|
9#
發表於 2013-2-19 15:36
| 只看該作者
回復 8# billchenfantasy
不知是否可以再請教若將"重複的資料刪除"這項改為將無0-0的那一列刪除
你說本例中是人工比對刪除不含0-0的列
但是,原資料A欄都是0-0,為何是刪除不含0-0?
若排除不含0-0的列,就在加入字典時判斷是否含有0-0- Sub ex()
- Dim Rng As Range, A As Range, C As Range
- Set d = CreateObject("Scripting.Dictionary")
- d("first") = Array("Mplan_no", "Mdate") '新標題
- [A1].End(xlToRight).Offset(, -1).Resize(, 2).EntireColumn.Cut '最後2欄剪下
- [C1].Insert '在C欄插入剪下的儲存格
- For Each A In Range([A2], [A2].End(xlDown))
- mystr = "": x = "": y = ""
- Set Rng = A.EntireRow.SpecialCells(xlCellTypeConstants, xlNumbers) '以日期作為基準
- For Each C In Rng
- 'mystr = IIf(mystr = "", C.Offset(, -1) & C, mystr & C.Offset(, -1) & C) '若要排除重複則使用此為字典索引
- x = IIf(x = "", C.Offset(, -1), x & " " & C.Offset(, -1))
- y = IIf(y = "", C, y & " " & C)
- Next
- If InStr(x, "0-0") > 0 Then '整列中不含"0-0"
- s = s + 1
- d(s) = Array(x, y)
- End If
-
- 'd(mystr) = Array(x, y) '若要排除重複則使用此為字典索引
- Next
- [C:D].Cut [A1].End(xlToRight).Offset(, 1) '將C:D欄剪下貼回資料表最末端
- [C:D].Delete 'C:D剪下後變成空白欄,所以將其刪除,回覆成原資料表
- [A1].End(xlDown).Offset(3).Resize(d.Count, 2) = Application.Transpose(Application.Transpose(d.items))
- End Sub
複製代碼 |
|