เวลาต้องจำลองข้อมูล ทดสอบระบบ หรือสุ่ม “เลขล็อตเตอรี่/รหัส” เรามักต้องการ สุ่มตัวเลขแบบไม่ซ้ำ (unique randoms) เพื่อหลีกเลี่ยงค่าเดิมซ้ำ ๆ บทความนี้รวมทั้งวิธี Excel 365 ที่สั้นและทรงพลังด้วย SORTBY + SEQUENCE + RANDARRAY และวิธี เวอร์ชันเก่า ด้วย RAND + RANK ให้ใช้งานได้ทุกเครื่อง
ทำไม/เมื่อไหร่ควรใช้
- ต้องการ “เลขไม่ซ้ำ” สำหรับสุ่มตัวอย่าง, แจกจ่ายงาน, สุ่มคิว
- สร้างข้อมูลจำลอง (Mock Data) เพื่อทดสอบสูตร/แดชบอร์ด
- สุ่มเลือก k ค่าแบบไม่ซ้ำจากช่วง 1..n หรือจาก “รายการชื่อ”
วิธีสุ่มตัวเลขแบบไม่ซ้ำใน Excel
วิธีที่ 1 (Excel 365/2021): สุ่ม “เรียงสับเปลี่ยน” ของ 1..n
สุ่มตัวเลข 1..100 แบบไม่ซ้ำ (สลับลำดับทั้งหมด):
=SORTBY(SEQUENCE(100), RANDARRAY(100))
เลือกเพียง k ตัวจาก 1..n (ไม่ซ้ำ)
ดึงมาแค่ 10 ตัวจาก 1..100:
=TAKE(SORTBY(SEQUENCE(100), RANDARRAY(100)), 10)
สุ่ม 6 ตัวจาก 1..49 แล้วเรียงจากน้อยไปมาก (สไตล์ล็อตเตอรี่)
=SORT(TAKE(SORTBY(SEQUENCE(49), RANDARRAY(49)), 6))
สุ่มจากช่วงที่ไม่เริ่มที่ 1 (เช่น 10..99)
=TAKE(SORTBY(SEQUENCE(90,,10), RANDARRAY(90)), 8)
สุ่ม “รายการชื่อ” แบบไม่ซ้ำ (สับลิสต์)
หากรายการอยู่ที่ A2:A50 ให้สุ่มลำดับใหม่ทั้งลิสต์:
=SORTBY(A2:A50, RANDARRAY(ROWS(A2:A50)))
ต้องการเพียง 5 รายการแรก: เติม TAKE(...,5) ต่อท้าย
📥 ดาวน์โหลดไฟล์ตัวอย่างที่นี่ ⬇️ excel_unique_random_numbers_examples.xlsx
วิธีเวอร์ชันเก่า (ก่อน 365): RAND + RANK
- ใส่ลำดับ 1..20 ในคอลัมน์ A
- คอลัมน์ B ใส่
=RAND()ลงทุกแถว - คอลัมน์ C ใส่
=RANK(B2,$B$2:$B$21) - คอลัมน์ D คืน “ลำดับแบบสุ่มไม่ซ้ำ” ด้วย
=INDEX($A$2:$A$21, MATCH(ROW(A1), $C$2:$C$21, 0))แล้วลากลง
เคล็ดลับ: กด F9 เพื่อสุ่มใหม่ และใช้ Copy → Paste Values เมื่อต้อง “ตรึงค่า”
ปัญหาที่พบบ่อย + วิธีแก้
- ได้เลขซ้ำ → อย่าใช้
RANDBETWEENล้วน ๆ ; ใช้สูตรSORTBY(SEQUENCE(...), RANDARRAY(...))จะได้เลขไม่ซ้ำแน่นอน - ค่าสุ่มเปลี่ยนทุกครั้ง → เมื่อได้ผลลัพธ์ที่ต้องการ ให้ Paste Values
- ต้องการผลเดิมซ้ำได้ → บันทึกไฟล์ที่ “Paste Values แล้ว” หรือแช่สูตรในชีตแยก
ประโยชน์
- ได้ตัวเลข “ไม่ซ้ำ” จริงตามต้องการ
- เขียนสั้น อ่านง่าย (โดยเฉพาะ 365)
- รองรับทั้งสุ่มจากช่วงตัวเลข และสุ่มจาก “รายการชื่อ”
สรุปส่งท้าย
การ สุ่มตัวเลขแบบไม่ซ้ำ ใน Excel ทำได้ง่ายและแม่นยำมากด้วยสูตรยุคใหม่ SORTBY(SEQUENCE(), RANDARRAY()) ที่ให้ทั้ง “เรียงสับเปลี่ยน” และ “สุ่มเลือกบางตัว” ส่วนเครื่องที่ยังไม่ใช่ 365 ก็ทำได้ด้วยวิธี RAND + RANK พร้อม Paste Values เพื่อคงผลลัพธ์ที่ได้ ใช้ชุดเทคนิคนี้ คุณจะสุ่มแบบมืออาชีพได้ในไม่กี่คลิก ✨





