Board logo

標題: [發問] 如何把重複的資料去掉? [打印本頁]

作者: 小俠客    時間: 2011-1-17 18:46     標題: 如何把重複的資料去掉?

本帖最後由 小俠客 於 2011-1-17 19:25 編輯

如果一個EXCEL FILE中有些紀錄是重複的,我知道可以用「進階篩選」的不重複的資料抽出來。例如我的資料有三個COLUMN:姓名、班別、ID,我以ID來篩走重複的資料,我便能建立唯一記錄的清單。
但如果我需要多過一個COLUMN的資料來判斷是否重複資料,例如有A-E五班人,每班有10個人,編號由1至10。單看一個COLUMN是沒有用,因為屬於8號的有五個;屬於B班的也有10個,我需要把兩個COLUMN的資料結合才能判斷是否重複(即B班8號),請問這可以如何做?謝謝!

問題2:
如果我不需要把「唯一」的記錄抽出來,只需要計算紀錄的數字,又可以怎樣做?
例如住院記錄中包括:「編號」、「性別」、「醫院名」、「是否已經死亡」的資料,但因為部份病人可能多次入院後才死亡,所以他們的記錄比較多。如果我要計算不同醫院的死亡率或死亡數字,我必需要把重複的資料篩走,不能用COUNTIF的方法吧....
作者: 小俠客    時間: 2011-1-17 18:47

我是用EXCEL2003的
作者: linshin1999    時間: 2011-1-17 19:44

本帖最後由 linshin1999 於 2011-1-17 20:48 編輯

你好:以下借花獻佛這是 Hiesh 版主,回答版友問的問題所回答的答案,你可以參考看看:

Sub Ex()
Set d = CreateObject("Scripting.Dictionary")
With Sheets(2)
For Each a In .Range(.[A1], .[A65536].End(xlUp))
   d(a.Value) = a.Offset(, 1)
Next
With Sheets(1)
For Each a In .Range(.[A1], .[A65536].End(xlUp))
   a.Offset(, 3) = d(a.Value)
Next
End With
End With
End Sub

http://forum.twbts.com/viewthread.php?from=notice&tid=2398


或者你可以前往以上的網頁去參考:對初學者 Dictionary 要花一點心思,但是你要的答案就是用 Dictionary 來解決.
作者: Hsieh    時間: 2011-1-17 21:09

回復 2# 小俠客


    [attach]4439[/attach]
作者: 小俠客    時間: 2011-1-18 16:45

回復 3# linshin1999


    請問這個是解決我第一個問題的方法嗎?
我對vba還不是那麼熟悉,不太明白如何使用,我把它放在vba中,run了也沒有效果......
不過還是謝謝你的熱心幫助
作者: 小俠客    時間: 2011-1-18 16:52

本帖最後由 小俠客 於 2011-1-18 16:53 編輯
回復  小俠客
Hsieh 發表於 2011-1-17 21:09



原來我最初說的方法是可行的,但是我操作有問題才弄錯了,謝謝版大的幫助。
那麼我第二個問題是不是不能直接以formula或excel功能計算,要整理數據後才能計算?
作者: Hsieh    時間: 2011-1-18 17:40

回復 6# 小俠客

篩選後計算應該比較快速
作者: birdy0815    時間: 2011-1-19 15:52

原來進階篩選 還可以用不同的資料欄來做 這樣可以應用在我的計算成績的檔案 以及學生資料的記錄 方便查詢或篩選等等 先試試看 又學了一招
作者: 小俠客    時間: 2011-1-19 17:25

回復 7# Hsieh


    謝謝超版的幫助,這兒真的學到很多,從前還以為excel是個簡單的軟體.....
還有陣子學呢
作者: 小俠客    時間: 2011-1-20 16:39

還有一個類似的問題需要解決,但不想胡亂開post浪費論壇資源,唯有跟post發問吧!
我弄了一個千多人的名單給老闆作修改,他自己增減後交給我,但我不清楚有甚麼記錄是新加或已刪除。我現在用的方法是兩個表都向另一個表用vlookup,遇到有#N/A則代表另一個表沒有這個RECORD,但這個方法有點笨,想請教大家可以用其他方法,例如filter可以解決呢?謝謝!
作者: gong    時間: 2011-1-20 17:32

