返回列表 上一主題 發帖

[發問] 是否可以簡化錄製後的VBA 語法

本帖最後由 singo1232001 於 2021-6-28 00:31 編輯

回復 1# jsc0518

Sub RepeatA()
Columns("U") = Columns("D").Value
Range("U1:U20000").RemoveDuplicates Columns:=1, Header:=xlYes
Columns("P") = Columns("U").Value
Columns("U").ClearContents
End Sub

TOP

本帖最後由 singo1232001 於 2021-6-29 08:21 編輯

回復 5# jsc0518

之前 這個寫法我一直沒搞懂
原先也以為是刪除重複的用法
經過大大提示指點 我也跑去查了資料 終於了解這個意思
https://www.twblogs.net/a/5ca5b36bbd9eee59d332e201
才完全搞明白 他本身是一種添加資料的功能  
但因為字典添加有唯一性(重複的資料會加不進去) 所以就結果來說變成具有篩選重複的效果

另外奉上與大大一樣的寫法
Sub test1()
Dim xD, i&
Set xD = CreateObject("Scripting.Dictionary")
For Each d In Range("D1:D" & [d65536].End(3).Row).Value
xD(d) = "": Next   'xD(d)="" 是一種縮寫 原本是要寫成 xD.Item(d) = ""
Range("P1").Resize(xD.Count) = Application.Transpose(xD.keys)
End Sub
感謝大大指點

TOP

回復 11# jsc0518

給jsc0518大參考
幫M大補充一下
Sub Macro2()
     Columns( "P:P").ClearContents  '<--加這行可重複使用 因AdvancedFilter 的貼上位置須為空
    Columns("D:D").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns( "P:P"), Unique:=True
    [P1].Delete Shift:=xlUp '如果不要表頭 加上這行
End Sub

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題