Page 1 of 1

การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Tue Feb 11, 2020 10:59 am
by Xengsue
สวัสดีครับ

ขอบสอบถามด้วยครับ อาจารย์ทุกท่าน
คือว่าผมต้องการสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

คือตัวอย่าง
รายชื่อมี 5 ท่าน(A,B,C,D,E)
-สุ่มครั้งที1: ได้ 1 ท่านใน 5 ท่าน
-สุ่มครั้งที2: ได้ 1 ท่านใน 4 ท่านที่เหลือจากการสุ่มครั้งที 1
-สุ่มครั้งที3: ได้ 1 ท่านใน 3 ท่านที่เหลือจากการสุ่มครั้งที 1 และ คั้งที 2

ผมต้องทำยังไงครับ หรือว่าทำไม่ได้นอกจากใช้ VBA มาช่วยครับ
ขอบคุณครับ
ไฟล์ตัวอย่าง
ไฟล์ตัวอย่าง
Screenshot_20200211-105243_Excel.jpg (33.84 KiB) Viewed 76 times

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Tue Feb 11, 2020 8:58 pm
by Bo_ry
D3:D6
=AGGREGATE(15,6,A$3:A$7/ISNA(MATCH(A$3:A$7,D$2:D2,)),RANDBETWEEN(1,ROWS(A3:A$7)))
E3:E6
=index(B$3:B$7,d3)

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Wed Feb 12, 2020 2:45 pm
by Xengsue
Bo_ry wrote: Tue Feb 11, 2020 8:58 pm D3:D6
=AGGREGATE(15,6,A$3:A$7/ISNA(MATCH(A$3:A$7,D$2:D2,)),RANDBETWEEN(1,ROWS(A3:A$7)))
E3:E6
=index(B$3:B$7,d3)
ขอบคุณมากครับ
แต่ยังไม่ตรงตามความต้องการ
คือต้องการสุ่มแค่ทีละคนครับไม่ใช่แบบทีละ 3คน ครับ

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Wed Feb 12, 2020 3:00 pm
by Xengsue
และผลทดสอบที่ได้มันช้ำกันครับ

ความต้องการก็คือ

ต้องการสุ่มรายชื่อผู้โชกดีให้ได้ครั้งละ 1 ท่าน
-สุ่มครั้งที1: ได้ 1 ท่านใน 5 ท่าน แล้วจะเหลืออยู่ 4 ท่านเพื่อจะเอาไปสุ่มต่อเป็นครั้งที 2.
-สุ่มครั้งที2: ได้ 1 ท่านใน 4 ท่านที่เหลือจากการสุ่มครั้งที 1 แล้วจะเหลืออยู่ 3 ท่านเพื่อจะเอาไปสุ่มต่อเป็นครั้งที 3.
-สุ่มครั้งที3: ได้ 1 ท่านใน 3 ท่านที่เหลือจากการสุ่มครั้งที 1 และ คั้งที 2 แล้วจะเหลือ 2 ท่านที่ไม่โชกดีครับ.

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Wed Feb 12, 2020 9:30 pm
by snasui
:D กรุณาแนบไฟล์ตัวอย่างที่เป็น Excel มาด้วยจะได้สะดวกในการตอบของเพื่อนสมาชิกครับ

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Thu Feb 13, 2020 12:40 am
by Xengsue
snasui wrote: Wed Feb 12, 2020 9:30 pm :D กรุณาแนบไฟล์ตัวอย่างที่เป็น Excel มาด้วยจะได้สะดวกในการตอบของเพื่อนสมาชิกครับ
ขอโทษด้วยครับ

คือสิ่งที่ต้องการคือ
อยากจะสุ่มรายชื่อผู้โชกดีให้ได้ครั้งละ 1 ท่าน ด้วยสูตร โดยไม่ต้องใช้ VBA มาช่วยครับ
โดยมีเงื่อนไขคือ:
-รายชื่อที่ต้องการเอามาสุ่มมี 5 ท่าน (A, B, C, D, E)
-ต้องการสุ่มผู้โชกดีให้ได้ 3 ท่านโดยสุ่ม 3 ครั้งให้ได้ครั้งละ 1 ท่านโดยไม่ให้ช้ำคนเดิมเช่น

-สุ่มครั้งที1: ได้ 1 ท่านใน 5 ท่าน แล้วจะเหลืออยู่ 4 ท่านเพื่อจะเอาไปสุ่มต่อเป็นครั้งที 2.

