Tim tên cột

Liên hệ QC

pehastuxe

Thành viên mới
Tham gia
28/10/06
Bài viết
7
Được thích
1
Xin mọi người giúp đỡ!
Tôi có một bảng điểm trung bình 11 môn học: Toán, Lý, Hoá, Sinh, ...
Học sinh nếu có điểm TB môn nào dưới 3.5 thì buộc phải thi lại môn đó.
Vấn đề đặt ra là lập một hàm chỉ ra môn mà học sinh phải thi lại theo điều kiện trên. Mong mọi người chỉ giúp, rất cảm ơn mọi người nhé!
 
Một cách đơn giản là dùng Format/Conditional Formatting... để đánh dấu môn nào < 3.5 điểm.

Còn triệt để hơn thì dùng hàm, mời các bạn giải quyết nhé.
 
Cái này thì có gì đâu bạnChỉ cần một người học qua về excel là làm được rồi màBạn có thể dùng if, ..lookup, lọc, định dạng điều kiệu...còn muốn xịn hơn thì viết luôn một hàm, bác up file lên đi em viết giúp cho.Chúc thành công!
 
Rất cảm ơn 2 bạn đã phúc đáp. Ý của mình lập một hàm (Nếu có thể) viết ra môn nào học sinh đó phải thi lại ấy! Ví dụ: Ở một hàng nào đó có 2 ô <3.5 thì hàm phải chỉ ra đó là môn nào và môn nào. Các bạn chỉ giúp rõ ràng hơn nhé!
 
pehastuxe đã viết:
Xin mọi người giúp đỡ!
Tôi có một bảng điểm trung bình 11 môn học: Toán, Lý, Hoá, Sinh, ...
Học sinh nếu có điểm TB môn nào dưới 3.5 thì buộc phải thi lại môn đó.
Vấn đề đặt ra là lập một hàm chỉ ra môn mà học sinh phải thi lại theo điều kiện trên. Mong mọi người chỉ giúp, rất cảm ơn mọi người nhé!


Bạn sử dùng hàm VBA sau xem sao, trong đó hàm có 2 tham số
+ mh : là tham số vùng tên các ô liên tiếp chứa tên môn học (mỗi mon học 1 ô)

+ tb : là tham số vùng tên các ô liên tiếp chứa điểm tb môn học tương ứng

Mã:
Public Function thilai(mh, tb) As String
     Dim tl As String
     Dim i, n As Integer
     n = 4:     k = 0:     tl = ""
 
     For i = 1 To n
         If tb(i) <= 3.5 Then
            k = k + 1
            If k > 1 Then tl = tl + ", "
            tl = tl + mh(i)
         End If
     Next i
     thilai = tl
 
End Function

2e6tb.jpg


hình trên chỉ rõ cách sử dụng trong đoó chỉ công thức của ô F5
chúc thành công
 
Lần chỉnh sửa cuối:
Hàm của bạn tigertiger khá hay tuy nhiên bạn không nên cố định tham số n, bạn có thể lấy n bằng cách đếm số cột của mh
n = mh.Columns.Count
Khi khai báo hàm bạn cũng nên khai báo luôn kiểu của tham số
mh as range, tb as range
như vậy VBE sẽ hỗ trợ viết mã tốt hơn

Chúc thành công
 
Xin cám ơn bạn; đúng là tôi đã quên mất khi cố định n.
Nhưng theo tôi dùng mh.Cells.Count tốt hơn vì khi đó có thể dùng công thức cho cả Cột & Hàng

Nội dung sửa như sau:

Mã:
Public Function thilai(mh, tb As Range) As String
     Dim tl As String
     Dim i, n,k As Integer
     n = mh.Cells.Count:     k = 0:     tl = ""
 
     For i = 1 To n
         If tb(i) <= 3.5 Then
            k = k + 1
            If k > 1 Then tl = tl + ", "
            tl = tl + mh(i)
         End If
     Next i
     thilai = tl
 
End Function
 
Lần chỉnh sửa cuối:
Xin cám ơn bạn; đúng là tôi đã quên mất khi cố định n.
Nhưng theo tôi dùng mh.Cells.Count tốt hơn vì khi đó có thể dùng công thức cho cả Cột & Hàng

Đúng rồi đây là một ý tưởng hay

Còn nếu muốn hàm gọn hơn nữa bạn có thể không cần dùng k
thay đoạn mã
k = k + 1
If k > 1 Then tl = tl + ", "

Bằng

If tl <> "" Then tl = tl + ", "
 
Web KT
Back
Top Bottom