Lọc và gộp dử liệu trùng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,963
Tôi thấy có 1 bạn hỏi về vấn đề này trên 1 trang web khác... Nhìn thì thấy yêu cầu rất đơn giãn nhưng xem kỹ lại thấy cũng không dể "nhai" chút nào!
Mời các bạn xem file, bên trong có ghi rõ yêu cầu cụ thể và kết quả mong muôn đạt được!
Các bạn nghĩ xem có cách gì có thể giãi quyết nhanh gọn bài toàn này không?
Tôi có nghĩ ra sẽ dùng vòng lập For, nhưng như thế thì dở ẹt nhưng muốn nghe ý kiến khác của mọi người!
Có thể giãi bài toán này bằng bất cứ cách nào, miển khả thi
 

File đính kèm

Nếu không For thì ... không biết PivotTable xài được không ta! Có ai nghĩ ra cách khác không? Cho xin chút ý kiến nha! Thân.
 
Lần chỉnh sửa cuối:
Tôi thấy có 1 bạn hỏi về vấn đề này trên 1 trang web khác... Nhìn thì thấy yêu cầu rất đơn giãn nhưng xem kỹ lại thấy cũng không dể "nhai" chút nào!
Mời các bạn xem file, bên trong có ghi rõ yêu cầu cụ thể và kết quả mong muôn đạt được!
Các bạn nghĩ xem có cách gì có thể giãi quyết nhanh gọn bài toàn này không?
Tôi có nghĩ ra sẽ dùng vòng lập For, nhưng như thế thì dở ẹt nhưng muốn nghe ý kiến khác của mọi người!
Có thể giãi bài toán này bằng bất cứ cách nào, miển khả thi

Lấy ra danh sách duy nhất là đơn giản rồi (dùng Advance Filter, Dùng Pivotable, dùng công thức mảng), em không bàn tới việc lấy danh sách duy nhất nữa nhé!

Sau khi trích lọc duy nhất xong, ta dùng công thức này:
=IF(SUMPRODUCT(--(Sheet1!$B$2:$B$8=Sheet3!$B5),--(Sheet1!C$2:C$8="X"))>0,"X","")
Sau đó Ctrl+D, Ctrl+R


Anh ndu chọc em út hoài nha!
 

File đính kèm

bác xem cách này có được không ạ
 

File đính kèm

Cách nào cũng hay cả! Cãm ơn các bạn!
Về PivotTable thì khỏi cần bàn đến (vì nó là công cụ rất mạnh ---> Cãm ơn Kiệt về phần này)
Riêng về cách dùng công thức trong file của bạn hoangminhtien tôi cũng nắm bắt được thuật toán... Không ngờ đơn giãn đến thế (lại nghĩ không ra ---> Cãm ơn bạn hoangminhtien về phần này)
Các bạn khác có ý kiến gì không? (dạo này thấy mình ngu quá đi mất)
 
Dành cho những CDSL vừa & lớn!

Các bạn khác có ý kiến gì không?
Có, tôi:
PHP:
Option Explicit
Sub LocTrung()
 Columns("R:AB").Select:                     Selection.Delete Shift:=xlToLeft
 Range("A1:B" & [b65432].End(xlUp).Row).Select
 Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("R1"), Unique:=True
 Range([T1], [z1]) = Range([c1], [I1]).Value
 Dim Ww As Long, lRow As Long
 Dim rRng As Range, Rng As Range, Clls As Range
 Dim GPE_Address As String
 With Sheet1.Range("B1:B" & [b65432].End(xlUp).Row)
   For Ww = 2 To [s65432].End(xlUp).Row
      Set Rng = .Find(What:=Cells(Ww, "s"), LookIn:=xlValues)
      If Not Rng Is Nothing Then
         Set rRng = Rng.Offset(, 1).Resize(, 7)
         GPE_Address = Rng.Address
         Do
            Set rRng = Union(rRng, Rng.Offset(, 1).Resize(, 7))
            Set Rng = .FindNext(Rng)
         Loop While Not Rng Is Nothing And Rng.Address <> GPE_Address
      End If
      If Not rRng Is Nothing Then
         For Each Clls In rRng.SpecialCells(xlCellTypeConstants, 2)
            Cells(Ww, Clls.Column + 17) = Clls.Value
         Next Clls
      End If
   Next Ww
 End With
 Exit Sub:                                   End Sub
 