-สุ่มครั้งที2: ได้ 1 ท่านใน 4 ท่านที่เหลือจากการสุ่มครั้งที 1 แล้วจะเหลืออยู่ 3 ท่านเพื่อจะเอาไปสุ่มต่อเป็นครั้งที 3.

-สุ่มครั้งที3: ได้ 1 ท่านใน 3 ท่านที่เหลือจากการสุ่มครั้งที 1 และ คั้งที 2 แล้วจะเหลือ 2 ท่านที่ไม่โชกดีครับ.

ขอบคุณครับ
ทดสอบสุ่ม.xlsx
ไฟล์ทดสอบ
(9.87 KiB) Downloaded 4 times

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Thu Feb 13, 2020 8:31 pm
by snasui
:D ตัวอย่างสูตรตามด้านล่างครับ

เมื่อต้องการสุ่มให้กดแป้น F9 ค้างไว้แล้วค่อยปล่อย
  1. ที่ C3 คีย์สูตรเพื่อ Random
    =IF(COUNTIF($I$3:$I$10,B3),"",RAND())
    Enter > Copy ลงด้านล่าง
  2. ที่ D3 คีย์สูตรเพื่อจัดลำดับ
    =IF(C3="","",RANK(C3,$C$3:$C$7))
    Enter > Copy ลงด้านล่าง
  3. ที่ G3 คีย์สูตรเพื่อสุ่มรายชื่อมาแสดง
    =INDEX($B$3:$B$7,MATCH(1,$D$3:$D$7,0))
    Enter
เมื่อได้ค่าจากการสุ่มแล้วให้คัดลอกไปวางที่คอลัมน์ I เริ่มจาก I3 เป็นต้นไป รายการเหล่านี้จะไม่ถูกสุ่มอีกครับ

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Thu Feb 13, 2020 8:53 pm
by Xengsue
snasui wrote: Thu Feb 13, 2020 8:31 pm :D ตัวอย่างสูตรตามด้านล่างครับ

เมื่อต้องการสุ่มให้กดแป้น F9 ค้างไว้แล้วค่อยปล่อย
  1. ที่ C3 คีย์สูตรเพื่อ Random
    =IF(COUNTIF($I$3:$I$10,B3),"",RAND())
    Enter > Copy ลงด้านล่าง
  2. ที่ D3 คีย์สูตรเพื่อจัดลำดับ
    =IF(C3="","",RANK(C3,$C$3:$C$7))
    Enter > Copy ลงด้านล่าง
  3. ที่ G3 คีย์สูตรเพื่อสุ่มรายชื่อมาแสดง
    =INDEX($B$3:$B$7,MATCH(1,$D$3:$D$7,0))
    Enter
เมื่อได้ค่าจากการสุ่มแล้วให้คัดลอกไปวางที่คอลัมน์ I เริ่มจาก I3 เป็นต้นไป รายการเหล่านี้จะไม่ถูกสุ่มอีกครับ
ขอบคุณมากครับ อาจารย์

ทำได้ตามที่อาจารย์แนะนำครับ

แต่อยากสอบถามต่อนิดหนึ่งว่า
ถ้าเราไม่อยาก คัดลอกไปวางที่ไว้ที่คอลัมน์ I แล้วให้มันทำงานตามที่อาจารย์แนะนำมา สามารถทำได้ไหมครับ

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Thu Feb 13, 2020 8:59 pm
by snasui
:D ทำได้ด้วย VBA ครับ

Re: การสุ่มรายชื่อผู้โชกดีสามท่านในรายชื่อทั้งหมดโดยไม่ให้ช้ำกันในการสุ่มแต่ละครั้งโดยไม่ใช้ VBA มาช่วย

Posted: Thu Feb 13, 2020 9:05 pm
by Xengsue
snasui wrote: Thu Feb 13, 2020 8:59 pm :D ทำได้ด้วย VBA ครับ
ขอบคุณมากครับ

สำหรับ VBA ช่วยผมเข้าใจครับ
แต่ไม่อยากใช้ VBA มาช่วยเลยลองหาวิธีด้วยสูตรดูว่าจะทำได้หรือเปล่า
แค่นั้นเองครับ

ขอบคุณ อาจารย์มาก ที่สละเวลามาช่วยครับ