Page 1 of 2
สุ่มตัวอย่างชื่อคน
Posted: Thu May 02, 2019 3:59 pm
by Totem

เรียนอาจารย์และเพื่อนสมาชิก
คำถาม สุ่มตัวอย่างชื่อ ครึ่งเดือนแรกกับครึ่งเดือนหลัง
1.สุ่มตัวอย่างช่อง L2 - L21
ต้องการว่า ตั้งแต่วันที่ 1 - 15 สุ่มออกมา 10 ชื่อ
และวันที่ 16-30 สุ่มออกมา 10 ชื่อ
โดยวันที่ให้ดูจากคอลัมน์ D ซึ่งวันที่ ที่ได้มาจะไม่ได้จัดเรียงมาจะกระจัดกระจาย
ในคอลัมน์ G ปรับสูตรอย่างไรครับ
ขอบคุณครับ
สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง.xlsx
Re: สุ่มตัวอย่างชื่อคน
Posted: Thu May 02, 2019 7:30 pm
by snasui

ตัวอย่างสูตรครับ
แทรกคอลัมน์ K มาอีก 1 คอลัมน์เพื่อเป็นคอลัมน์ช่วยจากนั้นคีย์สูตรตามด้านล่างครับ
- ที่ H2 คีย์
=IF(DAY(D2)<=15,RAND(),"")
Enter > Copy ลงด้านล่าง
- ที่ I2 คีย์
=IF(DAY(D2)>15,RAND(),"")
Enter > Copy ลงด้านล่าง
- ที่ J2 คีย์
=IF(N(H2),RANK(H2,H$2:H$30),"")
Enter > Copy ลงด้านล่าง
- ที่ K2 คีย์
=IF(N(I2),RANK(I2,I$2:I$30),"")
Enter > Copy ลงด้านล่าง
- ที่ M2 คีย์
=INDEX($A$2:$A$30,MATCH(MOD((ROWS(M$2:M2)-1),10)+1,INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0))
Enter > Copy ลงด้านล่าง
- ที่ N2 คีย์
=INDEX($D$2:$D$30,MATCH(MOD((ROWS(M$2:M2)-1),10)+1,INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0))
Enter > Copy ลงด้านล่าง
Re: สุ่มตัวอย่างชื่อคน
Posted: Thu May 02, 2019 7:48 pm
by Bo_ry
อีกแบบ
I2
=IF(DAY($D$2:$D$30)<16,SUMPRODUCT(--(H2<(DAY($D$2:$D$30)<16)*$H$2:$H$30))+1,SUMPRODUCT(--(H2<(DAY($D$2:$D$30)>15)*$H$2:$H$30))+15)
L2
=INDEX($A$2:$A$30,MATCH(K2+(K2>10)*5,$I$2:$I$30,0))
M2
=INDEX($D$2:$D$30,MATCH(K2+(K2>10)*5,$I$2:$I$30,0))
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 9:03 am
by Totem
snasui wrote: Thu May 02, 2019 7:30 pm

ตัวอย่างสูตรครับ
แทรกคอลัมน์ K มาอีก 1 คอลัมน์เพื่อเป็นคอลัมน์ช่วยจากนั้นคีย์สูตรตามด้านล่างครับ
- ที่ H2 คีย์
=IF(DAY(D2)<=15,RAND(),"")
Enter > Copy ลงด้านล่าง
- ที่ I2 คีย์
=IF(DAY(D2)>15,RAND(),"")
Enter > Copy ลงด้านล่าง
- ที่ J2 คีย์
=IF(N(H2),RANK(H2,H$2:H$30),"")
Enter > Copy ลงด้านล่าง
- ที่ K2 คีย์
=IF(N(I2),RANK(I2,I$2:I$30),"")
Enter > Copy ลงด้านล่าง
- ที่ M2 คีย์
=INDEX($A$2:$A$30,MATCH(MOD((ROWS(M$2:M2)-1),10)+1,INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0))
Enter > Copy ลงด้านล่าง
- ที่ N2 คีย์
=INDEX($D$2:$D$30,MATCH(MOD((ROWS(M$2:M2)-1),10)+1,INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0))
Enter > Copy ลงด้านล่าง

