Tìm giá trị cao nhất trong cột theo ô tương ứng

Liên hệ QC

peter_george

Thành viên mới
Tham gia
21/7/12
Bài viết
2
Được thích
0
Chào mọi người, em có vấn đề nhờ mọi người tư vấn giúp. Đây là bảng ví dụ:
Capture.PNG

Chẳng là em đang muốn làm cái bảng điểm ở trường. Do theo quy chế tín chỉ nên SV có quyền học 1 môn nhiều lần, điểm TB của lần học nào cao nhất sẽ được lấy để tính GPA (điểm TB tích lũy). Như theo ví dụ trên, môn 1 được học 3 lần, trong đó lần học thứ 2 (ô B5) có điểm TB cao nhất trong 3 lần học. Tương tự môn 2 được học 2 lần, lần học thứ 2 (ô B6) có điểm TB cao nhất.

Câu hỏi của em là: em muốn tìm giá trị điểm lớn nhất trong cột B tương ứng theo môn học trong cột A. Cụ thể với môn 1, em cần tìm giá trị lớn nhất trong số các giá trị tương ứng với môn 1 ở cột B. Theo ví dụ trên thì giá trị trả về mong muốn là:
  • Môn 1: 2.8
  • Môn 2: 3.6

Em đã thử dùng PivotTable (sau 1 hồi mò mẫm), đáp ứng được yêu cầu của em nhưng PivotTable chỉ là dữ liệu tĩnh (nếu bảng dữ liệu thô có thay đổi thì lại phải tạo 1 cái pivottable khác). Giả sử SV học tiếp môn 1 lần thứ 4 với điểm TB là 3.8 (lớn nhất trong tất cả các lần học) thì sẽ lấy điểm của lần học thứ 4. Do đó em cần 1 phương pháp mang tính "động" hơn. Em có xem qua bài về hàm DMax trên forum mình nhưng chưa biết áp dụng vào bảng của em như thế nào.

Mọi người giúp em giải quyết vấn đề này nha, em cảm ơn rất nhiều :)
 

File đính kèm

  • Bang diem vi du.xls
    24 KB · Đọc: 46
Lần chỉnh sửa cuối:
Cách 1: Sử dụng hàm mảng:
1. Tạo 2 name động:
Mã:
Mon=OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A:$A)-1)
Diem=OFFSET(Mon,,1)
2. Tạo bảng thống kê có dạng:
|F|G
1|Môn học|Điểm cao nhất
2|Môn 1|
3|Môn 2|
4|Môn 3|
Sử dụng công thức mảng cho ô G2 như sau và fill xuống cho cả bảng thống kê:
Mã:
=MAX(IF(Mon=F2,Diem,""))
(nhớ kết thúc bằng tổ hợp Ctrl+Shift+Enter)
Với cách này, có thể thay đổi điểm hoặc nhập thêm mới vào danh sách ở cột A, B (nhớ nhập liên tục) thì kết quả ở bảng thống kê tự động cập nhật.

Cách 2: Sử dụng PivotTable với Data source động:
1. Tạo name động:
Mã:
DuLieu=OFFSET(Sheet1!$A$1,,,COUNTA(Sheet1!$A:$A),2)
2. Tạo PivotTable (việc này bạn biết làm rồi)
Với cách này, mỗi lần thay đổi điểm hoặc nhập thêm mới vào danh sách ở cột A, B (nhớ nhập liên tục) thì chỉ cần click phải vào PivotTable và chọn Refresh là kết quả sẽ được cập nhật.

Bạn tham khảo trong file nhé.
 

File đính kèm

  • Bang diem vi du.rar
    4.3 KB · Đọc: 93
Cách 1: Sử dụng hàm mảng:
1. Tạo 2 name động:
Mã:
Mon=OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A:$A)-1)
Diem=OFFSET(Mon,,1)
2. Tạo bảng thống kê có dạng:
|F|G
1|Môn học|Điểm cao nhất
2|Môn 1|
3|Môn 2|
4|Môn 3|
Sử dụng công thức mảng cho ô G2 như sau và fill xuống cho cả bảng thống kê:
Mã:
=MAX(IF(Mon=F2,Diem,""))
(nhớ kết thúc bằng tổ hợp Ctrl+Shift+Enter)
Với cách này, có thể thay đổi điểm hoặc nhập thêm mới vào danh sách ở cột A, B (nhớ nhập liên tục) thì kết quả ở bảng thống kê tự động cập nhật.

