Lọc dữ liệu không trùng (1 người xem)

Liên hệ QC

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

thangtrung93

Thành viên mới
Tham gia
6/7/15
Bài viết
2
Được thích
0
Hiện tại e có 3 cột như này:
1 1 1
2 2 2
3 3 3
4 4
5
Bây giờ em muốn chọn ra tại cột cuối (cột C) các giá trị không trùng trong 2 cột đầu (mảng "a1:b4"), code của em như sau:

Sub ouput()
Dim k As Long, endr As Long
Dim i As Variant, j As Variant




For Each i In Range("a1:b4")
For Each j In Range("c1:c5")
If i <> j Then
j.Offset(0, 1) = j

End If
Next j
Next i
End Sub

Nhưng kết quả không đúng, mọi người xem giúp em với ạ. Em cảm ơn nhiều!
 
Hiện tại e có 3 cột như này:
1 1 1
2 2 2
3 3 3
4 4
5
Bây giờ em muốn chọn ra tại cột cuối (cột C) các giá trị không trùng trong 2 cột đầu (mảng "a1:b4"), code của em như sau:

Sub ouput()
Dim k As Long, endr As Long
Dim i As Variant, j As Variant




For Each i In Range("a1:b4")
For Each j In Range("c1:c5")
If i <> j Then
j.Offset(0, 1) = j

End If
Next j
Next i
End Sub

Nhưng kết quả không đúng, mọi người xem giúp em với ạ. Em cảm ơn nhiều!
Mời bạn nói rõ thêm kết quả bạn cần là gì.
dữ liệu bạn cho đó thì thấy nó trùng hết đó, chả có cái nào không trùng.
Không có file thì cho dù có biết thì ít ai trả lời cho bạn
Đôi lời cùng bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Hiện tại e có 3 cột như này:
1 1 1
2 2 2
3 3 3
4 4
5
Bây giờ em muốn chọn ra tại cột cuối (cột C) các giá trị không trùng trong 2 cột đầu (mảng "a1:b4"), code của em như sau:

. Em cảm ơn nhiều!

Bạn xem thử File này của mình xem có giống ý bạn muốn không.(Bấm chạy code và đối chiếu với kết quả tham khảo)
 

File đính kèm

Upvote 0
Mình cũng chả hiểu lắm í định của bạn, nhưng

Nếu sửa lại macro của thành nội dung như sau:
PHP:
Option Explicit
Sub OutPut()
 Dim k As Long, Endr As Long, I As Variant, J As Variant

2 For Each I In Range("a1:A5")
    For Each J In Range("B1:B5")
4        If I <> J Then
            J.Offset(0, 1) = J
6        End If
    Next J
8 Next I
End Sub
Thì kết quả tại cột [C:c] sẽ i chang như cột [B:b]
 
Upvote 0
Hiện tại e có 3 cột như này:
1 1 1
2 2 2
3 3 3
4 4
5
Bây giờ em muốn chọn ra tại cột cuối (cột C) các giá trị không trùng trong 2 cột đầu (mảng "a1:b4"), code của em như sau:

Sub ouput()
Dim k As Long, endr As Long
Dim i As Variant, j As Variant




For Each i In Range("a1:b4")
For Each j In Range("c1:c5")
If i <> j Then
j.Offset(0, 1) = j

End If
Next j
Next i
End Sub

Nhưng kết quả không đúng, mọi người xem giúp em với ạ. Em cảm ơn nhiều!

Bạn khai báo cả biến k và endr nhưng ở dưới lại không thấy dùng đến
 
Upvote 0
Trong code của bạn, cứ mỗi lần duyệt một ô trong vùng "a1:b5" (mảng đầu của bạn), thì kết quả lại ghi chồng lên mảng kết quả "c1:c5"
Loại code ghi chòng như vậy đương nhiên kết quả rất bất ngờ, nếu ra kết quả đúng thì chỉ là trùng hợp.
 
Upvote 0
Sao bạn ko dùng Advance filter.
 
Upvote 0
Với bài này bạn dùng AD như nào? Biết dùng không mà tôi thấy bạn cứ hay phán bừa??? Hình như bài nào cũng có???
Sao lại phán bừa?
Bài về AF rất nhiều.
Đặc biệt là hướng dẫn của thầy Ndu.
Nhanh gọn, dễ hiểu. DÙ có làm cột phụ. Nhưng nó là cách thực tế ng ta hay dùng.
Mục đích cuối cùng lọc cái này là để lấy dữ liệu để xử lý.
Chứ ko phải lấy để ra báo cáo.
 
Upvote 0
Tại vì tôi thấy...Nếu làm được, hay góp ý mà có cơ sở...thì ok. Nhưng tôi lại không thích cứ "Mâm" nào cũng có. Vào là phán đại vài từ,...nhưng làm thì không làm, mà làm chưa chắc là được. Bởi vậy góp ý nhiều lần rồi mà vẫn cứ thích vậy... Tính tôi vậy, chướng mắt là không có chịu được.--=0--=0--=0
Vì tôi thấy sự khác biệt rất lớn giữa giải pháp và dùng thực tế.
Các bạn rất giỏi excel.
Nên tôi chỉ nói hướng thôi.
Chứ làm sao dám múa rìu qua mắt thợ.
 
Upvote 0
Tại vì tôi thấy...Nếu làm được, hay góp ý mà có cơ sở...thì ok. Nhưng tôi lại không thích cứ "Mâm" nào cũng có. Vào là phán đại vài từ,...nhưng làm thì không làm, mà làm chưa chắc là được.

