Xuất vị trí tương đối của nhiều ô theo nhiều điều kiện.

Liên hệ QC

ghostriderxxx

Thành viên mới
Tham gia
23/6/14
Bài viết
9
Được thích
0
Chào mọi người, em có 1 thắc mắc muốn nhờ mọi người giải đáp!$@!!. Em muốn tìm vị trí (STT) của những học sinh có điểm Toán >8, sau đó từ vị trí em lấy dc giá trị điểm và đem tính trung bình cộng thì em phải làm như thế nào? Mong mọi người giúp đỡ, em xin chân thành cảm ơn!}}}}}
 

File đính kèm

  • hocsinh.xlsx
    9.1 KB · Đọc: 11
Chào mọi người, em có 1 thắc mắc muốn nhờ mọi người giải đáp!$@!!. Em muốn tìm vị trí (STT) của những học sinh có điểm Toán >8, sau đó từ vị trí em lấy dc giá trị điểm và đem tính trung bình cộng thì em phải làm như thế nào? Mong mọi người giúp đỡ, em xin chân thành cảm ơn!}}}}}
Nếu chỉ tính trung bình cộng có điều kiện thì có thể dùng:
B23 =AVERAGEIF(D3:D17,">8")
 
Chào mọi người, em có 1 thắc mắc muốn nhờ mọi người giải đáp!$@!!. Em muốn tìm vị trí (STT) của những học sinh có điểm Toán >8, sau đó từ vị trí em lấy dc giá trị điểm và đem tính trung bình cộng thì em phải làm như thế nào? Mong mọi người giúp đỡ, em xin chân thành cảm ơn!}}}}}
Nếu dùng VBA thì yêu cầu này giải quyết đơn giản thôi! Nếu bạn đồng ý ta tính tiếp.
 
vâng dùng vba cũng dc ạ :).
Copy đoạn code này vào:
Mã:
Public Sub join()
Dim i As Long, rng As Range
Set rng = Sheet1.Range("A3:D" & Sheet1.Range("D65536").End(xlUp).Row)
For i = 1 To rng.Rows.Count
If rng(i, 4) > 8 Then
noi = noi & rng(i, 1) & [COLOR=#ff0000][B]" "[/B][/COLOR]
End If
Next i
Sheet1.Range("[COLOR=#ff0000][B]K2[/B][/COLOR]") = noi
Sheet1.Range("[COLOR=#ff0000][B]L2[/B][/COLOR]") = Application.WorksheetFunction.AverageIf(Sheet1.Range("D3:D" & Sheet1.Range("D65536").End(xlUp).Row), ">8")
End Sub
Chú ý 3 chỗ màu đỏ:
+ Dấu đỏ thứ nhất là dấu phân cách, ở đây tôi để khoảng trắng bạn có thể thay bằng dấu ";" hoặc dấu ","
+ Dấu đỏ thứ 2 và 3 là địa chỉ ô chứa kết quả bạn có thể thay đổi.
...................................................................................
Nhấn nút xuất xem kết quả nhé!
 

File đính kèm

  • hocsinh.xlsm
    19.4 KB · Đọc: 10
Lần chỉnh sửa cuối:
Copy đoạn code này vào:
Mã:
Public Sub join()
Dim i As Long, rng As Range
Set rng = Sheet1.Range("A3:D" & Sheet1.Range("D65536").End(xlUp).Row)
For i = 1 To rng.Rows.Count
If rng(i, 4) > 8 Then
noi = noi & rng(i, 1) & [COLOR=#ff0000][B]" "[/B][/COLOR]
End If
Next i
Sheet1.Range("[COLOR=#ff0000][B]K2[/B][/COLOR]") = noi
Sheet1.Range("[COLOR=#ff0000][B]L2[/B][/COLOR]") = Application.WorksheetFunction.AverageIf(Sheet1.Range("D3:D" & Sheet1.Range("D65536").End(xlUp).Row), ">8")
End Sub
Chú ý 3 chỗ màu đỏ:
+ Dấu đỏ thứ nhất là dấu phân cách, ở đây tôi để khoảng trắng bạn có thể thay bằng dấu ";" hoặc dấu ","
+ Dấu đỏ thứ 2 và 3 là địa chỉ ô chứa kết quả bạn có thể thay đổi.
...................................................................................
Nhấn nút xuất xem kết quả nhé!
dạ vâng em cảm ơn bác nhiều ạ }}}}}! Nhưng có cách nào chỉ cần paste giá trị vào 1 bảng thì nó tự xuất ra 2 thông số trên mà không cần bấm "XUẤT" không ạ? Do em làm nhiều lớp đôi khi sửa điểm sợ có khi quên bấm :(. Nếu được em xin chân thành cảm ơn ạ :)
 
Lần chỉnh sửa cuối:
dạ vâng em cảm ơn bác nhiều ạ }}}}}! Nhưng có cách nào chỉ cần paste giá trị vào 1 bảng thì nó tự xuất ra 2 thông số trên mà không cần bấm "XUẤT" không ạ? Do em làm nhiều lớp sợ có khi quên bấm :(. Nếu được em xin chân thành cảm ơn ạ :)
Thay thủ tục trên bằng hàm là ok thôi.
 
em thay bằng =kq(D3:D17," ") nhưng nó báo lỗi là sao ạ?
Tôi dùng sự kiện Worksheet_Change, bạn copy đoạn code này cho vào sheet1 nhé!
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long, d As Long, noi As String, rng As Range, tmp As Long
    Set rng = Sheet1.Range("A3:D" & Sheet1.Range("D65536").End(xlUp).Row)
If Not Intersect(Target, [A3:D1000]) Is Nothing Then
    For i = 1 To rng.Rows.Count
        If rng(i, 4) > 8 Then
            noi = noi & rng(i, 1) & " "
        End If
Next i
        Sheet1.Range("K2") = noi
End If
End Sub
 
Web KT
Back
Top Bottom