PDA

View Full Version : Tìm tên bị trùng lặp trong bảng Exel



rsvnm
05-03-09, 05:14 PM
Minh có một bảng Exel ghi rất nhiều tên khách (khoảng 300) các tên khách do nhiều người vào nên không tránh khỏi trùng lặp. Ví dụ có người nhập vào máy tên khách là Soon Beng Yong nhưng người khác lại nhập la Beng Soon Yong và có thể ai đó nhập là Yong Beng Soon tên khách thì quá nhiều nên không thể phát hiện ra là tên bị trùng lặp. Mong các ban giúp mình tìm các tên trùng lặp này bằng cách cứ phát hiện ra 4 ký tự trùng nhau thì hiển thị ra để mình kiểm tra lại.
Mình mới tham gia diễn đàn, mong sớm nhận được sự ủng hộ của các bạn

BNTT
05-03-09, 05:43 PM
Minh có một bảng Exel ghi rất nhiều tên khách (khoảng 300) các tên khách do nhiều người vào nên không tránh khỏi trùng lặp. Ví dụ có người nhập vào máy tên khách là Soon Beng Yong nhưng người khác lại nhập la Beng Soon Yong và có thể ai đó nhập là Yong Beng Soon tên khách thì quá nhiều nên không thể phát hiện ra là tên bị trùng lặp. Mong các ban giúp mình tìm các tên trùng lặp này bằng cách cứ phát hiện ra 4 ký tự trùng nhau thì hiển thị ra để mình kiểm tra lại.
Mình mới tham gia diễn đàn, mong sớm nhận được sự ủng hộ của các bạn
Dùng công thức, hoặc dùng VBA, có thể giải quyết chuyện này. Tuy nhiên, tôi nghĩ, vấn đề bạn muốn không khả thi.

Bởi vì làm sao mà dám chắc được cái tên "bị đảo vị trí" đó là của 1 người? Lỡ có ai đó có tên (First Name) trùng với họ (Last Name) của một người khác thì sao? Bạn nhập thành một người à?

Ví dụ nhé, Lê Nguyễn Trần và Trần Lê Nguyễn là hai người khác nhau hoàn toàn đó bạn ơi, một người tên Trần, họ Lê, còn người kia tên Nguyễn, họ là Trần (cả hai đều là bạn của tôi nên tôi biết).

rsvnm
05-03-09, 05:45 PM
Chị ơi cột dữ liệu của em nhiều lắm em copy ra để chị xem rồi giúp em nhé, dữ liệu hàng ngày được cặp nhật. À mà ở đây chỉ được đánh 1000 ký tự thôi nên em cắt bớt đấy

Mr.Richard Zuercher
Mr.Koichiro YamamotoMr.Minoru YamamotoStephan WijnsbergheMr.Federico VoglinoSylvia VliegenFrancis VanderhaeghenJean Van Der HaegenMr.Asao TsujiMs.Teresina TonioloClaire TillekaertsMarta TalensDr.Gabor Szeplaki-NagyMyriam SchepersMr.Volker SchenkMr.Fernando RocchiaMr.Giuseppe PortaMs.Maria PillitteriMs. Pham Minh DucMs.Donatella PellizzariMr.Takaharu OmiMr. Nguyen Quang LuanMr. Nguen Van LeMr.Osamu NakanishiMr.Satoshi NakamuraFernando Mosquera MartinezMr.Yoshiyuki MoriyamaElena Montoro Garcia Mohammed AlohaliSteve MattensMr.Toshiaki MasudaMs.Valeria MassaraniMr.Gerard MartinMr.Richard MartinRobert LopezBernard LenssensMr.Takashi KoyamaMr.Hiroshi KosoSpyridon KintziosLance KhooLoannis KakavoutisMs.Akiko IshiPaul HuybrechtsJean Pierre HeirmanDr.Rolf HahnDr.Dieter GenskeMr.Gilles GarciaMr.Tadashi FujiwaraMr. Fahad AljarbouDr.Thomas ErtelMr.Dominique DoculotMr.Michel DewanckeleHerman De SchamphelaereMr.Paul CorbeelMr. Chiang Kuo HuaMr. Chiang 2Ms.Marcella BressanMr.Yuji AokiMr.Wendy AltobelloMr.Bertolon KaposvariMr.Stefano GandiniMr.Ryan CollinsMr.Javier CasasnovasMr.Terrence BillsMr.Enlisted AideCaptain.Flag AideMr.Mike AdamsMr.Andy ZiardisMrs.Doris Wohlschlaegl AschbergerIsabel Van WaesMr. Trinh Hoai GiangMr. Sng Cheng HuiMr.John SmithMr.Rudolf SchumachersHerman SchepersSergio Jose SanchezMr.William PowerMs.Ginette PomminvilleMr.Ian PegingtonEnric PedrosMs. Pang Wee PingRene OlsenMr.Johan NyveneDr.Claus NowakMr. Ng Kok HweeMr.Simon MogfordMr.Garry MahlbergVeerle LisabethMs. Le Lan ChiJane LambertMs.Evon LamM. KuritaMr.Ilan KeidarAdam JosephMs.Debra JohnstonMr.John King Jeremy StuartMr. Hoang Trong KimKarl GranovMr.Eric Rene Jean GourmelonMs.Helen GohMr.Jeremy GaillardMr.Steve DowerMr.Carlos Dominguez AgulleiroGeert DomMrs.Monnik DesmethMr.Denis DaubneyMr.Emiel CornelisMs.Lynette ButlerGert BorritsJean BlondeelMr.Peter BlaszykMs.Paula Maria BennettMrs.Janice BaileyMr.Puikau Peter AuyeungC. AnMr.George TangoOrtwin SchmidtMr.Hiroyasu MiyazakiMr.Atsushi GamoMr.Jonathan VillannuevaMr.Mike SmithMr.Patel Rajat LalbhaMr.Jason QuinlogMr.Gerard NajmanMr.Scott McQuillenMr.Kenneth MaustMr.Vince LowellMr.Ramsay Garrison LatimerMs.Virginia Ramsey HutchenMr.Louis HuachacheMs.Angela EdwardsMr.Toshihiro KaihoshiMr.Bourgeois JacquesMr.Jimmy CheungMs.Ann Auta-JonesMr. Ang Kiam ChongMr.Nicolas YongMr.Joseph Wong Chi KeungMr.M Van Der VoortFrank Van CampenhoutMr.Noel TrustrumMr. Tiong Kuok ThaiMs.Adeline Teo Ah LahLersak TejayanMr.Steven Tay Beng KuanMr.Linus TanMr.Ariff SultanMr.Mark StirlingMr.John SmithMr. Siti Safina SufianMr.Joseph Sim Soo ChyeMr.Shinichi SakaiTina Radford Pankaj MehraMs. Nguyen Ngoc TrangMr. Nguyen HungMr. Ng Hua ChongMr. Ng Beng LimMr.Alex NgMr.Nobuyuki Matsumoto

rsvnm
05-03-09, 05:50 PM
Các anh các chị ơi em cần biết tên trùng lặp để kiểm tra lại, dữ liệu của em là tên 1 cột của EXCEL khi em copy ra trông nó lung tung lắm, các anh chị trả lời em thì hướng dẫn em thật cụ thể nhé vì em dốt lắm.

tuyetbay
05-03-09, 05:50 PM
Trời! Cái mình cần là 1 file Excel chứ có bảo bạn paste lên như vậy đâu?
Cái hình thức thể hiện và các tình huống trong file sẽ giúp ít rất nhiều cho việc tạo code. Chứ đống dữ liệu này nhìn vào hoa cả mắt thì làm gì nỗi hả em.
Em nhấn vào nút "Đổi sang khung lớn" rồi tìm ở dưới nút "Tải file Từ máy" rồi nạp file đó vào nha!
Thân.

hoa35ktxd
06-03-09, 09:28 AM
Bạn thử đoạn mã sau xem nhé.

