Chia danh sách phòng thi

Liên hệ QC

hard learner

Thành viên chính thức
Tham gia
4/10/08
Bài viết
74
Được thích
7
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.
 

File đính kèm

File đính kèm

Một cách khác đây; Xin mời xem file đính kèm

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
 

File đính kèm

File đính kèm

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
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 đỡ
 
Ý 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 đỡ

Tại Sheets("Phong Thi") bạn đã ghi yêu cầu tại file bài #1 là:
"Số báo danh ở đây không liền nhau mà chỉ xếp theo thứ tự tăng dần mà thôi"

Thì mình đã viết cho bạn macro lấy Số báo danh 1 cách ngẫu nhiên xếp vô 10 phòng từ P1..P10 tại vùng C3..L12 của trang tính mà mình gọi tên là "Phong"

Bạn ghi là số báo danh không thôi; Nếu muốn ghi họ tên vô vùng đó thì bạn phài viết là xếp họ tên thí sinh vô các phòng thi sao cho số báo danh tăng lên 1 cách ngẫu nhiên.

(Thường để hiểu nhau thì nên dùng công cụ trực quan: Đó là trang tính bạn mong muốn có) Cái việc như thế bạn chưa làm; Hơn nữa, 100 thí sinh mà bạn chỉ ghi chưa hềt chục thì sao mà nhiệt tình với bạn được đây? Bạn không thể giả lập được dữ liệu là sao(?!)
Bạn muốn mọi người giúp thì hãy giúp mọi người đừng tốn thì giờ để hiểu bạn chứ!

Vài lời cùng bạn!
 
Lần chỉnh sửa cuối:
Giúp mình xếp 10 thí sinh vào một phòng theo như Sheet "bieu mau"
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ả.
 

File đính kèm

Mình có một thắc mắc muốn hỏi:
Nếu số học viên thi là 42 người, thì phòng thi cuối sẽ bố trí bao nhiêu:
(*) Hai người;
(*) 9 người
(*) 8 người
(*) hay 1 số nào khác?

Bổ sung sáng nay:

Bạn vẫn có nhu cầu xáo trộn thí sinh ngẫu nhiên nữa hay không?
 
Chỉnh sửa lần cuối bởi điều hành viên:
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 đỡ

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ả.
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?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Macro của bạn đây, xin mời

PHP:
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
 

File đính kèm

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?
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.
 
Web KT

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

Back
Top Bottom