เหตุการณ์ของการสุ่มอย่างที่ว่านี้คือ สุ่มออกมาเป็นชุด ๆ โดยให้ข้อมูลไม่ซ้ำกันภายในชุดนั้นใช้ในกรณีไหนบ้าง ตัวอย่างที่เห็นได้ชัดก็เรื่องของการจัดกลุ่มแข่งขันกีฬาสีครับ
เป็นที่น่าดีใจว่า Excel เองสามารถที่จะสุ่มเช่นนี้ด้วยสูตรได้เหมือนกัน โดยไม่ต้องพึ่งพา VBA แต่สูตรยาวพอควร เข้าใจค่อนข้างยาก แต่นั่นไม่ใช่ปัญหาสำหรับเราใช่ไหมครับ
ภาพตัวอย่างการ Random ด้วยสูตรตามด้านล่างครับ
จากภาพด้านบนเราสมมุติว่าข้อมูลมีชุดละ 2 บรรทัด โดยชุดแรกคือ C2:C3, ชุดที่สองคือ C4:C5 เป็นต้น และจะทำการสุ่มโดยนำข้อมูลสีที่ E3:E4 เข้าแสดงแต่ต้องไม่ซ้ำสีกันภายในชุดเดียวกัน
เซลล์ E3:E4 สามารถกรอกค่าใด ๆ ก็ได้ไม่จำเป็นต้องเป็นต้วหนังสือ และจะกรอกกี่ค่าก็ได้ แต่ถ้ากรอกมากกว่า 2 ค่าตามที่ยกตัวอย่างมา จะต้องเข้าไปแก้สูตรใหม่ โดยเปลี่ยนเลข 2 ที่ไม่เกี่ยวกับช่วงเซลล์ ให้เป็นเลขใด ๆ ตามจำนวนค่าจริงที่ต้องการสุ่ม และแก้ไขช่วงเซลล์ที่ต้องการสุ่ม
สำหรับเลข 2 ด้านบน สามารถใช้ฟังก์ชั่นนับค่าที่ต้องการสุ่มไว้ในเซลล์ใด ๆ แล้วค่อยอ้างอิงไปใช้ในสูตร จะสะดวกกว่ามากหากมีการแก้ไขในภายหลัง
ช่วงเซลล์ที่ต้องการสุ่มในฟังก์ชั่น Index ก็เช่นกัน สามารถทำให้ Dynamic โดยการให้ชื่อกับช่วงเซลล์แบบ Dynamic ได้
ตามรูป ที่ C2 คีย์
=Index($E$3:$E$4,Small(If(Countif(If(Mod(Rows($C$2:C2)-1,2)=0,
$C$1:$C$1,Offset(C1,0,0,-Mod(Rows($C$2:C2)-1,2),1):C1),$E$3:$E$4)=0,
Row($E$3:$E$4)-Row($E$3)+1),Int((2-Mod(Rows($C$2:C2)-1,2))*Rand())+1))
การกดแป้นให้รับสูตรต้องกด 3 แป้นคือ Ctrl+Shift+Enter ถ้ากดแป้นถูกต้องจะเห็นปีกกาคร่อมสูตร จากนั้น Copy สูตรลงด้านล่าง สามารถดาวน์โหลดไฟล์ตัวอย่างตามด้านล่างไปศึกษาได้ตามสะดวกครับ
Revised: January 28, 2017 at 16:03
รบกวนหน่อยค่ะ ถ้า Data Random มี 4 ชุด ต้องเขียนคำสั่งอย่างไงค่ะ เพื่อที่ข้อมูลที่ได้ เท่ากัน มีตัวอย่างค่ะ Name Randomaa 2bb 1cc 3dd 4ee 4ff 1gg 2hh 3รวมแล้ว Random 1 = 2 รายการRandom 2 = 2 รายการRandom 3 = 2 รายการRandom 4 = 2 รายการขอบคุณค่ะ
ใช้สูตรเดิมครับ จากรูปข้างบนที่ E5:E6 ให้เติมตัวเลข 3 และ 4 เข้าไปตามลำดับ จากนั้นที่เซลล์ C2 คีย์=Index($E$3:$E$6,Small(If(Countif(If(Mod(Rows($C$2:C2)-1,4)=0,$C$1:$C$1,Offset(C1,0,0,-Mod(Rows($C$2:C2)-1,4),1):C1),$E$3:$E$6)=0,Row($E$3:$E$6)-Row($E$3)+1),Int((4-Mod(Rows($C$2:C2)-1,4))*Rand())+1))Ctrl+Shift+Enter > Copy ลงด้านล่างหากยังไม่ได้คำตอบส่งคำถามไปที่ http://www.snasui.com/ จะสะดวกในการตอบมากกว่าครับ
ทำได้แล้วค่ะ ขอบคุณมากค่ะ
Pingback: unique random in group
Pingback: การสุ่มข้อมูลที่ไม่ซ้ำกันเป็นชุด ๆ (VBA) – Excel Tips and Tricks