Sub TrungTen()
Columns(1).Select
Dim I As Long, J%
Dim A1() As String
I = 1
Dim Ten As String
On Error Resume Next
While Cells(I, 1).Value <> ""
A1 = Split(Trim(Cells(I, 1).Value), " ")
For J = 0 To UBound(A1)
Ten = ""
Cells(1, 1).Activate
Ten = Selection.Find(What:=A1(J), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Value
If IsError(Err) Then Err.Clear
If Ten <> "" And Ten <> Cells(I, 1).Value Then
If MsgBox("Có khả năng trùng tê giữa: " & Chr(34) & Cells(I, 1).Value & Chr(34) & " và " & Chr(34) & Ten & Chr(34) & "." & vbCrLf & _
"Có tiếp tục tìm nữa không?", vbYesNo) = vbNo Then Exit Sub
End If
Next
I = I + 1
Wend
End Sub

rsvnm
06-03-09, 11:06 AM
Các anh/chị ơi em muốn hiển thị tất cả các tên có vẻ là trùng lặp sang cột bên cạnh cơ, em thử đoạn mã của chị mà không được. Em gắn file của em vào các chị thử giúp em với.
À sao em gắn file lần nào cũng bị fail các anh/chị cho em địa chỉ email để em gửi file địa chỉ của em là rsvnm@meliahanoi.com.vn
Em đã tìm được địa chỉ email của chị tuyetbay và chị hoa35ktxd va gửi file rồi các chị mở email ra rồi giúp em với

ST-Lu!
06-03-09, 05:39 PM
Từ Data tên sao ta không tạo mã các tên này nhỉ?
Khi ấy bài toán sẽ dễ hơn

rsvnm
06-03-09, 06:10 PM
anh/chị ơi, em không hiểu ý chị lắm, dữ liệu em có được là em chuyển từ chương trình riêng của em ra file EXCEL tên khách của em luôn luôn mới thế mà ngày nào em cũng phải kiểm tra mới vất vả chứ. Chị có cần em gửi file để chị xem không ?

haonlh
07-03-09, 08:46 AM
Đây là vấn đề "nhất quán dữ liệu" do dữ liệu được nhiều người nhập.
Tùy đặc điểm của công việc mà nhập là xx được hiểu là nhập yy. Như vậy bạn phải sửa trực tiếp.

Để hỗ trợ quá trình sửa trực tiếp, bạn có thể làm theo cách sau (nói đại thể, nếu bạn không hiểu thể hiện cái đại thể đó thì hỏi lại)
Bước 1. Lọc duy nhất "cột dữ liệu gốc cần sửa" ra 1 chỗ và chép thêm thành cột bên cạnh (gọi là vùng XXX).
Bước 2. Đối chiếu dữ liệu trên cột 1 sai thì sửa lại trên cột 2 (đây là sửa trực tiếp đó).
Bước 3. Dùng hàm VLOOKUP (1 ô của cột dữ liệu gốc cần sửa, vùng XXX, 2, 0 ) để chuyển dữ liệu ở cột 2 về ngang hàng với ô của cột dữ liệu gốc (có thể thêm cột cạnh cột dữ liệu gốc cần sửa). Và chép xuống cho đến hết
Bước 4. Sao chép "value" cột có hàm VLOOKUP sang "cột dữ liệu gốc cần sửa"

rsvnm
09-03-09, 11:35 AM
Chị ơi em chưa cần sửa dữ liệu ngay, mà em cần tìm các tên có vẻ trùng lặp, rồi kiểm tra lại với khách hàng rồi mới xác định tên có trùng hay không và sửa lại trên hệ thống riêng của em.

ChanhTQ@
09-03-09, 02:24 PM
Chị ơi cột dữ liệu của em nhiều lắm em copy ra để chị xem rồi giúp em nhé, dữ liệu hàng ngày được cặp nhật. À mà ở đây chỉ được đánh 1000 ký tự thôi nên em cắt bớt đấy


Thì bạn cứ trích hay giả mạo, đưa file lên mới xem xét được;
Cứ nói qua nói lại tốn thời gian của nhiều người, trong đó có bạn!
Trong file thì tha hồ dài, chứ 10^4 từ bỏ bèn gì!

rsvnm
09-03-09, 02:49 PM
chị ơi em cố gắng tải file len mà không được, máy luôn báo
Testtrungten.xls:
Upload of file failed.
Nếu chị đồng ý thì gửi mail cho em em gửi lại file vậy

hon7643
05-06-09, 04:42 PM
hỏi về cách tìm số trùng lặp.

Mình đang tìm bài có nội dung tương tự như thắc mắc của mình, cho mình hỏi ké nha các bạn.
Ở ô A1 có nội dung 65-86-79-100
Ở ô A2 có nội dung 65
Ở ô A3 mình muốn lặp công thức sao cho nếu tìm trong ô A1 mà có nội dung của ô A2 thì ô A3 có kết quả = A2

Cảm ơn các bạn và xin lỗi vì chen ngang

tanloan
09-06-09, 12:05 PM
Ban Oi cho minh hoi 1 chut vi minh chua biet nhieu lam.
Cụ thể lam mình có 1 côt dữ liệu dạng số trong excel ( VD : 1,2,3,4,4,4,5,7,8,9,10)
làm thế nào để tìm ra và thông báo con sô bị lặp lại trong cột dãy số trên ( cụ thể là sô 4 bị lặp lại 3 lần) và con số bị nhây cách ( cụ thể là số 6 không có trong cột số trên).
nếu có thể viết giup mình đoạn mã chương trình trong VB dể mình tham khảo vi minh đang tim hiểu sách hương dẫn nhưng khó hiểu quá với lai mình không phai đân IT ma chỉ tim hiểu đôi chút xem kha năng cua minh
Thanks Bạn nhiều

Bạn thử đoạn mã sau xem nhé.

Sub TrungTen()
Columns(1).Select
Dim I As Long, J%
Dim A1() As String
I = 1
Dim Ten As String
On Error Resume Next
While Cells(I, 1).Value <> ""
A1 = Split(Trim(Cells(I, 1).Value), " ")
For J = 0 To UBound(A1)
Ten = ""
Cells(1, 1).Activate
Ten = Selection.Find(What:=A1(J), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Value
If IsError(Err) Then Err.Clear
If Ten <> "" And Ten <> Cells(I, 1).Value Then
If MsgBox("Có khả năng trùng tê giữa: " & Chr(34) & Cells(I, 1).Value & Chr(34) & " và " & Chr(34) & Ten & Chr(34) & "." & vbCrLf & _
"Có tiếp tục tìm nữa không?", vbYesNo) = vbNo Then Exit Sub
End If
Next
I = I + 1
Wend
End Sub

nguyenvietviet
20-07-09, 05:32 PM
Em dùng thử cái này nhé:
http://www.3c.com.vn/printContent.aspx?ID=47779

haunguyen32
02-04-10, 03:35 PM
Mình mới copy được macro để chạy chương trình delete các dữ liệu trùng lắp nhưng nó hơi bị hạn chế ở chỗ nếu có 01 dữ liệu cùng trùng lắp 03 -04 dòng thì nó delete được 01 hoặc 02 dòng.Mình muốn nó delete hết và chỉ giử lại 01 dòng thôi. Mọi người giúp e với. Cả nhà tham khảo cái macro này nhé

Sub DelDups_OneList()
Dim iListCount As Integer
Dim iCtr As Integer
' Turn off screen updating to speed up macro.
Application.ScreenUpdating = False
' Get count of records to search through.
iListCount = Sheets("Sheet1").Range("A1:A100").Rows.Count
Sheets("Sheet1").Range("A1").Select
' Loop until end of records.
Do Until ActiveCell = ""
' Loop through records.
For iCtr = 1 To iListCount
' Don't compare against yourself.
' To specify a different column, change 1 to the column number.
If ActiveCell.Row <> Sheets("Sheet1").Cells(iCtr, 1).Row Then
' Do comparison of next record.
If ActiveCell.Value = Sheets("Sheet1").Cells(iCtr, 1).Value Then
' If match is true then delete row.
Sheets("Sheet1").Cells(iCtr, 1).Delete xlShiftUp
' Increment counter to account for deleted row.
iCtr = iCtr + 1
End If
End If
Next iCtr
' Go to next record.
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub

ndu96081631
03-04-10, 09:17 AM
Mình mới copy được macro để chạy chương trình delete các dữ liệu trùng lắp nhưng nó hơi bị hạn chế ở chỗ nếu có 01 dữ liệu cùng trùng lắp 03 -04 dòng thì nó delete được 01 hoặc 02 dòng.Mình muốn nó delete hết và chỉ giử lại 01 dòng thôi. Mọi người giúp e với. Cả nhà tham khảo cái macro này nhé

Code trên lằng nhằng quá
Gữi bạn code khác, dùng AdvancedFilter, chẳng cần vòng lập nào


Sub RemoveDuplicate()
On Error Resume Next
With Application.InputBox("Chon vung du lieu" & vbLf & _
"Bao gom ca tieu de", Type:=8)
If .Cells Is Nothing Then Exit Sub
Application.ScreenUpdating = False
.AdvancedFilter 1, , , True
.SpecialCells(12).Select
.Parent.ShowAllData
Selection.EntireRow.Hidden = True
.SpecialCells(12).Delete 2
.Parent.Cells.EntireRow.Hidden = False
.Cells(1, 1).Select
End With
Application.ScreenUpdating = True
End Sub
Thuật toán:
- Dùng AdvancedFilter lọc tại chổ những phần tử duy nhất
- Chọn các cell đang hiện (tại vùng dữ liệu) bằng cách Ctrl + G\Special\Visible cells only
- ShowAll Data
- Ẩn dòng toàn bộ các cell đã Select
- Xóa dòng (hoặc xóa cell) trên toàn bộ các cell đang hiện của vùng dữ liệu
- Cho hiện toàn bộ dữ liệu đã ẩn
Bảo đảm tốc độ như "tia chớp"