返回列表 上一主題 發帖

[發問] 清除重覆資料,只存留1筆資料

回復 10# 准提部林

同意淮提部林前輩所言,

也請允許小弟冒昧提點看法,發言有不當處請不吝指正,小弟一定改進.

小弟以為,
提供附檔的理由之一在於解答者不需再手動自己鍵入資料去進行測試,省去麻煩.
板上前輩願意無償提供解答,提問的板友提供附檔,應不是太大困難.

理由之二在於有時不提供附檔,真的容易造成誤會,因每人想事情看事情的角度不同,
若有附檔,可能會更易理解問題所在.

其實前面回文已有不少高手前輩們回覆精妙解答,
未能答到板友想要的效果,可能就是無附檔之故導致產生對問題的誤解,
若有提供附檔,想必能免去此一遺憾.

以上所言僅供參考,不當處請海涵.

小弟斗膽,
附上小弟修改自淮提部林前輩所寫之程式碼後的版本及檔案,絕非小弟所原創,特此聲明.

vba功力太差,改得不好,希望有所幫助,有不當處也請前輩們務必指點一二,感謝.
本想寫註解,但因目前對前輩所寫的原本程式碼還不敢說已有充分的理解,
有時是知其然而不知其所以然,寧可先不寫,以免有誤導板友之嫌,請見諒...
  1. '此程式碼修改自麻辣家族討論區excel高手淮提部林前輩所寫,非我自創.
  2. '討論區網址:http://forum.twbts.com/index.php

  3. Sub test()
  4. Dim arr, brr, myD, N, T
  5. Set myD = CreateObject("scripting.dictionary")
  6. arr = Range("a2:d" & Cells(Rows.Count, 1).End(xlUp).Row)
  7. ReDim brr(1 To UBound(arr), 1 To 4)
  8. N = 1
  9. For i = 1 To UBound(arr)
  10. T = arr(i, 2) & arr(i, 3) & arr(i, 4)
  11. If myD(T) = 1 Then GoTo 101
  12. For j = 1 To 4
  13. brr(N, j) = arr(i, j)
  14. Next j
  15. N = N + 1
  16. myD(T) = 1
  17. 101:
  18. Next i
  19. If N > 0 Then [h2].Resize(N, 4) = brr
  20. End Sub
複製代碼
2-2 (多欄資料)多欄資料皆相同才刪除重複橫列.zip (9.44 KB)

TOP

回復 12# GBKEE
回復 13# 准提部林

非常感謝GBKEE前輩提供另一種方式提供論壇板友學習,非常值得研究,小弟抱持感恩的心收下了.
也非常感謝淮提部林前輩提醒論壇板友關於Application.Transpose的限制,以後小弟練習時也會特別注意這個部份.

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題