ขอบคุณครับ ได้ตามที่ต้องการครับ
ขอถามอาจารย์ มีข้อสงสัยตรงคอลัมน์ ่J2 กับ K2 ในสูตร N(H2) กับ N(I2) ตัวอักษร N ใส่ไปในสูตรมีความหมายอย่างไรครับ ขอบคุณครับ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 9:06 am
by Totem
Bo_ry wrote: Thu May 02, 2019 7:48 pm
อีกแบบ
I2
=IF(DAY($D$2:$D$30)<16,SUMPRODUCT(--(H2<(DAY($D$2:$D$30)<16)*$H$2:$H$30))+1,SUMPRODUCT(--(H2<(DAY($D$2:$D$30)>15)*$H$2:$H$30))+15)
L2
=INDEX($A$2:$A$30,MATCH(K2+(K2>10)*5,$I$2:$I$30,0))
M2
=INDEX($D$2:$D$30,MATCH(K2+(K2>10)*5,$I$2:$I$30,0))

ขอบคุณครับ ได้ตามที่ต้องการครับ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 9:13 am
by Totem

ขอเพิ่มเติมครับ
ในคอลัมน์ A (ชื่อ) และคอลัมน์ D (วันที่) ถ้าต้องการสุ่มชื่อไม่ซ้ำและวันที่ไม่ซ้ำกันจะปรับสูตรอย่างไรครับ ขอบคุณครับ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 10:51 am
by logic
Totem wrote: Fri May 03, 2019 9:03 am
ตัวอักษร N ใส่ไปในสูตรมีความหมายอย่างไรครับ ขอบคุณครับ
แปลงค่าตัวเลขเป็นตัวเลข แปลงตัวหนังสือเป็น 0
https://support.office.com/th-th/articl ... 733d1278c9
Totem wrote: Fri May 03, 2019 9:13 am
ต้องการสุ่มชื่อไม่ซ้ำและวันที่ไม่ซ้ำกันจะปรับสูตรอย่างไรครับ
แบบนี้หรือเปล่าครับ
M2 =INDEX($A$2:$A$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MOD((ROWS(M$2:M2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง
N2 =INDEX($D$2:$D$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1)),MOD((ROWS(N$2:N2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 3:39 pm
by Totem
logic wrote: Fri May 03, 2019 10:51 am
Totem wrote: Fri May 03, 2019 9:03 am
ตัวอักษร N ใส่ไปในสูตรมีความหมายอย่างไรครับ ขอบคุณครับ
แปลงค่าตัวเลขเป็นตัวเลข แปลงตัวหนังสือเป็น 0
https://support.office.com/th-th/articl ... 733d1278c9
Totem wrote: Fri May 03, 2019 9:13 am
ต้องการสุ่มชื่อไม่ซ้ำและวันที่ไม่ซ้ำกันจะปรับสูตรอย่างไรครับ
แบบนี้หรือเปล่าครับ
M2 =INDEX($A$2:$A$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MOD((ROWS(M$2:M2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง
N2 =INDEX($D$2:$D$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1)),MOD((ROWS(N$2:N2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง

นำสูตรไปใช่ในงานจริง ขึ้น This formula uses more levels of nesting than you can use in the current file format.
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 3:44 pm
by logic
สูตรนี้ใช้ได้กับไฟล์ .xlsx ที่แนบมาในโพสต์ #1 ครับ

Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 4:45 pm
by Bo_ry
อีกแบบ
I2
=IF(RANK(H2,$H$2:$H$30)=AGGREGATE(15,6,RANK($H$2:$H$30,$H$2:$H$30)/(($D$2:$D$30=D2)+($A$2:$A$30=A2)>0),1),RANK(H2,$H$2:$H$30),"")
L2
=INDEX($A$2:$A$30,MATCH(AGGREGATE(15,6,$I$2:$I$30,K2),$I$2:$I$30,))
M2
=VLOOKUP(L2,$A$2:$D$30,4,)
ไม่ใด้ใช้ครึ่งเดือนแล้วเพราะ 16-30 มีแค่ 9 วันที่ไม่ซ้ำ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 6:25 pm
by Totem
Totem wrote: Fri May 03, 2019 3:39 pm
logic wrote: Fri May 03, 2019 10:51 am
Totem wrote: Fri May 03, 2019 9:03 am
ตัวอักษร N ใส่ไปในสูตรมีความหมายอย่างไรครับ ขอบคุณครับ
แปลงค่าตัวเลขเป็นตัวเลข แปลงตัวหนังสือเป็น 0
https://support.office.com/th-th/articl ... 733d1278c9
Totem wrote: Fri May 03, 2019 9:13 am
ต้องการสุ่มชื่อไม่ซ้ำและวันที่ไม่ซ้ำกันจะปรับสูตรอย่างไรครับ
แบบนี้หรือเปล่าครับ
M2 =INDEX($A$2:$A$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MOD((ROWS(M$2:M2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง
N2 =INDEX($D$2:$D$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1)),MOD((ROWS(N$2:N2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(N$2:N2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง

นำสูตรไปใช่ในงานจริง ขึ้น This formula uses more levels of nesting than you can use in the current file format.

ไฟล์ xlsx สูตรทำงาน สูตรที่นำไปใช้ในคอลัมน์ N2 วันที่ มีบางช่อง cell ขึ้น #NUM! ติดต่อกันหลาย cell ผมจึงปรับใช้โดย N2=INDEX($D$2:$D$30,MATCH(SMALL(IF(FREQUENCY(IF(ISNUMBER(INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MATCH($A$2:$A$30,$A$2:$A$30,0)),ROW($A$2:$A$30)-ROW($A$2)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1)),MOD((ROWS(M$2:M2)-1),10)+1),INDEX($J$2:$K$30,0,INT((ROWS(M$2:M2)-1)/10)+1),0)) Ctrl+Shift+Enter คัดลอกสูตรลง
เปลี่ยนจาก =INDEX($D$2:$D$30 เป็น =INDEX($D$2:$D$30 แล้วไปผลลัพธ์วันที่ไม่ขึ้น #NUM! และใช้งานได้ครับ
ขอบคุณครับ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 6:35 pm
by Totem
Bo_ry wrote: Fri May 03, 2019 4:45 pm
อีกแบบ
I2
=IF(RANK(H2,$H$2:$H$30)=AGGREGATE(15,6,RANK($H$2:$H$30,$H$2:$H$30)/(($D$2:$D$30=D2)+($A$2:$A$30=A2)>0),1),RANK(H2,$H$2:$H$30),"")
L2
=INDEX($A$2:$A$30,MATCH(AGGREGATE(15,6,$I$2:$I$30,K2),$I$2:$I$30,))
M2
=VLOOKUP(L2,$A$2:$D$30,4,)
ไม่ใด้ใช้ครึ่งเดือนแล้วเพราะ 16-30 มีแค่ 9 วันที่ไม่ซ้ำ

ขอบคุณครับ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 6:41 pm
by Totem

ขอเพิ่มเติมว่าถ้าต้องการสุ่มตัวอย่างให้สุ่มชื่อไม่ซ้ำกันเท่านั้น ไม่คำนึงถึงวันครึ่งเดือนแรกกับครึ่งเดือนหลัง จะปรับสูตรอย่างไรครับ ขอบคุณครับ
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 03, 2019 6:53 pm
by Bo_ry
Post #10 ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน
ชื่อไม่ซ้ำ วันซ้ำได้ ไม่สนครึ่งเดือน
I2
=IF(RANK(H2,$H$2:$H$30)=AGGREGATE(15,6,RANK($H$2:$H$30,$H$2:$H$30)/($A$2:$A$30=A2),1),RANK(H2,$H$2:$H$30),"")
Re: สุ่มตัวอย่างชื่อคน
Posted: Sat May 04, 2019 7:03 am
by Totem
Bo_ry wrote: Fri May 03, 2019 6:53 pm
Post #10 ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน
ชื่อไม่ซ้ำ วันซ้ำได้ ไม่สนครึ่งเดือน
I2
=IF(RANK(H2,$H$2:$H$30)=AGGREGATE(15,6,RANK($H$2:$H$30,$H$2:$H$30)/($A$2:$A$30=A2),1),RANK(H2,$H$2:$H$30),"")

ขอบคุณครับได้ตามต้องการ
Re: สุ่มตัวอย่างชื่อคน
Posted: Wed May 08, 2019 1:44 pm
by Totem

ขอถามอาจารย์และเพื่อนสมาชิกเพิ่มเติมครับในกรณี สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง ไม่ซ้ำคนและวันที่ ใน sheet1 คอลัมน์ M และ N หรือ sheet2 คอลัมน์ L และ M ปรับสูตรอย่างไรครับ
สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง ไม่ซ้ำคนและวันที่.xlsx
Re: สุ่มตัวอย่างชื่อคน
Posted: Wed May 08, 2019 2:07 pm
by Totem

อีกกรณี สุ่มตัวอย่าง ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน แล้ว
ในคอลัมน์ G ปรับเป็น >2 วัน ทำให้การสุ่มตัวอย่างในคอลัมน์ L สุ่มไม่ครบ 20 ตัวอย่าง ครับ จะปรับสูตรให้ได้ตามต้องการครับ
สุ่มตัวอย่าง ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน.xlsx
Re: สุ่มตัวอย่างชื่อคน
Posted: Thu May 09, 2019 5:40 pm
by Bo_ry
Totem wrote: Wed May 08, 2019 1:44 pm

ขอถามอาจารย์และเพื่อนสมาชิกเพิ่มเติมครับในกรณี สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง ไม่ซ้ำคนและวันที่ ใน sheet1 คอลัมน์ M และ N หรือ sheet2 คอลัมน์ L และ M ปรับสูตรอย่างไรครับ
สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง ไม่ซ้ำคนและวันที่.xlsx
J2:K30
=IF(H2="","",IF(RANK(H2,H$2:H$30)=AGGREGATE(15,6,RANK(H$2:H$30,H$2:H$30)/(($D$2:$D$30=$D2)+($A$2:$A$30=A2)>0),1),RANK(H2,H$2:H$30),""))
M2:M30
=INDEX($A$2:$A$30,MATCH(AGGREGATE(15,6,INDEX($J$2:$K$30,,INT((L2-1)/10)+1),MOD(L2-1,10)+1),INDEX($J$2:$K$30,,INT((L2-1)/10)+1),))
N2:N30
=VLOOKUP(M2,$A$2:$D$30,4,)
Re: สุ่มตัวอย่างชื่อคน
Posted: Thu May 09, 2019 5:55 pm
by Bo_ry
Totem wrote: Wed May 08, 2019 2:07 pm

อีกกรณี สุ่มตัวอย่าง ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน แล้ว
ในคอลัมน์ G ปรับเป็น >2 วัน ทำให้การสุ่มตัวอย่างในคอลัมน์ L สุ่มไม่ครบ 20 ตัวอย่าง ครับ จะปรับสูตรให้ได้ตามต้องการครับ
สุ่มตัวอย่าง ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน.xlsx
ตัวอย่างเดิมที่ไม่ซ้ำมีแค่ 19 ต้องแก้ให้ไม่ซ้ำ
I2
=IF(G2,IF(RANK(H2,$H$2:$H$34)=AGGREGATE(15,6,RANK($H$2:$H$34,$H$2:$H$34)/(($D$2:$D$34=D2)+($A$2:$A$34=A2)>0),1),RANK(H2,$H$2:$H$34),""),"")
Re: สุ่มตัวอย่างชื่อคน
Posted: Fri May 10, 2019 12:53 pm
by Totem

ขอบคุณครับ ได้ตามที่ต้องการครับ