RSS

การใช้สูตรสุ่มข้อมูลเป็นชุด ๆ โดยกำหนดได้ว่าให้ไม่ซ้ำกันภายในชุด

09 Dec

เหตุการณ์ของการสุ่มอย่างที่ว่านี้คือ สุ่มออกมาเป็นชุด ๆ โดยให้ข้อมูลไม่ซ้ำกันภายในชุดนั้นใช้ในกรณีไหนบ้าง ตัวอย่างที่เห็นได้ชัดก็เรื่องของการจัดกลุ่มแข่งขันกีฬาสีครับ

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

ภาพตัวอย่างการ Random ด้วยสูตรตามด้านล่างครับ

RandomInAdvanced 

จากภาพด้านบนเราสมมุติว่าข้อมูลมีชุดละ 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 ลงด้านล่าง

 
3 Comments

Posted by on 09/12/2009 in Array, If, Index, Int, Mod, Random, Row, Rows, Small

 

3 responses to “การใช้สูตรสุ่มข้อมูลเป็นชุด ๆ โดยกำหนดได้ว่าให้ไม่ซ้ำกันภายในชุด

  1. Jeab

    27/09/2010 at 2:51 pm

    รบกวนหน่อยค่ะ ถ้า 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 รายการขอบคุณค่ะ

     
  2. คนควน

    27/09/2010 at 3:17 pm

    ใช้สูตรเดิมครับ จากรูปข้างบนที่ 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/ จะสะดวกในการตอบมากกว่าครับ

     
  3. Jeab

    27/09/2010 at 3:26 pm

    ทำได้แล้วค่ะ ขอบคุณมากค่ะ

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: