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
Mình làm bằng VBA. Bạn xem thử fileAnh 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.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 đó ạ.
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!!!Chép lại dữ liệu vào sheet Du lieu.
Sang sheet KQ loc click nút màu xanh xanh.
Mình kiểm tra kỹ rồi mới làm thế. Híc!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!!!
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 đượcMì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.
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
Có hai bài về tách điểm thi này rồi.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: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![]()
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
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 ạAnh thử code này xem:
Cột I là tính tổng điểm các môn có trong cột L.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
P/s: Có bạn TRƯƠNG THỊ KHÁNH LY thi môn địa lý 2 lần!!!
Em cảm ơn ạ!Mình làm bằng VBA. Bạn xem thử file
Em cảm ơn nhiều ạ!Chép lại dữ liệu vào sheet Du lieu.
Sang sheet KQ loc click nút màu xanh xanh.
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 ạ.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ữ liệu ngày/tháng/năm sinh sai ở nhiều thí sinh lắm đó.Em cảm ơn nhiều ạ!
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à xongAnh ơ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 ạ.
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ữ 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
Xem tình hình dzư nào để nộp hồ sơ hử?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 saoXem tình hình dzư nào để nộp hồ sơ hử?![]()
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ìnhDạ vâng anh, em đang lo quá, ngày nào cũng lên coi tình hình ra sao![]()