dangngocthuyen
Thành viên thường trực




- Tham gia
- 14/5/08
- Bài viết
- 218
- Được thích
- 11








Bác hỏi bài kiểu này chắc tới tết mới được giúp quá.Mọi người chỉ cần tải về là biết à, em cũng để em cầu trong file ròi... Em không rành nên cũng không biết như thế nào nữa...




Chỉ cần tải về, mở file lên là thấy mà.Bác hỏi bài kiểu này chắc tới tết mới được giúp quá.
Hic, file dữ liệu của bạn nhiều quá, mình giúp bạn phần 1, mấy phần kia thì chịu dữ liệu nhiều quá:Chỉ cần tải về, mở file lên là thấy mà.
- File lớp: đây là file nhập lỗi vi phạm của học sinh.... nhưng phần tính điểm lỗi mình làm thủ công quá... mong mọi người giúp công thức tối ưu hóa, giúp công thức tính tuần tự động
- File Thi đua toàn trường: mọi người giúp lấy dữ liệu từ file lớp đưa vào giúp... không biết kết hợp VLOOK với cái gì nữa.
- File hạnh kiểm thì lấy dữ liệu từ file Thi đua đưa qua: chỉ lấy phần điểm của từng lớp thôi...
Chân thành cảm ơn mọi người


AR9=VLOOKUP(AR$8,INDIRECT("[TCTĐ.xlsx]TCTĐ!B"&MATCH(LOOKUP(2,1/($AR$7:AR$7<>""),$AR$7:AR$7),TCTĐ.xlsx!$C$7:$C$49,)&":E100"),4,0)*C9




Sao nó không hiện gì hết vậy bạnHic, file dữ liệu của bạn nhiều quá, mình giúp bạn phần 1, mấy phần kia thì chịu dữ liệu nhiều quá:
1. File lớp: đây là file nhập lỗi vi phạm của học sinh.... nhưng phần tính điểm lỗi mình làm thủ công quá... mong mọi người giúp công thức tối ưu hóa, giúp công thức tính tuần tự động
CT tại sheet "1" lớp 6A, CT tại AR9:
Fill sang phải rồi fill sang xuống!!!Mã:AR9=VLOOKUP(AR$8,INDIRECT("[TCTĐ.xlsx]TCTĐ!B"&MATCH(LOOKUP(2,1/($AR$7:AR$7<>""),$AR$7:AR$7),TCTĐ.xlsx!$C$7:$C$49,)&":E100"),4,0)*C9
Bạn nhận lại file file TCTĐ, và bỏ file TCTĐ cũ đi, vì mình chỉnh một số cái!!!
Mấy lớp khác bạn làm tương tự!!!
Hiện gì bạn!!!!!!!!!Sao nó không hiện gì hết vậy bạn




Bạn vô xem lại... Mình down 2 file của bạn về... Khi nhập vi phạm vào thì nó không hiển thị gì hếtHiện gì bạn!!!!!!!!!




chỉ làm lại 1 file của 1 lớp, mình tổ chức lại và copy sheet TCTD đưa vào file cho gọn và nếu gởi cho người khác không cần gởi theo một chùm file đi kèm, chỉ gởi 1 file là đủ. nếu không thích thì làm lại file TCTD như mẩu và chọn lại tham chiếu trong các công thức.
các file khác nên thiết kế các ô dùng để tính các bảng khác nằm cùng địa chỉ cột dòng, lúc đó dể dùng công thức hơn, nếu không thì dùng công thức thủ công như của bạn cũng được, kết quả đúng và bạn hiểu là được rồi




bạn xem thử chạy có ổn khôngCảm ơn anh nhiều... Anh có thể giúp giùm cái file Thi đua toàn trường được không, File đó là em cần nhất....




