hard learner
Thành viên chính thức
- Tham gia
- 4/10/08
- Bài viết
- 74
- Được thích
- 7
Bạn xem thử được khôngMình có một file danh sách tổng số sinh viên dự thi. Từ danh sách đó mình muốn excel tự động chia phòng thi theo yêu cầu. Làm ơn giúp mình. Mình gửi file đính kèm làm ví dụ thôi.
Option Explicit
Sub XepDSTheoNhom()
Dim zZ As Byte, Ngau As Integer, Jj As Byte, Dai As Byte
[C3].Resize(10, 10).Clear
Range("N1:N100").Value = Range("M1:M100").Value
For Jj = 1 To 9
Ngau = 1
For zZ = 1 To 10
Randomize: Ngau = 1 + Ngau + Int((10 - Jj) * Rnd)
Cells(65500, Jj + 2).End(xlUp).Offset(1).Value = Cells(Ngau, "N").Value
Cells(Ngau, "N").Delete
Next zZ
Next Jj
Range("N1:N10").Cut
Range("L3").Select: ActiveSheet.Paste
End Sub
Bạn muốn như thế này hả.Mình có một file danh sách tổng số sinh viên dự thi. Từ danh sách đó mình muốn excel tự động chia phòng thi theo yêu cầu. Làm ơn giúp mình. Mình gửi file đính kèm làm ví dụ thôi.
có thể do cách diễn đạt của mình chưa rõ. Ý mình muốn là từ danh sách tổng hợp ban đầu, dùng lệnh gì để đưa danh sách đó vào từng phòng theo số lượng thí sinh (phân theo sheet phòng thi). Có nghĩa là mình không dùng lệnh cut từ danh sách tổng hợp rồi paste vào từng phòng mà dùng lệnh và tự động nhảy danh sách theo. Xin mọi người giúp đỡPHP:Option Explicit Sub XepDSTheoNhom() Dim zZ As Byte, Ngau As Integer, Jj As Byte, Dai As Byte [C3].Resize(10, 10).Clear Range("N1:N100").Value = Range("M1:M100").Value For Jj = 1 To 9 Ngau = 1 For zZ = 1 To 10 Randomize: Ngau = 1 + Ngau + Int((10 - Jj) * Rnd) Cells(65500, Jj + 2).End(xlUp).Offset(1).Value = Cells(Ngau, "N").Value Cells(Ngau, "N").Delete Next zZ Next Jj Range("N1:N10").Cut Range("L3").Select: ActiveSheet.Paste End Sub
Bạn sửa các con số ở cột B rồi bấm đúp vào chữ Xếp xem saoMình đã nhận được file bạn làm đâu. Chẳng có gì trong đó cả
Ý mình muốn là từ danh sách tổng hợp ban đầu, dùng lệnh gì để đưa danh sách đó vào từng phòng theo số lượng thí sinh (phân theo sheet phòng thi). Có nghĩa là mình không dùng lệnh cut từ danh sách tổng hợp rồi paste vào từng phòng mà dùng lệnh và tự động nhảy danh sách theo. Xin mọi người giúp đỡ
Giúp mình xếp 10 thí sinh vào một phòng theo như Sheet "bieu mau"cảm ơn vì những lời góp ý chân thành của bạn.
File mới của bạn không có sheet Bieu Mau. Tôi lấy tạm sheet này ở file cũ.Giúp mình xếp 10 thí sinh vào một phòng theo như Sheet "bieu mau"
Quả thật mình vội nên chưa chỉn chu cho lắm. Mong bạn thông cảm.Cho mình hỏi trong trường hợp mình muốn thay đổi số lượng thí sinh trong một phòng thì phải thay đổi gì ở câu lệnh? Có phải chỉ cần sửa câu lệnh để xuất ra số báo danh không thôi?File mới của bạn không có sheet Bieu Mau. Tôi lấy tạm sheet này ở file cũ.
File mới cũng không có SBD. Tôi lấy tạm theo số thứ tự.
Bạn thao khảo file. Chọn môn thi và số phòng để có kết quả.
Option Explicit
Const HVMax As Byte = 10
Dim SoPhg As Long, HVien As Byte
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As Worksheet
Dim eRw As Long, SoHV As Long
Set Sh = Worksheets("CSDL"): eRw = Sh.[A65500].End(xlUp).Row
If Not Intersect([f2], Target) Is Nothing Then
Sh.Range("K5:P" & eRw).ClearContents
Sh.Range("A1:I" & eRw).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sh.Range( _
"M1:M2"), CopyToRange:=Sh.Range("K4:P4"), Unique:=False
SoHV = Sh.[K65432].End(xlUp).Row - 4
Sh.Range("R2:R99").ClearContents
SoPhg = 0: HVien = 0
1 ' Tim So Phong Thi Can Thiet:'
Do
SoPhg = SoPhg + 1
Sh.Cells(65500, "R").End(xlUp).Offset(1).Value = SoPhg
If SoPhg * HVMax > SoHV Then
Exit Do
End If
Loop
HVien = SoHV \ SoPhg + 1: [F3] = 1
ElseIf Not Intersect(Target, [F3]) Is Nothing Then
Dim BDau As Long
[b6].Resize(10, 4).ClearContents
On Error GoTo 0
BDau = 5 + ([F3].Value - 1) * HVien
Sh.Cells(BDau, "K").Resize(HVien, 5).Copy Destination:=[b6]
End If
End Sub
Trong công thức của cột SBD ở Sheet Bieu Mau có số 10. Đó là số thí sinh trong 1 phòng. Bạn có thể thay đổi trông công thức của cột này.mình xin lỗi bây giờ mới có thời gian lên mạng. Số thí sinh của phòng cuối sẽ là số lẻ còn lại sau khi chia đều hết cho các phòng.Cảm ơn các bạn hết lòng giúp đỡ
Quả thật mình vội nên chưa chỉn chu cho lắm. Mong bạn thông cảm.Cho mình hỏi trong trường hợp mình muốn thay đổi số lượng thí sinh trong một phòng thì phải thay đổi gì ở câu lệnh? Có phải chỉ cần sửa câu lệnh để xuất ra số báo danh không thôi?