File đính kèm

Cách nào cũng hay cả! Cãm ơn các bạn!
Về PivotTable thì khỏi cần bàn đến (vì nó là công cụ rất mạnh ---> Cãm ơn Kiệt về phần này)
Riêng về cách dùng công thức trong file của bạn hoangminhtien tôi cũng nắm bắt được thuật toán... Không ngờ đơn giãn đến thế (lại nghĩ không ra ---> Cãm ơn bạn hoangminhtien về phần này)
Các bạn khác có ý kiến gì không? (dạo này thấy mình ngu quá đi mất)

dạo này ndu khiêm tốn quá, phải nói là: mải mê vba nên lười làm ct mới đúng ???

@ hoangminhtien: cho mình mượn file để nêu ý tưởng của mình nhé
ý của mình là thế này

1- lọc duy nhất cột stt
2- từ kq cột stt đặt name động chọn vùng data để lấy nốt thông tin còn lại

mình nghĩ tốc độ sẽ được cải thiện khi dữ liệu ban đầu khoảng vài chục ngàn dòng

----------------------
 

File đính kèm

Lần chỉnh sửa cuối:
có thêm 1 cách nữa (hơi củ chuối) mượn công thức của ca_dafi
 

File đính kèm

Lần chỉnh sửa cuối:
có thêm 1 cách nữa (hơi củ chuối) mượn công thức của ca_dafi
em có làm theo cách thứ 3 của anh boyxin nhưng mà không được,em vừa mở ra thì nó thế này nè
Image-5.jpg


còn khi ấn nút dò thì nó ra thế này nè

Image-5.jpg


anh có thể giải thích và hướng dẫn cụ thể cách làm cho em được không
 
Lần chỉnh sửa cuối:
Tôi thấy có 1 bạn hỏi về vấn đề này trên 1 trang web khác... Nhìn thì thấy yêu cầu rất đơn giãn nhưng xem kỹ lại thấy cũng không dể "nhai" chút nào!
Mời các bạn xem file, bên trong có ghi rõ yêu cầu cụ thể và kết quả mong muôn đạt được!
Theo tôi, dữ liệu tổ chức như vậy chưa phú hợp lắm => khó triển khai rộng.
Nếu tổ chức như sau thì tổng quát hơn => dễ tạo report
MaKH---TenKH---Loai
001----Van-------N1
001----Van-------N3
001----Van-------N5
002----NDU-------N2
...
 
em có làm theo cách thứ 3 của anh boyxin nhưng mà không được,em vừa mở ra thì nó thế này nè
còn khi ấn nút dò thì nó ra thế này nè
anh có thể giải thích và hướng dẫn cụ thể cách làm cho em được không

Bạn và Tool/Macro/Security, chọn chế độ security là Low. thoát khỏi excel và mở lại file của boyxin nhé!
 
Bạn và Tool/Macro/Security, chọn chế độ security là Low. thoát khỏi excel và mở lại file của boyxin nhé!
đúng rồi,em đã làm được,anh có thể cho em biết là làm sao mà anh boyxin có thể làm như thế không,đơn giản vì em thấy anh ấy làm 1 nút bấm ở đó,anh ấy làm bằng lập trình hả anh,làm thế nào để có thể xem code của anh ấy bây h
 
đúng rồi,em đã làm được,anh có thể cho em biết là làm sao mà anh boyxin có thể làm như thế không,đơn giản vì em thấy anh ấy làm 1 nút bấm ở đó,anh ấy làm bằng lập trình hả anh,làm thế nào để có thể xem code của anh ấy bây h

Từ excel, bạn ấn Alt+F11 để vào cửa sổ soạn thảo VBA và xem Code của anh boyxin nhé!
23-09-200810-40-37AM.png
 
nhân tiện em hỏi luôn là làm thế nào mà anh boyxin làm được cái nút lọc ở trên exel đó ạ???
Bạn nên dùng chức năng Search của diễn đàn cho nhanh nhé (search từ commandbutton)! Vấn đề này đã trình bày rất rất nhiều trên diễn đàn GPE chúng ta! Bạn tham khảo một link này xem!
http://www.giaiphapexcel.com/forum/showpost.php?p=96530&postcount=4

