หน้าเว็บ

วันอาทิตย์ที่ 17 เมษายน พ.ศ. 2554

การสุ่มแบบคัดออก

การสุ่มข้อมูลแบบคัดออกนี้ สามารถนำไปใช้ในการแจกรางวัล ผู้ที่ได้รางวัลแล้วจะถูกคัดออกไม่นำมาสุ่มต่อ ปกติจะเป็นการสุ่มขึ้นมาเป็นครั้ง ๆ ไป ไม่ได้สุ่มขึ้นมาพร้อมกันแบบหลาย ๆ คน การทำเช่นนั้นต้องอาศัย VBA มาช่วยในการสุ่มครับ

โดยมีวิธีการคือ

  1. เตรียมชีทรายชื่อที่ต้องการสุ่มสมมุติชื่อชีท Names โดยเก็บข้อมูลที่ต้องการสุ่มไว้ในคอลัมน์ A
  2. เตรียมชีทที่ใช้ในการแสดงผลการสุ่มและเก็บข้อมูลของคนที่ถูกสุ่มแล้วแยกไว้ต่างหาก สมมุติชื่อชีท Random
  3. เขียน Code VBA เพื่อทำการสุ่มข้อมูลและเก็บข้อมูลที่ได้จากการสุ่มตามด้านล่าง
  4. สร้างปุ่มเพื่อคลิกสุ่มข้อมูลและเก็บข้อมูล โดยให้ชื่อปุ่ม Random และ Keep Value ตามลำดับ
  5. ทำการ Assigned Macro ที่ชื่อ RandomName ให้กับปุ่ม Random และ Assigned Macro ที่ชื่อ KeepVal ให้กับปุ่ม Keep Value ตามลำดับ

Code VBA สำหรับการสุ่มข้อมูล

Dim r As Range
Sub RandomName()
Dim i As Integer, j As Integer
With Worksheets("Names")
j = .Range("A65536").End(xlUp).Row - 1
i = Int(Rnd * (j - 1) + 1)
Set r = .Cells(i, 1)
End With
With Worksheets("Random")
.Range("D7") = r
.Shapes("Button 12").Visible = True
End With
End Sub

Sub KeepVal()
Dim rs As Range, rt As Range
With Worksheets("Random")
Set rs = .Range("D7")
If .Range("G7") = "" Then
Set rt = .Range("G7")
Else
Set rt = .Range("G65536").End(xlUp).Offset(1, 0)
End If
rt = rs
rt.Offset(0, -1) = rt.Offset(-1, -1) + 1
r.EntireRow.Delete
.Shapes("Button 12").Visible = False
End With
End Sub


ภาพตัวอย่างการสุ่มข้อมูล

RandomAndKeepVal


จากภาพด้านบนจะเห็นว่าเมื่อคลิกปุ่ม Random แล้วจะทำการสุ่มข้อมูลมาให้ที่ D7 และจะมีปุ่ม Keep Value ปรากฏขึ้นมาเพื่อเตรียมพร้อมสำหรับการเก็บข้อมูลไว้ที่ F7:G7 เป็นต้นไป เมื่อคลิกปุ่ม Keep Value ก็จะทำการเก็บข้อมูลที่สุ่มมาแล้ว จากนั้นจะทำการซ่อนปุ่มนี้ไว้ และจะปรากฏอีกทีเมื่อคลิกปุ่ม Random


สำหรับสมาชิกเวบ http://www.snasui.com/ สามารถดาวน์โหลดไฟล์ตัวอย่างได้จากที่นี่ครับ Random and keep value

ไม่มีความคิดเห็น: