---
title: วิธีสุ่ม item จากรายการที่เราเตรียมไว้
url: https://www.thepexcel.com/random-item-from-range/
type: post
date: 2014-01-01
updated: 2020-04-02
author: Sira Ekabut
categories: [Excel ทั่วไป]
tags: [formula, function, CHOOSE, counta, index, randbetween]
---

# วิธีสุ่ม item จากรายการที่เราเตรียมไว้

บางครั้งเพื่อนๆ อาจต้องการสุ่ม item ซึ่งอาจจะเป็นคำบางคำ หรือ เลขบางเลข ออกมาจากรายการที่เราเตรียมไว้ แล้วเราจะทำอย่างนั้นด้วย Excel ได้ยังไง มาดูกันครับ

 

แน่นอนว่าการจะบรรลุวัตถุประสงค์อย่างหนึ่ง ไม่จำเป็นต้องมีการผสมสูตรเพียงแบบเดียว บางทีเพื่อนๆ อาจเจอหรือค้นพบการผสมสูตรที่มีประสิทธิภาพกว่าผมก็ได้ ถ้าเจอแบบนั้นแล้วอย่าลืมมาแชร์กันบ้างนะครับ!

 

## สุ่ม item แบบที่ 1 : เขียนรายการที่จะสุ่มลงไปในสูตรเลย

 

### ส่วนประกอบ

 
- RANDBETWEEN (bottom,top) = ตัวสุ่มจากช่วงของเลขที่กำหนด
- CHOOSE (index_num,value1,value2,…) = กำหนดว่าจะเอาผลลัพธ์ที่เท่าไหร่มาแสดง

 

### Concept การผสมสูตร

 
- ถ้าจะใช้วิธีนี้ ก่อนอื่นเราต้องรู้ว่าจะมีรายการที่จะให้สุ่มทั้งหมดกี่รายการ สมมุติว่า 5 อัน
- ใช้ RANDBETWEEN สุ่มเลขระหว่าง 1-5 ออกมาก่อน
- จากนั้นได้ผลลัพธ์อะไร (เลขสุ่มระหว่าง 1-5) ก็เอาไปใส่ใน index_num ของฟังก์ชั่น CHOOSE อีกทีซึ่งเตรียมเขียนรายการที่จะสุ่มทั้ง 5 รายการไว้แล้ว

 

### ขั้นตอนการผสมสูตร

 
- เขียนสูตรในช่องไหนก็ได้ ว่า

 

```
=RANDBETWEEN(1,5)
```

 

ได้เลขสุ่ม ระหว่าง 1-5

 

```
=CHOOSE (เลขสุ่ม,รายการที่1,รายการที่2,รายการที่3,รายการที่4,รายการที่5)
```

 

**ผสม!! **

 

```
 =CHOOSE (RANDBETWEEN(1,5),รายการที่1,รายการที่2,รายการที่3,รายการที่4,รายการที่5)
```

 

หมายเหตุ : รายการที่ xxx ถ้าเป็นตัวหนังสือต้องใส่ในเครื่องหมายคำพูด (“”) ด้วย แต่ถ้าเป็นตัวเลข หรือ เป็นสูตรก็ใส่ลงไปตรงๆ ได้เลย

 
- จากนั้นกด F9 เพื่อ Random ได้เลย

 

## สุ่ม item แบบที่ 2 : มีรายการที่จะสุ่มอยู่ในตาราง Excel เป็น Range คอลัมน์นึง

 

### ส่วนประกอบ

 
- RANDBETWEEN (bottom,top) = ตัวสุ่มจากช่วงของเลขที่กำหนด
- INDEX (reference,row_num,[column_num]) = ดึงค่ามาแสดงจากพิกัดที่กำหนด
- COUNTA (value1,value2,…) (Optional) = นับว่ามีกี่ช่องที่ไม่ว่างเปล่า

 

### Concept การผสมสูตร

 
- ถ้าจะใช้วิธีนี้ ต้องเขียนรายการที่จะสุ่มลงไปในคอลัมน์ซักอันนึงก่อน สมมุติเขียนใน Column B (เพื่อให้ง่าย ให้เขียนโดยไม่ต้องมีหัวตารางนะครับ และให้เขียนต่อกันลงไปเรื่อยๆ อย่าเว้นช่อง)
- วิธีนี้ ถ้าจะกำหนดจำนวนรายการแน่นอนจะง่ายมาก แต่ในที่นี้เราจะทำแบบเผื่อให้มาเพิ่มรายการทีหลังก็ได้ (Dynamic Range) โดยไม่ต้องแก้สูตรใหม่ด้วย
- ใช้ COUNTA เพื่อนับว่าที่เราใส่ลงไปใน Column B มีกี่รายการ (ที่ไม่ใช่ค่าว่างเปล่า) สมมติว่านับได้ bbb รายการ
- ใช้ RANDBETWEEN สุ่มเลขระหว่าง 1 ถึง bbb ออกมาก่อน
- ใช้ INDEX ลากคลุม Column B เอาไว้ เป็น Reference จากนั้นให้เลขสุ่มเป็น row_num

 

### ขั้นตอนการผสมสูตร

 
- เขียนรายการที่จะสุ่มลงไปในคอลัมน์ B จำนวน bbb รายการ
- เขียนสูตรในช่องไหนก็ได้ ที่ไม่ใช่คอลัมน์ B ว่า

 

```
=COUNTA(B:B)
```

 

สมมติว่านับได้ bbb รายการ

 

```
=RANDBETWEEN(1,เลขที่นับได้)
```

 

**ผสมครั้งที่ 1 !**

 

```
= RANDBETWEEN(1,COUNTA(B:B))
```

 

ได้เลขสุ่ม

 

จากนั้นใช้ = INDEX (reference,row_num) โดยให้ คอลัมน์ B (หรือ B:B) เป็น reference และค่าที่สุ่มได้เป็น row_num

 

```
=INDEX(B:B,เลขสุ่ม)
```

 

**ผสมครั้งที่ 2 !!**

 

```
=INDEX(B:B,RANDBETWEEN(1,COUNTA(B:B)))
```

 
- จากนั้นกด F9 เพื่อ Random ได้เลย

---

_Source: [https://www.thepexcel.com/random-item-from-range/](https://www.thepexcel.com/random-item-from-range/)_
