Tạo Function Dữ liệu Trùng trong Excel

Liên hệ QC

vanaccex

Thành viên tiêu biểu
Tham gia
8/7/18
Bài viết
454
Được thích
305
Giới tính
Nữ
Em có đọc 1 số bài viết về mảng đặc biệt là bài về Array List trong excel. https://www.giaiphapexcel.com/diendan/threads/bài-18-arraylist.129901/. Tuy nhiên trong quá trình thực hiện Em mong muốn lọc ra kết quả trùng giữa các cột trong khi em đánh dấu "X" ở cột dữ liệu I, J Thì sẽ lọc được các hàng dữ liệu trùng nhau Hàng 2 = hàng 3 = hàng 4...= hàng 6.... của vùng dữ liệu từ B1: C100001. Và khi em thêm dấu "X" ở trên cột K thì sẽ cũng lọc như trên với điều kiện các hàng bằng nhau bên vùng dữ liệu B1:D100001. Tuy nhiên đối với cột không chọn "X" thì vẫn hiện ra kết quả tương ứng của dòng dữ liệu đó !. Em Cảm ơn anh (chị) !
 

File đính kèm

  • ArrayList_1.xlsb
    1.2 MB · Đọc: 14
Em có đọc 1 số bài viết về mảng đặc biệt là bài về Array List trong excel. https://www.giaiphapexcel.com/diendan/threads/bài-18-arraylist.129901/. Tuy nhiên trong quá trình thực hiện Em mong muốn lọc ra kết quả trùng giữa các cột trong khi em đánh dấu "X" ở cột dữ liệu I, J Thì sẽ lọc được các hàng dữ liệu trùng nhau Hàng 2 = hàng 3 = hàng 4...= hàng 6.... của vùng dữ liệu từ B1: C100001. Và khi em thêm dấu "X" ở trên cột K thì sẽ cũng lọc như trên với điều kiện các hàng bằng nhau bên vùng dữ liệu B1:D100001. Tuy nhiên đối với cột không chọn "X" thì vẫn hiện ra kết quả tương ứng của dòng dữ liệu đó !. Em Cảm ơn anh (chị) !
Giải thích khó hiểu quá.
Cái "Tuy nhiên đối với cột không chọn "X" thì vẫn hiện ra kết quả tương ứng của dòng dữ liệu đó !" ý bạn muốn hiện hay không?
Không hiện thì nói là không muốn nó hiện.
 
Upvote 0
Giải thích khó hiểu quá.
Cái "Tuy nhiên đối với cột không chọn "X" thì vẫn hiện ra kết quả tương ứng của dòng dữ liệu đó !" ý bạn muốn hiện hay không?
Không hiện thì nói là không muốn nó hiện.
Ý em là nó vẫn hiện theo hàng tương ứng anh Ạ !
 
Upvote 0
Ý em là nó vẫn hiện theo hàng tương ứng anh Ạ !
Vẫn chưa hiểu:
- Nếu trùng nhau 2 cột chỉ hiện 1 dòng, cột 3 là tổng tất cả các dòng trùng?
- Trùng nhau 3 cột thì sao?
Nên có kết quả mẫu vài chục dòng cho người khác hiểu.
 
Upvote 0
Vẫn chưa hiểu:
- Nếu trùng nhau 2 cột chỉ hiện 1 dòng, cột 3 là tổng tất cả các dòng trùng?
- Trùng nhau 3 cột thì sao?
Nên có kết quả mẫu vài chục dòng cho người khác hiểu.
Vẫn chưa hiểu:
- Nếu trùng nhau 2 cột chỉ hiện 1 dòng, cột 3 là tổng tất cả các dòng trùng?
- Trùng nhau 3 cột thì sao?
Nên có kết quả mẫu vài chục dòng cho người khác hiểu.
Kết quả mẫu của dữ liệu trùng nhau 2 cột. Em Phải làm thêm 1 cột phụ Sử dụng Hàm Countifs để đếm với 2 điều kiện, nếu 3 điều kiện 2 lại thêm 1 điều kiện nữa vào counifs. Em sẽ lọc các ở cột tính Countifs Các ô có dữ liệu lớn hơn 1 và chuyển sang sheets kết quả !
 

File đính kèm

  • ArrayList_2.xlsb
    2 MB · Đọc: 14