Cách 2: Sử dụng PivotTable với Data source động:
1. Tạo name động:
Mã:
DuLieu=OFFSET(Sheet1!$A$1,,,COUNTA(Sheet1!$A:$A),2)
2. Tạo PivotTable (việc này bạn biết làm rồi)
Với cách này, mỗi lần thay đổi điểm hoặc nhập thêm mới vào danh sách ở cột A, B (nhớ nhập liên tục) thì chỉ cần click phải vào PivotTable và chọn Refresh là kết quả sẽ được cập nhật.

Bạn tham khảo trong file nhé.
Cách 1: Nghĩa Phúc hà tiện quá vậy. =MAX(IF(Mon=F2;Diem;"")) Ctrl+Shift+Enter.
Đã có 2 Name thì 3 Name cũng có sao đâu?
Thêm 1 Name Diem_TB = IF(Mon=$F2;Diem;"")
Để cho người khác khỏi phải Ctrl+Shift+Enter, chỉ cần:
=Max(Diem_TB) rồi Enter thôi.
Thọt lét cái, hổng nhột thì thôi. Ẹc...
 
^^ cảm ơn hai anh nhiều ạ, em dùng cách 1 của anh nghiaphuc thấy ổn nhất, không cần phải thao tác gì thêm, chỉ cần nhập entry mới là nó tự động tính toán lại :)
 
Cách 1: Sử dụng hàm mảng:
1. Tạo 2 name động:
Mã:
Mon=OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A:$A)-1)
Diem=OFFSET(Mon,,1)
2. Tạo bảng thống kê có dạng:
|F|G
1|Môn học|Điểm cao nhất
2|Môn 1|
3|Môn 2|
4|Môn 3|
Sử dụng công thức mảng cho ô G2 như sau và fill xuống cho cả bảng thống kê:
Mã:
=MAX(IF(Mon=F2,Diem,""))
(nhớ kết thúc bằng tổ hợp Ctrl+Shift+Enter)
Với cách này, có thể thay đổi điểm hoặc nhập thêm mới vào danh sách ở cột A, B (nhớ nhập liên tục) thì kết quả ở bảng thống kê tự động cập nhật.

Cách 2: Sử dụng PivotTable với Data source động:
1. Tạo name động:
Mã:
DuLieu=OFFSET(Sheet1!$A$1,,,COUNTA(Sheet1!$A:$A),2)
2. Tạo PivotTable (việc này bạn biết làm rồi)
Với cách này, mỗi lần thay đổi điểm hoặc nhập thêm mới vào danh sách ở cột A, B (nhớ nhập liên tục) thì chỉ cần click phải vào PivotTable và chọn Refresh là kết quả sẽ được cập nhật.

Bạn tham khảo trong file nhé.
CÒN 1 CÁCH NỮA MÀ KHI DÙNG PIVOT TABLE CHẲNG CẦN DÙNG NAME ĐỘNG MÀ VẪN OK. ĐÓ LÀ TẠO 1 TABLE SAU ĐÓ Data source SẼ LẤY LUÔN TABLE .KHI GÕ DỮ LIỆU THÌ VÙNG DATA SOURE CŨNG DI CHUYỂN THEO NHƯ NAME ĐỘNG
 

File đính kèm

  • Bang diem vi duLDT.xls
    20.5 KB · Đọc: 50
Sẵn đây cho mình hỏi thêm cái này.
attachment.php


Mình muốn tìm giá trị Max của cột B ra B7 rồi sau đó cho hiển thị kết quả tương ứng vào A7 thì làm ntn ? Thanks
VD như hình trên: Giá trị Max là 3,6(B6) sẽ nằm ở B7, tương ứng với Môn 2(A6) cho ra kết quả ở A7.
 
Web KT
Back
Top Bottom