ý bạn là lấy tổng điểm của từng lớp trong từng tuần và đưa vào sheet Xếp loại file xep loai hanh kiem?File của anh Hiếu CD chạy rất ổn.... Mong anh giúp thêm chỗ Tổng hợp của từng em học sinh và lấy điểm qua chỗ xếp loại hạnh kiểm với anh, chỗ lấy điểm từng tuần đó..
File anh chạy rất hay, chỉ cần thêm tuần, bấm vào hình mặt cười là nó tự động lấy điểm.
Chân thành cảm ơn anh rất nhiều.




- File xếp loại hạnh kiểm chỉ cần lấy điểm của từng lớp qua chỗ xếp loại trong file Xếp loại hạnh kiểm đó anh.ý bạn là lấy tổng điểm của từng lớp trong từng tuần và đưa vào sheet Xếp loại file xep loai hanh kiem?
Public Sub XepLoai()
Dim Darr
Dim WbMain As Workbook, FThiDua As Workbook, Fname As String
Dim i, j, CountSh As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error GoTo thoat
Set WbMain = ThisWorkbook
Fname = ThisWorkbook.Path & "\THI DUA TOAN TRUONG.xlsm"
Set FThiDua = Application.Workbooks.Open(Fname)
CountSh = FThiDua.Sheets.Count
For i = 1 To CountSh
With FThiDua.Sheets(i & "")
Darr = .Range("B56", .Range("B65536").End(xlUp)).Resize(, 10)
End With
With WbMain.ActiveSheet
dong = 10: If i > 18 Then dong = 38
cot = (i Mod 18) + 1
For j = 1 To UBound(Darr)
.Cells(dong + j, 1) = Darr(j, 1)
.Cells(dong + j, cot) = Darr(j, 10)
Next j
End With
Next i
thoat:
FThiDua.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub




File Thiduatoantruong đứng ở sheet nào chạy macro cũng đượcChân thảnh cảm ơn anh Hiếu nhiều lắm... Em đã làm được rồi ạ.
Có 1 vấn đề ở đây nữa là file Thiduatoantruong do anh... Khi tạo các sheet khác muốn lấy dữ liệu phải quay lại sheet 1 để chạy macro hả anh???
Anh giúp em 1 vấn đề này nữa nha: Em muốn lấy danh sách HS từng lớp từ file DSHS chung thì dùng công thức gì anh? Để sau này nếu có biến động về mặt sĩ số thì chỉ cần điều chỉnh trong file DSHS thôi....
Chân thành cảm ơn anh nhiều... Chúc anh sức khỏe




File Thiduatoantruong đứng ở sheet nào chạy macro cũng được
công thức lấy tên Hs: ví dụ file 6A.xlsx sheet HK1 ô B9 ='[DSHS.xls]6A'!B5 copy cho các dòng còn lại
các sheet khác dùng công thức tương tự, hoặc lấy trực tiếp từ file 6A: B9 ='HK1'!B9
Lưu ý cách nầy có ưu điểm là tự động cập nhập, nhưng có nhiều rủi ro,
- nếu sửa trong file DSHS thì cột tên các file sẽ tính lại nhưng các cột còn lại vẫn giử nguyên và có thể không đúng với tên HS mới cập nhật
- khi mở file thường Excel yêu cầu update hơi phiền, và gởi file cho người khác thường phải kèm theo file DSHS
mình nghĩ copy và paste thủ công là ổn nhất
công thức như thế nào? bạn gởi lên xem thửEm nhớ có công thức lấy dữ liệu từ file chưa mở, thậm chí không cần bấm update luôn anh... Nhưng áp dụng đối với .xls.... E sửa lại nhưng không nhận đuôi .xlsx... Em không biết phải làm như thế nào nữa...




Đây nè anh... côgn thức lấy điểm và tên của cờ vua đócông thức như thế nào? bạn gởi lên xem thử
bạn phải tìm code hàm tự tạo GetData và copy vào file của bạn rồi sử dụng thôiĐây nè anh... côgn thức lấy điểm và tên của cờ vua đó