Upvote 0
Kết quả mẫu của dữ liệu trùng nhau 2 cột. Em Phải làm thêm 1 cột phụ Sử dụng Hàm Countifs để đếm với 2 điều kiện, nếu 3 điều kiện 2 lại thêm 1 điều kiện nữa vào counifs. Em sẽ lọc các ở cột tính Countifs Các ô có dữ liệu lớn hơn 1 và chuyển sang sheets kết quả !
Bạn muốn lấy hết thì Copy cột A đến cột D sang cột H đến K.
Sort dữ liệu theo 2 điều kiện cột I, J hoặc thêm điều kiện cột K sẽ có kết quả những dòng trùng nhau nằm liên tục từ trên xuống.
Còn muốn khác nữa thì chưa hiểu.
 
Upvote 0
Bạn muốn lấy hết thì Copy cột A đến cột D sang cột H đến K.
Sort dữ liệu theo 2 điều kiện cột I, J hoặc thêm điều kiện cột K sẽ có kết quả những dòng trùng nhau nằm liên tục từ trên xuống.
Còn muốn khác nữa thì chưa hiểu.
Dạ Em muốn tạo 1 cái Function Dạng Filter2Darray của tác giả ndu để làm việc này. Còn nếu Code thì em sẽ sử dụng thêm 1 cột phụ. Sau Đó Dùng Mảng để trích xuất dữ liệu theo điều kiện ở cột phụ sang cái này thì em đã làm được rồi. Tuy Nhiên em muốn là Tạo 1 Function để làm việc này anh ạ !
 
Upvote 0
Dạ Em muốn tạo 1 cái Function Dạng Filter2Darray của tác giả ndu để làm việc này. Còn nếu Code thì em sẽ sử dụng thêm 1 cột phụ. Sau Đó Dùng Mảng để trích xuất dữ liệu theo điều kiện ở cột phụ sang cái này thì em đã làm được rồi. Tuy Nhiên em muốn là Tạo 1 Function để làm việc này anh ạ !
Mỗi cái CountIf() mà máy chạy ỳ ạch, Viết 1 Function cũng ỳ ạch vậy thôi.
Nếu Sub thì có thể nhanh một tý.
 
Upvote 0
Function chỉ cho gán giá trị vào ô đang gọi hàm, nếu bạn muốn gán kết quả vào nhiều ô thì phải dùng công thức mảng, dữ liệu nhiều dễ treo máy. Làm phương pháp nào cũng được miễn ra kết quả, cần gì phải sử dụng những cái mình không quen.
 
Upvote 0
Function chỉ cho gán giá trị vào ô đang gọi hàm, nếu bạn muốn gán kết quả vào nhiều ô thì phải dùng công thức mảng, dữ liệu nhiều dễ treo máy. Làm phương pháp nào cũng được miễn ra kết quả, cần gì phải sử dụng những cái mình không quen.
Dạ em muốn thử nghiệm chút anh ạ !
Bài đã được tự động gộp:

Mỗi cái CountIf() mà máy chạy ỳ ạch, Viết 1 Function cũng ỳ ạch vậy thôi.
Nếu Sub thì có thể nhanh một tý.
Dạ Vâng ạ. Em vẫn muốn thử chút dạng function sau đó gán vào code xem tốc độ có nhanh hơn không !
 
Upvote 0
Dạ em muốn thử nghiệm chút anh ạ !
Bài đã được tự động gộp:


Dạ Vâng ạ. Em vẫn muốn thử chút dạng function sau đó gán vào code xem tốc độ có nhanh hơn không !
Tôi thì không dám thử, mở file có CountIf() của bạn nó quay cả buổi, viết hàm sao bằng anh Bill, treo máy tội nghiệp lắm.
Nếu muốn Sub thì xem file này.
 

File đính kèm

  • ArrayList_1.rar
    979.8 KB · Đọc: 22
Upvote 0
Cố lên gái ơi! Đã chơi là phải chơi tới bến luôn nhá! Làm sao mà có thể tìm được theo kiểu n cột ý, 2 3 cột thì không ổn tẹo nào đâu.
Chơi tới bến cũng được thôi, nhưng phải biết chơi gì.

