請問一下,如果我現在一份excel裡面有500個工作頁,每一頁都有材料編號(200~300種),但每一頁材料編號有的會重覆,有沒有什麼方式將這500頁不重複的材料編號挑出來,並且顯示在同一頁
引用網頁:
引用Ragic部落格
我用5張工作表作模擬(每張工作表皆增加B欄當輔助欄,只輸入1方便統計是否重覆):





在第6張工作表
在A1儲存格,點取「資料 > 合併彙算」。
統計加總或計數皆可以。
將每張工作表的資料範圍框選起來,最好是以最多的記錄筆數的範圍,再點取新增鈕一一加入進來。
由於我的範例A欄是編號,第一列是標題,故將最左欄與頂端列都打勾。

點取確定鈕
結果如下圖

再依B欄遞增或遞減排序,將不是1的記錄刪除。

錦色如月,子耀光芒。
二、編號格式?
三、模擬用資料?
只好用猜的,就當您資料全部放在a欄,剩下的自己修改
每個工作表600~1200筆資料,n百種隨機編號
總共501個工作表(含總表),合計隨機資料30~60萬筆
找不重覆大約1秒

無聊試一下750萬筆資料(產生隨機資料花半小時



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 小於
內文搜尋

X