Thách đố về cách lọc tìm dữ liệu (2 người xem)

Liên hệ QC

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

hoangdanh282vn

Nguyễn Cảnh Hoàng Danh
Thành viên danh dự
Tham gia
21/12/07
Bài viết
1,902
Được thích
5,303
Nghề nghiệp
Kinh doanh các mặt hàng văn phòng phẩm
Mình có một thách đố về việc lọc tìm dữ liệu như sau :
Mình có một list danh sách họ và tên học sinh ở cột A, Cột B chứa xếp loại của từng học sinh.
Yêu cầu là lọc ra một list danh sách các em có xếp loại thỏa mãn theo điều kiện chứa trong ô E1 (giỏi, khá, trung bình, yếu ) và sắp xếp list này theo thứ tự A,B,C...
 

File đính kèm

chài ai khó thía!
cho E hỏi làm bài này bằng cách chi? E tạo thêm vài bảng phụ được không?
Phùng Tiến Đạt và Phạm Tiến Đạt ai sắp trước? Nhân và Nhan, ai sắp trước?
 
Giải thích rõ hơn tí đồng chí ơi!
Lộc bằng công thức hay bằng VBA hay là gì?
 
Và còn thiếu một số thứ nữa: Thời gian làm bài, giải thưởng ...
 
Mình có một thách đố về việc lọc tìm dữ liệu như sau :
Mình có một list danh sách họ và tên học sinh ở cột A, Cột B chứa xếp loại của từng học sinh.
Yêu cầu là lọc ra một list danh sách các em có xếp loại thỏa mãn theo điều kiện chứa trong ô E1 (giỏi, khá, trung bình, yếu ) và sắp xếp list này theo thứ tự A,B,C...
  1. Hoàn toàn có thể làm bằng công thức (có điều phải thêm rất nhiều cột phụ)
    1. Lọc ra danh sách thoa mãn điều kiện
    2. Tách lấy phần TÊN
    3. Dùng hàm Tách TÊN thành các nguyên âm, phụ âm
    4. Lấy mã của các nguyên âm, phụ âm để làm dữ liệu SORT theo A B C
    5. Lấy danh sách sau khi đã SORT
  2. Dùng VBA thì đơn giản hơn nhiều (nhưng mà em lại mù tịt)
 
Lần chỉnh sửa cuối:
Thực ra cái này chỉ khó 1 tí là sắp xếp tên tiếng Việt theo trật tự ABC thôi. Còn cái khác thì đơn giản. Tuy nhiên có 1 có cách rất đơn giản thế này: Bạn cài bộ Viet Key Office2000 (thực chất là 1 macro) trong đó có phần sắp xếp danh sách tiếng Việt. Sau đó dùng Auto Filter rồi chọn điều kiện lọc là xong. Ko cần phải dùng hàm nào khác. Chúc vui
 
Thực ra cái này chỉ khó 1 tí là sắp xếp tên tiếng Việt theo trật tự ABC thôi. Còn cái khác thì đơn giản. Tuy nhiên có 1 có cách rất đơn giản thế này: Bạn cài bộ Viet Key Office2000 (thực chất là 1 macro) trong đó có phần sắp xếp danh sách tiếng Việt. Sau đó dùng Auto Filter rồi chọn điều kiện lọc là xong. Ko cần phải dùng hàm nào khác. Chúc vui
Chắc không phải vậy chứ,tác giả của bài toán này không đưa ra đơn giản như vậy.Nếu chỉ soft,lọc bằng auto filter thì đơn giản rồi nhưng không lẽ danh sách đảo lộn hết cả sao. Mình mới chỉ lọc danh sách ra theo yêu cầu từng loại nhưng soft thì chưa nghĩ ra,mình sẽ nghĩ tiếp nhưng đưa thử file lên mọi người tham khảo
 

File đính kèm

Cho mình giải thích thêm vì hôm qua gấp quá nên chưa giải thích rõ.
Thứ nhất là không dùng VBA.
Thứ hai là không dùng cột phụ (có chức công thức) để phụ giúp thao tác.
Thứ ba là sort theo 2 ký tự đầu của tên (càng nhiều ký tự càng phức tạp nên chỉ lấy 2). Nếu trùng nhau thì ưu tiên lấy thứ tự hàng nhỏ nhất.
Bài này có thể áp dụng cho nhiều điều kiện trích lọc chứ không riêng gì xếp loại không. Nhưng bài trên chỉ lấy 1 điều kiện.
Ngoài ra, các Bác VBA hay các bạn có thể dùng cột phụ để tìm ra giải pháp về tốc độ
Thân!

Và còn thiếu một số thứ nữa: Thời gian làm bài, giải thưởng ...

Thời gian cuối là trước 3 ngày sinh nhật GPE
Giải thường là một chầu Cafe để giao lưu thân tình.
Thân
 