Đọc Array List, Filter2Darray nhưng tôi không hiểu nó dính dáng gì tới bài này.
Nếu là LỌC vd. các hàng thỏa điều kiện code = AB002 và/hoặc ngày = 2016-11-06 thì Filter2Darray (2 đk thì gọi 2 lần, hoặc cải tiến hàm) rồi. Vì lúc đó code và/hoặc ngày là điều kiện, là tiêu chí. Đằng này là "xét code (I1 = x) và/hoặc ngày (J1 = x)" thì đâu có thể dùng Filter2Darray? Chắc người hỏi cũng chả hiểu triết lý của Filter2Darray là gì.

Lúc đầu tôi tưởng là GỘP (gộp chứ không phải LỌC - filter) các dòng trùng code và/hoặc ngày với số lượng là tổng số lượng của các dòng GỘP. Nhưng khi đọc tới trường hợp có cả K1 = x thì chịu không hiểu. Vì lúc đó khi GỘP thì cột Quantity =??? Và lúc đó ý nghĩa của mỗi dòng kết quả là gì?

Nhiều khi đọc mà không hiểu người "bên kia" ở độ tuổi nào. Chả nhẽ "phát biểu" ý nghĩ của chính mình khó thế sao. Và họ sẽ giao tiếp với mọi người trong cuộc sống hàng ngày thế nào.

Cùng lắm nếu không biết nói lên ý nghĩ của chính mình thì ít ra cũng nên đính kèm tập tin với khoảng vài chục dòng dữ liệu đa dạng - vài chục chứ không phải vài hoặc trăm nghìn - và nhất thiết phải có kết quả mong đợi để "người ta" còn có cơ sở nào đó để đoán mò. Đính kèm tập tin hàng trăm nghìn dòng và không có kết quả mong đợi thì cũng như không đính kèm gì cả. Mất công tải và chạy tập tin mà thông tin vẫn là con số 0.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình hiểu đề bài toàn này là vầy:
Bạn í có 1 CSDL đồ sộ từ cột A cho tới cột F
& kèm theo đó là 1 bảng liệt kê các trường (cột) của CSDL đó;

Hễ đánh dấu lên trường nào của bảng thì lọc trùng trường đó;
Nếu đánh dấu cả 3 trường thì lọc ra những dòng trùng nhau ở cả 3 trường (được đánh dấu) đó; Ở đây là lọc toàn bộ dữ liệu thuộc dòng thỏa điều kiện trùng.

Bài này trước khi làm nên tiến hành sắp xếp theo các trường đã chọn (được đánh dấu ở bảng)
Với máy cà tèng của mình chuyện sắp xếp còn là viễn vông thì thua & chào bạn chủ bài đăng mà thôi!

Chúc các bạn tiếp tục trong vui vẻ & thành công!
 
Upvote 0
Chơi tới bến cũng được thôi, nhưng phải biết chơi gì.

Đọc Array List, Filter2Darray nhưng tôi không hiểu nó dính dáng gì tới bài này.
Nếu là LỌC vd. các hàng thỏa điều kiện code = AB002 và/hoặc ngày = 2016-11-06 thì Filter2Darray (2 đk thì gọi 2 lần, hoặc cải tiến hàm) rồi. Vì lúc đó code và/hoặc ngày là điều kiện, là tiêu chí. Đằng này là "xét code (I1 = x) và/hoặc ngày (J1 = x)" thì đâu có thể dùng Filter2Darray? Chắc người hỏi cũng chả hiểu triết lý của Filter2Darray là gì.

Lúc đầu tôi tưởng là GỘP (gộp chứ không phải LỌC - filter) các dòng trùng code và/hoặc ngày với số lượng là tổng số lượng của các dòng GỘP. Nhưng khi đọc tới trường hợp có cả K1 = x thì chịu không hiểu. Vì lúc đó khi GỘP thì cột Quantity =??? Và lúc đó ý nghĩa của mỗi dòng kết quả là gì?

Nhiều khi đọc mà không hiểu người "bên kia" ở độ tuổi nào. Chả nhẽ "phát biểu" ý nghĩ của chính mình khó thế sao. Và họ sẽ giao tiếp với mọi người trong cuộc sống hàng ngày thế nào.

