Xin giúp em lọc giá trị của file này với ạ! (1 người xem)

Liên hệ QC

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

binhpham03

Thành viên mới
Tham gia
11/7/17
Bài viết
7
Được thích
3
Giới tính
Nam
Anh chị trong group có cách nào giúp em, trong cột DIEM_THI lọc giúp em những bạn nào thi 3 môn Ngữ văn, Lịch Sử với Địa lí với ạ. Có thể có những môn Toán hoặc Tiếng anh gì cũng được ạ. Nhưng bắt buộc phải có 3 môn đó ạ.
 

File đính kèm

Anh chị trong group có cách nào giúp em, trong cột DIEM_THI lọc giúp em những bạn nào thi 3 môn Ngữ văn, Lịch Sử với Địa lí với ạ. Có thể có những môn Toán hoặc Tiếng anh gì cũng được ạ. Nhưng bắt buộc phải có 3 môn đó ạ.
Mình làm bằng VBA. Bạn xem thử file
 

File đính kèm

Anh chị trong group có cách nào giúp em, trong cột DIEM_THI lọc giúp em những bạn nào thi 3 môn Ngữ văn, Lịch Sử với Địa lí với ạ. Có thể có những môn Toán hoặc Tiếng anh gì cũng được ạ. Nhưng bắt buộc phải có 3 môn đó ạ.
Chép lại dữ liệu vào sheet Du lieu.
Sang sheet KQ loc click nút màu xanh xanh.
 

File đính kèm

Em nghĩ like riêng cho từng cái sẽ hợp lý hơn anh ạ, lỡ thứ tự không phải văn*sử*địa thì công thức sẽ code sẽ chạy sai!!!
Mình kiểm tra kỹ rồi mới làm thế. Híc!
Chắc họ nhập điểm theo quy ước thống nhất môn nào trước, môn nào sau.
 
Em góp vui bằng cách dùng Regexp cho bài này:
PHP:
Sub Locdiemthi2()
Dim Arr1, Arr2, num1 As Long, num2 As Long, num3 As Long, spattern As String
Arr1 = Sheet1.Range("A2", Sheet1.Range("A65535").End(3)).Resize(, 8)
spattern = Join(WorksheetFunction.Transpose(Sheet2.Range("L1:L" & Sheet2.[L1000].End(xlUp).Row)), "|")
ReDim Arr2(1 To UBound(Arr1, 1), 1 To 9)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True: .Pattern = spattern
    For num1 = 1 To UBound(Arr1)
        If .Execute(Arr1(num1, 3)).Count > 2 Then
        num2 = num2 + 1
        For num3 = 1 To 8
            Arr2(num2, num3) = Arr1(num1, num3)
        Next num3
    End If
    Next num1
End With
If num2 > 0 Then Sheet2.[A2].Resize(num2, 8) = Arr2
End Sub
 

File đính kèm

Anh tiện giúp bạn ấy tính tổng 3 môn văn, sử ,địa để căn cứ xét tuyển cho nhanh. Em làm mãi mà chưa được (@$%@
Anh thử code này xem:
PHP:
Sub Locdiemthi2()
Dim Arr1, Arr2, num1 As Long, num2 As Long, num3 As Long, num4 As Long, num5 As Double, spattern As String
Arr1 = Sheet1.Range("A2", Sheet1.Range("A65535").End(3)).Resize(, 8)
spattern = "(" & Join(WorksheetFunction.Transpose(Sheet2.Range("L1:L" & Sheet2.[L1000].End(xlUp).Row)), "|") & ")\s*:\s*(\d{1,2}\.\d{1,2})\b"
ReDim Arr2(1 To UBound(Arr1, 1), 1 To 9)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True: .Pattern = spattern
    For num1 = 1 To UBound(Arr1)
    If .Execute(Arr1(num1, 3)).Count > 2 Then
        num2 = num2 + 1
        For num3 = 1 To 8
            Arr2(num2, num3) = Arr1(num1, num3)
        Next num3
        num5 = 0
        For num4 = 0 To .Execute(Arr1(num1, 3)).Count - 1
            num5 = num5 + Val(.Execute(Arr1(num1, 3)).Item(num4).submatches(1))
        Next num4
        Arr2(num2, 9) = num5
    End If
    Next num1
End With
If num2 > 0 Then Sheet2.[A2].Resize(num2, 9) = Arr2
End Sub
Cột I là tính tổng điểm các môn có trong cột L.
P/s: Có bạn TRƯƠNG THỊ KHÁNH LY thi môn địa lý 2 lần!!!
 

File đính kèm

Anh thử code này xem:
PHP:
Sub Locdiemthi2()
Dim Arr1, Arr2, num1 As Long, num2 As Long, num3 As Long, num4 As Long, num5 As Double, spattern As String
Arr1 = Sheet1.Range("A2", Sheet1.Range("A65535").End(3)).Resize(, 8)
spattern = "(" & Join(WorksheetFunction.Transpose(Sheet2.Range("L1:L" & Sheet2.[L1000].End(xlUp).Row)), "|") & ")\s*:\s*(\d{1,2}\.\d{1,2})\b"
ReDim Arr2(1 To UBound(Arr1, 1), 1 To 9)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True: .Pattern = spattern
    For num1 = 1 To UBound(Arr1)
    If .Execute(Arr1(num1, 3)).Count > 2 Then
        num2 = num2 + 1
        For num3 = 1 To 8
            Arr2(num2, num3) = Arr1(num1, num3)
        Next num3
        num5 = 0
        For num4 = 0 To .Execute(Arr1(num1, 3)).Count - 1
            num5 = num5 + Val(.Execute(Arr1(num1, 3)).Item(num4).submatches(1))
        Next num4
        Arr2(num2, 9) = num5
    End If
    Next num1
End With
If num2 > 0 Then Sheet2.[A2].Resize(num2, 9) = Arr2
End Sub
Cột I là tính tổng điểm các môn có trong cột L.
P/s: Có bạn TRƯƠNG THỊ KHÁNH LY thi môn địa lý 2 lần!!!
Bạn ấy có 2 môn địa là do em đưa vào xem code nó chạy như thế nào. Xong rồi quên không xóa đi anh ạ :D
 
Anh ơi, muốn chạy code đó thì làm sao ạ, anh làm giúp e với, e không rành về excel cho lắm ạ.
Nếu Exel chưa Kích hoạt macro (enable macro) thì bạn kích hoạt nó lên. Rồi tải File của anh befaint hoặc anh eke_rula về rồi nhìn vào có cái nút gì có tên thì bấm vào đó thế là xong :D
 
Dữ liệu ngày/tháng/năm sinh sai ở nhiều thí sinh lắm đó.

SOBAODANH NGAY_SINH
DHU009618 29/02/1993 (Tháng 2/1993 có 28 ngày)
DHU006060 00/05/1998
DHU001821 00/00/1995
DHU005495 00/12/1994

Dạ vâng, cái này em không rõ lắm ạ. Em lấy file trực tiếp từ trên trang điểm thi của Đại học Huế ạ.
 
Dạ vâng anh, em đang lo quá, ngày nào cũng lên coi tình hình ra sao :(
Vậy bạn phải nhờ anh befaint hoặc anh eke_rula viết thêm cho 1 đoạn Code sắp xếp điểm 3 môn từ cao đến thấp và tô đỏ phần tên của mình
Việc còn lại là Copy dữ liệutrên trang điểm thi vào xong bấm nút xem mình đang ở vị trí bao nhiêu thôi :D
 
Web KT

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

Back
Top Bottom