http://www.giaiphapexcel.com/forum/showthread.php?t=10511
 
Lần chỉnh sửa cuối:
Ai chà! Thì ra mình quên béng 2 hàm Unique và JointIf, có thể áp dụng vào bài này dể dàng:
PHP:
Function JoinIf(VungDK As Range, DK As Variant, VungKQ As Range, Optional PC As Variant) As String
  Dim i, Dem As Long
  Dim Temp As String
  Dem = VungDK.Count
  If IsMissing(PC) Then PC = ""
  For i = 1 To Dem
    If VungDK(i) = DK Then Temp = Temp & PC & VungKQ(i)
  Next
  JoinIf = Mid(Temp, Len(PC) + 1, Len(Temp))
End Function
PHP:
Function Unique(Vung As Range, STT As Long) As String
   Dim i, K As Long
   Dim Temp As String

   For i = 1 To Vung.Cells.Count
    If i = Application.WorksheetFunction.Match(Vung(i), Vung, 0) Then
      K = K + 1
    End If
    If K = STT Then Temp = Vung(i): Exit For
   Next i
   Unique = Temp
   Application.Volatile
End Function
Xin cãm ơn tất cã mọi người
 

File đính kèm

Một cách dùng công thức khác. Mọi người tham khảo nha.
 

File đính kèm

Xin chào mọi người.
Em là người đã hỏi về vấn đề này (ở ddth , nhưng ko thấy có ai trả lời). Biết đc dđàn này nhờ gogle, ko ngờ vấn đề của mình đc nhiều anh chị quan tâm như vậy. Vì là gà nên ko hiểu lắm những công thức đã được đưa ra ở đây, em sẽ "ngâm kíu" thêm.
Về vấn đề của em, bảng dữ liệu gốc rất nhiều dòng và mỗi lần import dữ liệu vô thì số dòng là khác nhau nên không xác định được vùng chứa dữ liệu, và dữ liệu lọc ra phải ở trong 1 sheet khác. Vậy thì công thức ở đây vẫn áp dụng đươc chứ ạ?
 
Xin chào mọi người.
Em là người đã hỏi về vấn đề này (ở ddth , nhưng ko thấy có ai trả lời). Biết đc dđàn này nhờ gogle, ko ngờ vấn đề của mình đc nhiều anh chị quan tâm như vậy. Vì là gà nên ko hiểu lắm những công thức đã được đưa ra ở đây, em sẽ "ngâm kíu" thêm.
Về vấn đề của em, bảng dữ liệu gốc rất nhiều dòng và mỗi lần import dữ liệu vô thì số dòng là khác nhau nên không xác định được vùng chứa dữ liệu, và dữ liệu lọc ra phải ở trong 1 sheet khác. Vậy thì công thức ở đây vẫn áp dụng đươc chứ ạ?
Vậy tốt nhất bạn đưa dử liệu gần với dử liệu thật của bạn lên đây, mọi người sẽ giúp!
(tôi nhìn thấy câu hỏi của bạn bên www.ddth.com ... thấy cũng hay nên đưa lên cho mọi người tham khảo)
 
Xin chào mọi người.
Em là người đã hỏi về vấn đề này (ở ddth , nhưng ko thấy có ai trả lời). Biết đc dđàn này nhờ gogle, ko ngờ vấn đề của mình đc nhiều anh chị quan tâm như vậy. Vì là gà nên ko hiểu lắm những công thức đã được đưa ra ở đây, em sẽ "ngâm kíu" thêm.
Về vấn đề của em, bảng dữ liệu gốc rất nhiều dòng và mỗi lần import dữ liệu vô thì số dòng là khác nhau nên không xác định được vùng chứa dữ liệu, và dữ liệu lọc ra phải ở trong 1 sheet khác. Vậy thì công thức ở đây vẫn áp dụng đươc chứ ạ?
Đương nhiên là bạn vẫn dùng được các công thức này ở một bảng ở sheet khác. Nếu dữ liệu gốc của bạn nhiều dòng và không bằng nhau, bạn có thể sửa lại vùng tham chiếu của các công thức sao cho lớn hơn bảng dữ liệu nhiều dòng nhất của bạn, lúc này bạn có thể dùng công thức cho tất cả các bảng dữ liệu của bạn.
 
Web KT

Bài viết mới nhất

Back
Top Bottom