Cùng lắm nếu không biết nói lên ý nghĩ của chính mình thì ít ra cũng nên đính kèm tập tin với khoảng vài chục dòng dữ liệu đa dạng - vài chục chứ không phải vài hoặc trăm nghìn - và nhất thiết phải có kết quả mong đợi để "người ta" còn có cơ sở nào đó để đoán mò. Đính kèm tập tin hàng trăm nghìn dòng và không có kết quả mong đợi thì cũng như không đính kèm gì cả. Mất công tải và chạy tập tin mà thông tin vẫn là con số 0.
Em cảm ơn anh đã góp ý về vấn đề đặt bài và kết quả tạo ra. Thật sự cách đặt vấn đề của em chưa được gẫy gọn. Em mong sự giúp đỡ của anh và diễn đàn
Bài đã được tự động gộp:

Mình hiểu đề bài toàn này là vầy:
Bạn í có 1 CSDL đồ sộ từ cột A cho tới cột F
& kèm theo đó là 1 bảng liệt kê các trường (cột) của CSDL đó;

Hễ đánh dấu lên trường nào của bảng thì lọc trùng trường đó;
Nếu đánh dấu cả 3 trường thì lọc ra những dòng trùng nhau ở cả 3 trường (được đánh dấu) đó; Ở đây là lọc toàn bộ dữ liệu thuộc dòng thỏa điều kiện trùng.

Bài này trước khi làm nên tiến hành sắp xếp theo các trường đã chọn (được đánh dấu ở bảng)
Với máy cà tèng của mình chuyện sắp xếp còn là viễn vông thì thua & chào bạn chủ bài đăng mà thôi!

Chúc các bạn tiếp tục trong vui vẻ & thành công!
Em cảm ơn anh. Vấn đề của em đúng như anh nói anh ạ !
 
Upvote 0
Em cảm ơn anh đã góp ý về vấn đề đặt bài và kết quả tạo ra. Thật sự cách đặt vấn đề của em chưa được gẫy gọn. Em mong sự giúp đỡ của anh và diễn đàn
Bài đã được tự động gộp:


Em cảm ơn anh. Vấn đề của em đúng như anh nói anh ạ !
- Sắp xếp mảng theo các tiêu chí lọc
- Cho vòng lặp i duyệt từ đầu đến cuối mảng
- Nếu dòng i = dòng i + 1 (theo tiêu chí lọc) thì
+ Ghi dòng i vào mảng kết quả
+ bCheck = True
- Ngược lại
+ Nếu bCheck = True
-- Ghi dòng i vào mảng kết quả
+ bCheck = False
 
Upvote 0
- Sắp xếp mảng theo các tiêu chí lọc
- Cho vòng lặp i duyệt từ đầu đến cuối mảng
- Nếu dòng i = dòng i + 1 (theo tiêu chí lọc) thì
+ Ghi dòng i vào mảng kết quả
+ bCheck = True
- Ngược lại
+ Nếu bCheck = True
-- Ghi dòng i vào mảng kết quả
+ bCheck = False
Em Cảm ơn anh ạ !. Với cách này thì sẽ không hạn chế theo tiêu chí lọc ?
 
Upvote 0
Bạn muốn dùng function thì phải dùng công thức mảng hoặc phải chạy hàm 100000 lần dễ treo máy vì vậy nên dùng Sub.
Với dữ liệu lớn có lẽ bạn nên quan tâm đến tràn bộ nhớ và tốc độ ở mức chấp nhận được là chính chứ không phải dùng công cụ gì cho đẹp, dữ liệu rất lớn thì filter cũng thất bại và không đưa hết được vào mảng. Vì vậy nếu đây là công việc thì mình nghĩ bạn đưa dữ liệu thật lên, nếu bí mật thì có thể sửa lại cho khỏi lộ hàng.
 
Upvote 0
Bạn muốn dùng function thì phải dùng công thức mảng hoặc phải chạy hàm 100000 lần dễ treo máy vì vậy nên dùng Sub.
Với dữ liệu lớn có lẽ bạn nên quan tâm đến tràn bộ nhớ và tốc độ ở mức chấp nhận được là chính chứ không phải dùng công cụ gì cho đẹp, dữ liệu rất lớn thì filter cũng thất bại và không đưa hết được vào mảng. Vì vậy nếu đây là công việc thì mình nghĩ bạn đưa dữ liệu thật lên, nếu bí mật thì có thể sửa lại cho khỏi lộ hàng.
Vâng. Em sẽ sửa thành sub. Đối với phần dữ liệu thật và dữ liệu em đưa lên đều tương đương anh ạ.
 
Upvote 0
Web KT
Back
Top Bottom