Chỉnh sửa lần cuối bởi điều hành viên:
Giải pháp thế này sẽ đơn giản
  1. Tách lấy phần tên rồi lại tách lấy 2 ký tự đầu của tên
  2. Sort data gốc trước dựa trên 2 ký tự đầu tiên
  3. Dùng công thức lọc ra danh sách thỏa mãn điều kiện
 
Giải pháp thế này sẽ đơn giản
  1. Tách lấy phần tên rồi lại tách lấy 2 ký tự đầu của tên
  2. Sort data gốc trước dựa trên 2 ký tự đầu tiên
  3. Dùng công thức lọc ra danh sách thỏa mãn điều kiện
Không được động và database mới Pro. VBA thì anh Chibi đã làm rồi, công thức mới là vấn đề để nói.
 
E dùng cột phụ, sort được hết toàn bộ , ưu tiên: tên ---> họ ---> chử lót
 

File đính kèm

E dùng cột phụ, sort được hết toàn bộ , ưu tiên: tên ---> họ ---> chử lót
bạn ơi xem lại yêu cầu đi
Thứ nhất là không dùng VBA.
Thứ hai là không dùng cột phụ (có chức công thức) để phụ giúp thao tác.
Thứ ba là sort theo 2 ký tự đầu của tên (càng nhiều ký tự càng phức tạp nên chỉ lấy 2). Nếu trùng nhau thì ưu tiên lấy thứ tự hàng nhỏ nhất.
chà,khó quá,mình vẫn chưa giải quyết được
 
E dùng cột phụ, sort được hết toàn bộ , ưu tiên: tên ---> họ ---> chử lót

Một cách làm hay

I- Chưa đúng yêu cầu đề bài
hoangdanh282vn đã viết:
  1. Thứ nhất là không dùng VBA.
  2. Thứ hai là không dùng cột phụ (có chứa công thức) để phụ giúp thao tác.
  3. Thứ ba là sort theo 2 ký tự đầu của tên (càng nhiều ký tự càng phức tạp nên chỉ lấy 2). Nếu trùng nhau thì ưu tiên lấy thứ tự hàng nhỏ nhất.

II- Hãy xem lại
  1. Khi lọc Xếp loại: G các cặp STT: (9; 10); (44; 45); (53; 54) có tên trùng nhau
  2. Khi lọc Xếp loại: K các cặp STT (43; 44) có tên trùng nhau
 
Gửi Danh: tôi thấy trong cột họ và tên ở bảng dữ liệu, đa số các dòng đều có tên cách họ lót 2 khoảng trắng nhưng có một số dòng có tên lại cách họ lót 1 khoảng trắng. Vậy có thể chỉnh sửa dữ liệu cho thống nhất không?????
 
Khi lọc Xếp loại: G các cặp STT: (9; 10); (44; 45); (53; 54) có tên trùng nhau​
  1. Khi lọc Xếp loại: K các cặp STT (43; 44) có tên trùng nhau
Cách làm không sai, nhưng vì excel không thể tính toán được với số quá lớn ---> khi đổi nguyễn minh hoàng và võ viết hoàng ra number thì có sai lệch, nhưng excel lại làm tròn và cho là chúng = nhau
----> bài toán này khó mà thực hiện được
 
Lần chỉnh sửa cuối:
Cách làm không sai, nhưng vì excel không thể tính toán được với số quá lớn ---> khi đổi nguyễn minh hoàng và võ viết hoàng ra number thì có sai lệch, nhưng excel lại làm tròn và cho là chúng = nhau
----> bài toán này khó mà thực hiện được

xem file, mình hiểu cách làm của bạn rồi, nhưng có thể khắc phục số lớn bằng cách ghép các con số thành dạng text
VD: chữ boyxin
match("b",Ma,0)= 20
match("o",Ma,0)= 48
match("y",Ma,0)= 85
match("x",Ma,0)= 84
match("i",Ma,0)= 38
match("n",Ma,0)= 47
thay vì tạo ra số 204885843847 thì ta tạo thành dạng text 204885843847
Bạn thử xem có được không?
 
xem file, mình hiểu cách làm của bạn rồi, nhưng có thể khắc phục số lớn bằng cách ghép các con số thành dạng text

Bạn thử xem có được không?
Đã thử ---> Không được!
Tạm thời sửa lại:
Chia cột phụ cho 10^12 để giãm nhỏ số ---> cộng mổi cell với ROW()/10000 ---> giãi quyết được tình trạng tên gần trùng ---> Excel hiểu là trùng
Vẩn CP, nếu không thì bó hand.
Dù gì vẩn phải có bảng mã chứ
!!!
 

File đính kèm

Lần chỉnh sửa cuối:
Vậy thì các bác nào thích VBA thì hãy thi về tốc độ và sự đơn giản nhưng tiện lợi vậy. !!!!!!!!???????????
(Bằng UDF, bằng Sub . . )


Thân!
 
Đúng là thách đố. Tôi sẽ chờ kết quả xem nó là cái gì? Ứng dụng vào đâu?
 
Web KT

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

Back
Top Bottom