二個表貼在同一個工作表
A1:A1000,新增A1003:A2000
B1=--(COUNTIF(A:A,A1)=1)下拉至B2000
B1:B1000=1為刪除
B1003:B2000=1為新增
作者: sklo    時間: 2011-1-21 03:38

Excel 2007 好像有個功能可以track changes,但要先設定才能發揮功效。

如果你用excel2007,在menu 選「review」→ 「track changes」→「highlight changes」→勾選「track changes while editing......」一項

之後就跟指示做,下次這個file有修改內容的話,會自動highlight。

不肯定是否解決樓主的問題,但試試無妨。
作者: Hsieh    時間: 2011-1-21 08:56

回復 10# 小俠客
進階篩選即可達成
[attach]4471[/attach]
[attach]4470[/attach]
作者: 小俠客    時間: 2011-2-21 18:07

本帖最後由 小俠客 於 2011-2-21 18:10 編輯

原來各位老師已經替我想出解決方法,十分感謝!
比我原來的方法都要好呢~
作者: 小俠客    時間: 2011-2-21 18:10

回復 12# sklo


   已經改了的檔案也可以用嗎?
最後我用了一個方法......
把兩個檔案的資料分別copy到兩個word file,之後用了「比較」功能.......
作者: hydraulic    時間: 2011-2-22 17:04

其實我覺得假如用的適當的話進階篩選當然比自動篩選來的好因為篩選條件可以不只兩個 又可以不選重覆資料
與陣列一樣好用
作者: bvge    時間: 2011-2-23 05:36

進階篩選的確是很好用工具
作者: yanto913    時間: 2011-3-9 02:05

請教Hsieh 準則範圍內選擇$E$1E$2為何不是選擇$E$2就好,試過後只有$E$2會全部帶出
而E2內有此公式=COUNTIF(已刪資料!A:A,A2)=0,那在準則範圍公式會自動變成
=COUNTIF(已刪資料!A:A,A2)=0
=COUNTIF(已刪資料!A:A,A3)=0
=COUNTIF(已刪資料!A:A,A4)=0
=COUNTIF(已刪資料!A:A,A5)=0
.
.
.
的意思嗎??
不好意思真的看不來要如何應用,特請賜教
作者: yanto913    時間: 2011-3-9 02:37

剛剛查了一下準則寫成公式時要注意以下兩點:
1.在準則欄位內寫公式時必須讓公式傳回邏輯值(True,False),當傳回值是 True 時則準則成立,傳回 False 則準則不成立。
2.當準則是公式時,該準則的標題必須是空白
但我不知道是否如我所說的準則範圍鍵入
=COUNTIF(已刪資料!A:A,A2)=0
他會自動延生出
=COUNTIF(已刪資料!A:A,A2)=0
=COUNTIF(已刪資料!A:A,A3)=0
=COUNTIF(已刪資料!A:A,A4)=0
.
.
.
去判斷True或False
作者: Hsieh    時間: 2011-3-9 09:40

回復 19# yanto913

http://office.microsoft.com/zh-tw/excel-help/HA001218694.aspx?pid=CH001085946&CTT=1&origin=EC001022984
以公式寫入準則,除您所說的2點要注意外,還有一個要注意的是參照問題
以此例,準則公式=COUNTIF(已刪資料!A:A,A2)=0
必須以相對參照來書寫公式,尤其是A2,因為使用相對參照,EXCEL才會判定為原資料A欄作為計算準則
即可產生如您所說
=COUNTIF(已刪資料!A:A,A2)=0
=COUNTIF(已刪資料!A:A,A3)=0
=COUNTIF(已刪資料!A:A,A4)=0
.
.
若為=COUNTIF(已刪資料!A:A,A$2)=0
當列參照成了絕對參照時,EXCEL就只認定A2這個值而已,便不會繼續向下做判斷了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)