返回列表 上一主題 發帖

[發問] 保留沒有重複的欄位

本帖最後由 n7822123 於 2020-12-3 01:24 編輯

回復 1# ssooi

沒測試檔案,不想寫VBA~提供一個方法給你

隨便找一個欄位(H)把序號 跟 牌子 用隨便一個分隔符號 串接起來 Ex  H1: =A1 & "-" & C1

再去掉公式轉成值(複製>選擇性貼上>值),然後用Excel的 "移除重複"功能,針對剛剛串接的H欄位做移除重複

最後在用"資料剖析"功能,把剛剛 移除重複的H欄,用你剛剛設的分隔符號"-",重新拆成 兩欄(序號與牌子)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2020-12-3 11:43 編輯

回復 4# ssooi

把序號跟牌子 串接起來,就不會只針對牌子移除重複

例如  1-T1  與 2-T1  會被視為不一樣的,不可能被移除重複

我大概知道你的意思了......只要重複的都刪除,不是保留唯一值
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 4# ssooi

luhpro 大大的程式應該可以用,我也用你的附件寫上程式

程式如下


Sub test1203()
Dim D As Object, Arr, R&, Key$
Set D = CreateObject("Scripting.Dictionary")
Arr = [A1].CurrentRegion
For R = 1 To UBound(Arr)
  Key = Arr(R, 1) & "-" & Arr(R, 3)
  If D.Exists(Key) Then D(Key) = "X" Else D(Key) = R
Next R
R = 0
For Each Item In D.Items
  If Item <> "X" Then
    R = R + 1
    Cells(R, "F").Resize(, 3) = Cells(Item, "A").Resize(, 3).Value
  End If
Next
End Sub


檔案如下

TEST-1203.rar (13.32 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2020-12-5 16:04 編輯

回復 14# luhpro

如果VBA能有 VB.Net的 Continue [For | Do]  語法,一般人可能也不會用到Goto

其實我認為Goto才是最基本的語法,有學過組合語言 的人都知道,很多組合語言都沒有For、Do 迴圈

都是利用標籤跳行執行,來達成迴圈功能,我利用VBA語法來模擬組合語言寫For 、 Do迴圈的邏輯

如下程式 參考



Sub ADD100Sum()
'計算1加到100的累加值
I = 0
N = 100
迴圈:
I = I + 1
S = S + I
If I < N Then GoTo 迴圈
MsgBox "1加到" & N & "的總合= " & S
End Sub

Sub ADDTo30000up()
'計算1加到N的累加值,直到超過30000
'回傳N值
I = 0
Target = 30000
迴圈:
I = I + 1
S = S + I
If S < Target Then GoTo 迴圈
MsgBox "1加到'" & I & "'的累加值=" & S & ",剛過30000 "
End Sub
1

評分人數

程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題