請問一下,如果我現在一份excel裡面有500個工作頁,每一頁都有材料編號(200~300種),但每一頁材料編號有的會重覆,有沒有什麼方式將這500頁不重複的材料編號挑出來,並且顯示在同一頁
引用網頁:
引用Ragic部落格
二、編號格式?
三、模擬用資料?
只好用猜的,就當您資料全部放在a欄,剩下的自己修改
每個工作表600~1200筆資料,n百種隨機編號
總共501個工作表(含總表),合計隨機資料30~60萬筆
找不重覆大約1秒

無聊試一下750萬筆資料(產生隨機資料花半小時
),搜尋不重覆約13秒

Sub testdata() '隨機資料
Dim i As Double, lastrow As Double, total As Double, ttt As Double
Application.ScreenUpdating = False
ttt = Timer
lastrow = Application.RandBetween(601, 1201)
For i = 1 To Sheets.Count
If Sheets(i).Name <> "總表" Then
With Sheets(i)
.Cells.Clear
.Range("a1") = "編號"
For j = 2 To lastrow
.Cells(j, 1) = Application.RandBetween(1, 300)
total = total + 1
Next j
.Cells(Application.RandBetween(2, lastrow), 1) = Chr(Application.RandBetween(65, 90)) & Application.RandBetween(1, 20)
End With
End If
Next i
Application.ScreenUpdating = True
MsgBox total & "筆隨機資料" & vbNewLine & Timer - ttt, vbOKOnly, "report"
End Sub
Sub test() '找不重覆
Dim d As Object, 編號, key, i As Double, j As Double, r As Double, lastrow As Double, ttt As Double
Set d = CreateObject("scripting.dictionary")
ttt = Timer
For i = 1 To Sheets.Count
If Sheets(i).Name <> "總表" Then
If Sheets(i).Range("a1") = "" Then
MsgBox "先按產生隨機資料", vbOKOnly, "error"
Exit Sub
End If
lastrow = Sheets(i).Range("A1").CurrentRegion.Rows.Count
編號 = Sheets(i).Range("A2:A" & lastrow)
For j = 1 To UBound(編號)
d(編號(j, 1)) = d(編號(j, 1)) + 1
Next j
End If
Next i
With Sheets("總表")
.Cells.Clear
.Range("a1:c1") = Array("所有編號(debug)", "重覆次數(debug)", "只出現過一次")
.Range("a2").Resize(d.Count , 1) = Application.Transpose(d.keys)
.Range("b2").Resize(d.Count , 1) = Application.Transpose(d.items)
r = 1
For Each key In d.keys
If d(key) = 1 Then
r = r + 1
.Cells(r, 3) = key
End If
Next
.Columns("C:C").HorizontalAlignment = xlCenter
End With
Set d = Nothing
Debug.Print Timer - ttt
MsgBox r-1 & "筆" & vbNewLine & Timer - ttt & "s", vbOKOnly, "report"
End Sub
[點擊下載]
=TRANSPOSE(UNIQUE(FILTER(A2:A13,COUNTIFS(A2:A13, A2:A13)>1,"無重複資料")))

你再自己改寫成填寫到另一張表格,應該不難吧
但因為範圍要有限制,無法用A:A這樣的無限制方式
可以一次把範圍拉大一點,例如 A2:A200
FILTER(A2:A13,COUNTIFS(A2:A13, A2:A13)>1)
==>先把有其他欄位跟自己一樣的過濾出來
加上UNIQUE,把重複去除
加上TRANSPOSE 把陳列方式轉向
這時你就可以一排填寫一頁重複資訊了
如果完全沒有重複資料,會顯示#CALC,不喜歡可以改成如下
=TRANSPOSE(UNIQUE(FILTER(A2:A13,COUNTIFS(A2:A13, A2:A13)>1,"無重複資料")))
但這樣的作法很吃OFFICE版本,只有在365或2021年以後的版本才可以使用
FILTER版本限制
Microsoft 365 Excel Mac 版 Microsoft 365 Excel Excel 網頁版 Excel 2021 Mac 版 Excel 2021 iPad 版 Excel iPhone 版 Excel Android 平板電腦版 Excel Android 手機版 Excel 小於



































































