ối ông trùm làm em giật mình .... Bài này em chưa hiểu ý chủ topic mà đã trót vào phán vài từ , khi nào hiểu được ý muốn thật sự của topic này em sẽ cố gắng làm thử nha , thông cảm cho em nha ông trùm , hu hu
 
Upvote 0
Tôi nhớ hok có lầm thì bạn được trợ giúp rất nhiều từ GPE này, kể cả tôi hay ai đó cũng đã giúp...!!! Nhưng một khi đã khẳn định mình thật cứng rồi, có khả năng thì mới phán... Và lúc đó tất nhiên có thể làm được giúp người ta để lên tay nghề của mình.

Còn với bạn, hầu như bài nào thấy bạn cũng vào nói quâng quơ vài câu (dạng góp ý). Có lần tôi cũng đã góp ý rồi.... Nhưng vẫn thấy xuất hiện thường xuyên những bài như vậy.... Hãy thực hiện hành động, đừng bằng lời nói...thì sẽ chẳng bao giờ tới được đích...
Mình biết là như vậy.
Mình không khẳng định là mình cứng.
Làm gì có chuyện góp ý bâng quâ.
Bạn để ý xem những chủ đề nào mình góp ý.
Thường thì biết mình ms nói.
Ko thì ko nói.
 
Upvote 0
Không trùng có nghĩa là những trị có trong A mà không có trong B, và ngược lại?

Cách giản dị:
Lập một vòng lặp duyệt A và application.match mảng B, cứ thấy error thì ghi lại
Làm giống vậy với B trên A

Cách dùng bảng băm đít:
Đọc cả mảng, ghi vào đít trị tăng 1
Đọc đít, cứ dòng nào trị lớn hơn 1 thì bỏ qua.
(*) tuy nhiên, cách này chỉ hiuệ quả khi các trị trong cột phải là duy nhất trong cột. Nếu trị lặp lại trong cùng 1 cột thì nó sẽ bị bỏ qua.
Để khắc phục, có 2 cách:
1. nếu muốn lấy đủ số lần xuất hiện thì phải ghi trị băng array, phần tử thứ nhất ghi số lần trong A, phần tử thứ 2 ghi số lần trong B
2. nếu chỉ cần lấy 1 lần thì có thể dùng kỹ thuật BIT OR, trị của cột A thì OR với 1, trị của coojt B thì OR với 2. Khi duyệt đít, trị nào là 3 thì là do nó có mặt trong cả A và B (nếu chỉ A hoặc B thì nó chỉ có thể là 1 hoặc 2).
 
Upvote 0
Không trùng có nghĩa là những trị có trong A mà không có trong B, và ngược lại?

Cách giản dị:
Lập một vòng lặp duyệt A và application.match mảng B, cứ thấy error thì ghi lại
Làm giống vậy với B trên A

Cách dùng bảng băm đít:
Đọc cả mảng, ghi vào đít trị tăng 1
Đọc đít, cứ dòng nào trị lớn hơn 1 thì bỏ qua.
(*) tuy nhiên, cách này chỉ hiuệ quả khi các trị trong cột phải là duy nhất trong cột. Nếu trị lặp lại trong cùng 1 cột thì nó sẽ bị bỏ qua.
Để khắc phục, có 2 cách:
1. nếu muốn lấy đủ số lần xuất hiện thì phải ghi trị băng array, phần tử thứ nhất ghi số lần trong A, phần tử thứ 2 ghi số lần trong B
2. nếu chỉ cần lấy 1 lần thì có thể dùng kỹ thuật BIT OR, trị của cột A thì OR với 1, trị của coojt B thì OR với 2. Khi duyệt đít, trị nào là 3 thì là do nó có mặt trong cả A và B (nếu chỉ A hoặc B thì nó chỉ có thể là 1 hoặc 2).
Yêu cầu củ chủ thớt có 3 cột mà.ffffffffffffffffffffffffffffffffffffff
 
Upvote 0
Vậy với bài này, bạn làm Ad như nào? bạn làm giúp tôi xem với...???
Cái này làm theo hướng dẫn của thầy Ndu.
Dùng công thức countif rồi advace filter.
Tất nhiên để làm được phải xem cột nào là cột gốc.
Dùng AF sẽ phải qua 2 bước oánh công thức.
 
Upvote 0
các giá trị không trùng trong 2 cột đầu
mình hiểu câu này như sau
tức là đem so sánh các giá trị của cột A với cột B
+nếu giá trị nào chỉ có ở 1 cột thì lấy ra
+giá trị nào xuất hiện ở cả 2 cột thì cho qua.
vậy nếu 2 ý trên đúng thì kết quả tại cột C của chủ topic đưa ra là sai
và chủ topic không giải thích rõ làm thế nào để cho ra những sô trong cột C đó nên tới giờ vẫn chưa giải quyết được và làm cho AE bất đồng quan điểm
 
Upvote 0
...
và chủ topic không giải thích rõ làm thế nào để cho ra những sô trong cột C đó nên tới giờ vẫn chưa giải quyết được và làm cho AE bất đồng quan điểm

Việc bất đồng quan điểm không thành vấn đề.
Nếu chủ thớt không tìm được câu trả lời thì rắng chịu. Chỉ nên tự trách mình.
Ở đây là nơi học hỏi, những quan điểm khác nhau, nếu tranh luận chính chắn sẽ tạo nên sự phong phú của giải thuật.
Chỉ những trường hợp mọi người cố sức bảo thủ ý của mình mới đưa đến bế tắc, chả ai học được gì cả.
 
Upvote 0
Web KT

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

Back
Top Bottom