mỗi lần mở nó chạy cũng được, trong phần This Work Book bạn chép doạn code nầy vàoCó 1 vấn đề nhỏ mong anh Hiếu xem lại.. File THI ĐUA TOÀN TRƯỜNG đó anh... Có cách nào mở lên là nó tự động chạy macro luôn không anh... Cái ngày nữa anh, nó cứ lấy ngày 29/08/2016 - 04/09/2016 (Tuần 1) không anh... Anh xem và giúp em với
Private Sub Workbook_Open()
Call GPE
End Sub
Set Wb = Application.Workbooks.Open(Fname)
[COLOR=#ff0000] 'Ngay = Wb.Sheets("1").Range("AC5") & " - " & Wb.Sheets("1").Range("AH5")[/COLOR]
For i = 1 To CountSh 'xet tung tuan
[COLOR=#0000ff] Ngay = Wb.Sheets(i & "").Range("AC5") & " - " & Wb.Sheets(i & "").Range("AH5")[/COLOR]
Carr = Wb.Sheets(i & "").Range("AR7:CC7")
t = 8
With WbMain.Sheets(i & "")
.Cells(6, 5) = Ngay




Thì ngay chỗ Tên lớp nó lấy điểm đưa vô luôn anhPublic Sub XepLoai()Dim Darr
Dim WbMain As Workbook, FThiDua As Workbook, Fname As String
Dim i, j, CountSh As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error GoTo thoat
Set WbMain = ThisWorkbook
Fname = ThisWorkbook.Path & "\THI DUA TOAN TRUONG.xlsm"
Set FThiDua = Application.Workbooks.Open(Fname)
CountSh = FThiDua.Sheets.Count
For i = 1 To CountSh
With FThiDua.Sheets(i & "")
Darr = .Range("B56", .Range("B65536").End(xlUp)).Resize(, 10)
End With
With WbMain.ActiveSheet
dong = 10: If i > 18 Then dong = 38
Cot = (i Mod 18) + 1
For j = 1 To UBound(Darr)
.Cells(dong + j, 1) = Darr(j, 1)
.Cells(dong + j, Cot) = Darr(j, 10)
Next j
End With
Next i
thoat:
FThiDua.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Cảm ơn anh Hiếu nhiều.
Đoạn lấy ngày thì ok rồi anh.... Nhưng đoạn này
Private Sub Workbook_Open()
Call GPE
End Sub
Em đưa vô bị lỗi anh ơi.
Còn File Xếp loại Hạnh kiểm:
Thì ngay chỗ Tên lớp nó lấy điểm đưa vô luôn anh
[COLOR=#000000]Private Sub Workbook_Open()[/COLOR]
[COLOR=#000000] Call GPE[/COLOR]
[COLOR=#000000]End Sub[/COLOR]
With WbMain.ActiveSheet
dong = 10: If i > 18 Then dong = 38
[COLOR=#FF0000] cot = (i Mod 18) + 1[/COLOR]
For j = 1 To UBound(Darr)
With WbMain.ActiveSheet
dong = 10: If i > 18 Then dong = 38
[COLOR=#ff0000] cot = (i - 1 Mod 18) + 2[/COLOR]
For j = 1 To UBound(Darr)




file mình chạy bình thườngNHẤN Alt+F11 . CHỌN VIEW\PROJECT EXPLORER, đưa code vào.. lưu... điền thử dữ liệu các lớp.. khi mở lên cũng không chạy được anh...
Private Sub Workbook_Open()
Sheets("1").Select
[H3] = "code chay OK"
Call GPE
End Sub








bạn sửa lại đoạn codeAnh Hiếu chỉnh lại giùm em 1 chút ngay chỗ lấy dữ liệu Thi Đua Toàn Trường đi anh, em sữa lại file lớp... để có thể áp dụng cho những lớp số lượng học sinh trên 35. Mong anh giúp giùm
For t = 1 To 10 [COLOR=#0000ff]'[/COLOR][COLOR=#008000]Nhap diem va xep loai[/COLOR]
.Cells(f + 55, t + 2) = Wb.Sheets(i & ""). _
Cells([COLOR=#ff0000]7[/COLOR] + Int((t - 1) / 2), ((t - 1) Mod 2) * 2 + 3)
Next