Page 1 of 2

สุ่มตัวอย่างชื่อคน

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

ขอบคุณครับ
สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง.xlsx

Re: สุ่มตัวอย่างชื่อคน

Posted: Thu May 02, 2019 7:30 pm
by snasui
:D ตัวอย่างสูตรครับ

แทรกคอลัมน์ K มาอีก 1 คอลัมน์เพื่อเป็นคอลัมน์ช่วยจากนั้นคีย์สูตรตามด้านล่างครับ
  1. ที่ H2 คีย์
    =IF(DAY(D2)<=15,RAND(),"")
    Enter > Copy ลงด้านล่าง
  2. ที่ I2 คีย์
    =IF(DAY(D2)>15,RAND(),"")
    Enter > Copy ลงด้านล่าง
  3. ที่ J2 คีย์
    =IF(N(H2),RANK(H2,H$2:H$30),"")
    Enter > Copy ลงด้านล่าง
  4. ที่ K2 คีย์
    =IF(N(I2),RANK(I2,I$2:I$30),"")
    Enter > Copy ลงด้านล่าง
  5. ที่ 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 ลงด้านล่าง
  6. ที่ 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 :D ตัวอย่างสูตรครับ

แทรกคอลัมน์ K มาอีก 1 คอลัมน์เพื่อเป็นคอลัมน์ช่วยจากนั้นคีย์สูตรตามด้านล่างครับ
  1. ที่ H2 คีย์
    =IF(DAY(D2)<=15,RAND(),"")
    Enter > Copy ลงด้านล่าง
  2. ที่ I2 คีย์
    =IF(DAY(D2)>15,RAND(),"")
    Enter > Copy ลงด้านล่าง
  3. ที่ J2 คีย์
    =IF(N(H2),RANK(H2,H$2:H$30),"")
    Enter > Copy ลงด้านล่าง
  4. ที่ K2 คีย์
    =IF(N(I2),RANK(I2,I$2:I$30),"")
    Enter > Copy ลงด้านล่าง
  5. ที่ 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 ลงด้านล่าง
  6. ที่ 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 ลงด้านล่าง
:D ขอบคุณครับ ได้ตามที่ต้องการครับ
ขอถามอาจารย์ มีข้อสงสัยตรงคอลัมน์ ่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))
:D ขอบคุณครับ ได้ตามที่ต้องการครับ

Re: สุ่มตัวอย่างชื่อคน

Posted: Fri May 03, 2019 9:13 am
by Totem
:D ขอเพิ่มเติมครับ
ในคอลัมน์ 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 คัดลอกสูตรลง
:D นำสูตรไปใช่ในงานจริง ขึ้น 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 คัดลอกสูตรลง
:D นำสูตรไปใช่ในงานจริง ขึ้น This formula uses more levels of nesting than you can use in the current file format.
:D ไฟล์ 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 วันที่ไม่ซ้ำ
:D ขอบคุณครับ

Re: สุ่มตัวอย่างชื่อคน

Posted: Fri May 03, 2019 6:41 pm
by Totem
:D ขอเพิ่มเติมว่าถ้าต้องการสุ่มตัวอย่างให้สุ่มชื่อไม่ซ้ำกันเท่านั้น ไม่คำนึงถึงวันครึ่งเดือนแรกกับครึ่งเดือนหลัง จะปรับสูตรอย่างไรครับ ขอบคุณครับ

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),"")
:D ขอบคุณครับได้ตามต้องการ

Re: สุ่มตัวอย่างชื่อคน

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

สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง ไม่ซ้ำคนและวันที่.xlsx

Re: สุ่มตัวอย่างชื่อคน

Posted: Wed May 08, 2019 2:07 pm
by Totem
:D อีกกรณี สุ่มตัวอย่าง ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน แล้ว
ในคอลัมน์ 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 :D ขอถามอาจารย์และเพื่อนสมาชิกเพิ่มเติมครับในกรณี สุ่มตัวอย่าง ครึ่งเดือนแรกกับครึ่งเดือนหลัง ไม่ซ้ำคนและวันที่ ใน 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 :D อีกกรณี สุ่มตัวอย่าง ชื่อไม่ซ้ำ วันไม่ซ้ำ ไม่สนครึ่งเดือน แล้ว
ในคอลัมน์ 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
:D ขอบคุณครับ ได้ตามที่ต้องการครับ