สูตรสุ่มตัวเลขแบบไม่ซ้ำใน Excel

⚠ ข้อควรระวัง – สูตรนี้ใช้ได้เฉพาะใน 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 เท่านั้น


หากเลือกที่แถวอื่น ❌ จะเห็นสูตรเป็นสีเทา ๆ 😁


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.