⚠ ข้อควรระวัง – สูตรนี้ใช้ได้เฉพาะใน Excel 365 และ Excel 2021 ซึ่งสนับสนุนการใช้ dynamic array เท่านั้น
โดยจะใช้ฟังก์ชัน SORTBY, SEQUENCE และ RANDARRAY ทำงานร่วมกัน โดยจะเริ่มจากง่าย ๆ ไม่ต้องใส่ตัวเลือกอะไรเยอะแยะไปก่อน
=SORTBY(SEQUENCE(n),RANDARRAY(n))
โดยที่ n คือ จำนวนสุ่มที่เราต้องการ และตัวอย่างในภาพคือ 10 ซึ่งจะเห็นว่าสูตรนี้เหมือนแค่เอาเลข 1 ถึง 10 มาเรียงสลับตำแหน่งกันเฉย ๆ
ซึ่งบางท่านไม่ได้ต้องการแบบนี้
การสุ่มจำนวนเต็มแบบไม่ซ้ำ
คราวนี้หากเราใส่ตัวเลือกเพิ่มเติมเข้าไปในฟังก์ชัน SEQUENCE ดังนี้
- n คือ จำนวนที่จะสุ่มเหมือนเดิม
- start คือ เริ่มสุ่มจากเลขอะไร
- step คือ ให้เพิ่มขึ้นทีละเท่าไหร่
=SORTBY(SEQUENCE(n,,start,step),RANDARRAY(n))
โดยตัวอย่างในภาพคือ เราต้องการสุ่ม 10 เลข เริ่มจาก 100 และเพิ่มขึ้นทีละ 3
อย่างไรก็ตาม หากจำนวนน้อย ๆ ก็ดูเหมือนว่าค่าที่สุ่มได้ดูค่าใกล้ ๆ กันอยู่ซึ่งบางคนอาจไม่ชอบ เพราะจะมีลำดับการเพิ่มขึ้นทีละ 3 หรือตามที่เรากำหนดไว้ ซึ่งอาจจะเหมาะสำหรับบางงาน เพราะอาจมีบางคนจับรูปแบบ (pattern) การสุ่มได้ คือรู้ว่าค่าที่ได้จะลงท้ายด้วย 5 หรือ 10 หากกำหนด step ตามนั้น เป็นต้น
แต่หากไม่ต้องการแบบนี้ ลองดูอีกแบบด้านล่าง ซึ่งอาจมีความซับซ้อนกว่านิดหน่อย แต่ไม่มีการกำหนด step ไว้
การสุ่มจำนวนเต็มแบบไม่ซ้ำ (แบบที่ 2)
- n คือ จำนวนที่จะสุ่ม
- start คือ เริ่มสุ่มจากเลขอะไร
- stop คือ สุ่มถึงเลขอะไร
=INDEX(UNIQUE(RANDARRAY(n^2, , start, stop, TRUE)), SEQUENCE(n))
การสุ่มเลขมีทศนิยมแบบไม่ซ้ำ
ที่จริงสูตรนี้ก็เหมือนกับสูตรได้บนทุุกอย่าง เพียงแค่เป็นอาร์กิวเมนต์ตัวสุดท้ายเป็น FALSE ก็จะได้เลขสุ่มที่มีทศนิยม
=INDEX(UNIQUE(RANDARRAY(n^2, , min, max, FALSE)), SEQUENCE(n))
สำหรับ ไฟล์ตัวอย่าง นี้ อย่างลืมนะว่า สูตรที่เราใช้เป็น dynamic arrays ดังนั้นถ้าจะ copy ให้เลือกที่แถว 2 เท่านั้น
หากเลือกที่แถวอื่น ❌ จะเห็นสูตรเป็นสีเทา ๆ 😁
Leave a Reply