---
title: ARRAYFORMULA – กระจายสูตรเดียวไปทั้งคอลัมน์แบบอัตโนมัติ
url: https://www.thepexcel.com/functions/google-sheets/google/arrayformula-google-sheets/
type: function-explainer
program: Google Sheets
syntax: =ARRAYFORMULA(array_formula)
date: 2025-12-20
scores:
  popularity: 9
  difficulty: 6
  usefulness: 10
---

# ARRAYFORMULA – กระจายสูตรเดียวไปทั้งคอลัมน์แบบอัตโนมัติ

> กระจายสูตรเดียวออกเป็นหลายแถว/คอลัมน์พร้อมกันแบบอัตโนมัติ

## คำอธิบาย

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

## Syntax

```excel
=ARRAYFORMULA(array_formula)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| array_formula | Yes | Range/Array/Formula |  | สูตรหรือช่วงข้อมูลที่ต้องการให้กระจายผลลัพธ์ออกหลายเซลล์ สามารถเป็น: - Range เดียว เช่น A2:A100 - การคำนวณระหว่าง Range เช่น A2:A100 * B2:B100 - ฟังก์ชันที่ทำงานกับ Range เช่น IF(A2:A100>100, "สูง", "ต่ำ") - ฟังก์ชันที่รวมหลาย Range เช่น A2:A100 & " " & B2:B100 |

## เคสการใช้งาน

### คำนวณทั้งคอลัมน์ในครั้งเดียว

แทนที่จะลากสูตร =A2*B2 ลงมาหลายพันแถว ใช้ ARRAYFORMULA ครั้งเดียวแล้วให้มันคำนวณทุกแถวอัตโนมัติ ประหยัดเวลาและทำให้ชีทเร็วขึ้น

### สร้างสูตรที่อัปเดตอัตโนมัติเมื่อมีข้อมูลใหม่

เมื่อมีข้อมูลแถวใหม่เพิ่มเข้ามา ARRAYFORMULA จะคำนวณให้ทันทีโดยไม่ต้องแก้ไขสูตรหรือลากสูตรใหม่

### ใช้ฟังก์ชันที่ปกติทำงานทีละเซลล์กับข้อมูลหลายแถว

ฟังก์ชันอย่าง IF, VLOOKUP, LEFT, MID ปกติทำงานทีละเซลล์ แต่ ARRAYFORMULA ทำให้ใช้กับทั้ง Range ได้พร้อมกัน

### ลดจำนวนสูตรเพื่อเพิ่มประสิทธิภาพชีท

ชีทที่มีสูตรหลายหมื่นเซลล์จะทำงานช้าและ lag ใช้ ARRAYFORMULA แทนจะลดจำนวนสูตรจากหลายพันเหลือแค่หนึ่ง

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: การคำนวณพื้นฐาน (คูณทั้งคอลัมน์)

```excel
=ARRAYFORMULA({1;2;3;4;5} * 2)
```

**ผลลัพธ์:** `{2; 4; 6; 8; 10}`

สูตรนี้คูณทุกค่าใน Array ด้วย 2 พร้อมกันในครั้งเดียว ผลลัพธ์กระจายออกมา 5 แถว
.
ในการใช้งานจริง จะเขียนว่า =ARRAYFORMULA(A2:A6 * 2) โดย A2:A6 มีค่า 1, 2, 3, 4, 5
.
แทนที่จะเขียน =A2*2 แล้วลากลงมา 5 เซลล์ ใช้ ARRAYFORMULA ครั้งเดียวจบครับ ✨

### 2. ตัวอย่างที่ 2: คำนวณระหว่าง 2 คอลัมน์ (ราคา x จำนวน)

```excel
=ARRAYFORMULA(A2:A100 * B2:B100)
```

**ผลลัพธ์:** `คำนวณ ราคา x จำนวน ทุกแถวพร้อมกัน`

ตารางข้อมูล:
- คอลัมน์ A: ราคาต่อชิ้น (100, 250, 80, ...)
- คอลัมน์ B: จำนวนชิ้น (5, 3, 10, ...)
.
สูตรนี้คูณ A*B ทุกแถวตั้งแต่แถว 2 ถึง 100 พร้อมกันเลย ผลลัพธ์ออกมาเป็น 500, 750, 800, ...
.
ที่ต้องระวังคือ Range ทั้งสองต้องมีขนาดเท่ากัน ถ้า A2:A100 กับ B2:B50 จะ Error ครับ 💡

### 3. ตัวอย่างที่ 3: ใช้กับ IF (เงื่อนไขทั้งคอลัมน์)

```excel
=ARRAYFORMULA(IF(A2:A100>500, "เกินงบ", "ในงบ"))
```

**ผลลัพธ์:** `แสดง "เกินงบ" หรือ "ในงบ" ตามเงื่อนไขทุกแถว`

สมมติ A2:A100 เป็นยอดค่าใช้จ่าย
.
สูตรนี้เช็คทุกแถวว่ามากกว่า 500 หรือไม่ แล้วแสดงผลทันที ไม่ต้องลาก IF ลงมาทีละเซลล์
.
ส่วนตัวผมใช้เทคนิคนี้บ่อยมากเวลาทำ Dashboard หรือรายงานแบบ Conditional เพราะแค่สูตรเดียวจัดการได้ทั้งหมดเลยครับ 😎

### 4. ตัวอย่างที่ 4: ใช้กับ IF + LEN (ข้ามแถวว่าง)

```excel
=ARRAYFORMULA(IF(LEN(A2:A100), A2:A100 * B2:B100, ""))
```

**ผลลัพธ์:** `คำนวณเฉพาะแถวที่มีข้อมูล แถวว่างไม่แสดงผล`

ปัญหาของ ARRAYFORMULA คือมันจะคำนวณทุกแถวใน Range แม้แถวที่ว่างด้วย ทำให้ได้ 0 หรือ Error เต็มไปหมด
.
เทคนิคนี้ใช้ IF(LEN(A2:A100), ..., "") เพื่อเช็คว่ามีข้อมูลก่อนคำนวณ LEN คืน 0 ถ้าว่าง (=FALSE) และคืนจำนวนตัวอักษรถ้ามีข้อมูล (=TRUE)
.
ส่วนตัวผมใช้ pattern นี้เกือบทุกครั้งที่ใช้ ARRAYFORMULA เพราะป้องกันปัญหาแถวว่างได้ดีมากครับ 💡

## หมายเหตุเพิ่มเติม

💡 **Tips จากประสบการณ์:**
.
1. **ระบุ Range ชัดเจน** - อย่าใช้ A:A ให้ใช้ A2:A1000 จะทำให้ชีทเร็วขึ้นเยอะ เพราะไม่ต้องคำนวณแถวว่างหลายหมื่นแถว
.
2. **ใช้ IF(LEN(...)) เสมอ** - pattern มาตรฐานคือ =ARRAYFORMULA(IF(LEN(A2:A), [สูตร], "")) จะได้ผลลัพธ์แค่แถวที่มีข้อมูล
.
3. **Range ต้องขนาดเท่ากัน** - ถ้าคำนวณ A2:A100 * B2:B100 ทั้งสอง Range ต้องมีขนาดเท่ากัน ไม่งั้นจะ Error
.
4. **ฟังก์ชันบางตัวไม่ต้องใช้** - FILTER, SORT, QUERY, UNIQUE ส่งคืน Array อยู่แล้ว ไม่ต้องห่อด้วย ARRAYFORMULA
.
ส่วนตัวผมใช้ ARRAYFORMULA เกือบทุกชีทที่ทำ เพราะมันช่วยให้จัดการข้อมูลได้รวดเร็วและไม่ต้องมานั่งลากสูตรแบบเดิมๆ อีกต่อไป 😎

## คำถามที่พบบ่อย

**Q: ARRAYFORMULA ต่างจากการลากสูตรปกติอย่างไร?**

การลากสูตรปกติจะสร้างสูตรแยกในแต่ละเซลล์ ถ้ามี 10,000 แถว ก็จะมี 10,000 สูตร ทำให้ชีทช้าและกิน Memory เยอะ
.
ส่วน ARRAYFORMULA ใช้สูตรเดียว คำนวณครั้งเดียว แล้วกระจายผลลัพธ์ออกมา ทำให้ชีทเร็วขึ้นและไม่ lag นอกจากนี้ยังอัปเดตอัตโนมัติเมื่อมีข้อมูลใหม่ด้วยครับ 😎

**Q: ทำไมต้องใส่ IF(LEN(...)) ก่อนใช้ ARRAYFORMULA?**

เพราะ ARRAYFORMULA จะคำนวณทุกเซลล์ใน Range ที่กำหนด รวมถึงแถวว่างด้วย ทำให้ได้ผลลัพธ์ 0 หรือ Error เต็มคอลัมน์
.
ใช้ IF(LEN(A2:A100), [สูตร], "") เพื่อเช็คว่ามีข้อมูลก่อนคำนวณ จะได้ผลลัพธ์แค่แถวที่มีข้อมูลจริงๆ ครับ 💡

**Q: ARRAYFORMULA ใช้ได้กับฟังก์ชันทุกตัวหรือเปล่า?**

ใช้ได้กับฟังก์ชันที่ปกติทำงานทีละเซลล์ เช่น IF, VLOOKUP, LEFT, MID, CONCATENATE, SUMIF
.
แต่ไม่จำเป็นต้องใช้กับฟังก์ชันที่ส่งคืน Array อยู่แล้ว เช่น FILTER, SORT, QUERY, UNIQUE เพราะมันกระจายผลลัพธ์เองอัตโนมัติ
.
นอกจากนี้ บางฟังก์ชันไม่รองรับ ARRAYFORMULA เช่น SUM, SUMIFS, COUNT, COUNTA, COUNTIFS, JOIN, TEXTJOIN ครับ

**Q: ชีท lag หลังใช้ ARRAYFORMULA ทำอย่างไรดี?**

มีเทคนิคหลักๆ ดังนี้ครับ:
.
1. **ระบุ Range ชัดเจน** - อย่าใช้ A:A ให้ใช้ A2:A1000 แทน จะเร็วขึ้นเยอะ
2. **ใช้ IF(LEN(...))** - ป้องกันการคำนวณแถวว่างที่ไม่จำเป็น
3. **หลีกเลี่ยง ARRAYFORMULA ซ้อนกัน** - ถ้าซับซ้อนมากให้แยกเป็น Helper Column
4. **Paste Values** - ถ้าข้อมูลไม่เปลี่ยนบ่อย ลอง Copy > Paste as Values
.
ส่วนตัวผมพบว่าข้อ 1 กับ 2 ช่วยได้มากที่สุดครับ 😊

**Q: ARRAYFORMULA กับ Dynamic Array ใน Excel 365 เหมือนกันหรือเปล่า?**

หลักการเดียวกันคือใช้สูตรเดียวกระจายผลลัพธ์หลายเซลล์ แต่วิธีใช้ต่างกันครับ:
.
**Google Sheets:** ต้องห่อสูตรด้วย =ARRAYFORMULA(...) แบบ explicit
.
**Excel 365:** มี Dynamic Array อัตโนมัติ ไม่ต้องห่อ เช่น =A2:A10*2 จะ spill เองเลย
.
ถ้าคุ้นเคยกับ Excel 365 แล้วมาใช้ Google Sheets อย่าลืมห่อด้วย ARRAYFORMULA นะครับ

## ฟังก์ชันที่เกี่ยวข้อง

- [FILTER – กรองข้อมูลด้วยเงื่อนไข แสดงเฉพาะแถวที่ตรงเงื่อนไข](https://www.thepexcel.com/functions/google-sheets/filter/filter-google-sheets/)
- [QUERY – ฟังก์ชันค้นหาและจัดการข้อมูลด้วยภาษา SQL-like](https://www.thepexcel.com/functions/google-sheets/google/query-google-sheets/)
- sort-google-sheets
- unique-google-sheets
- if-google-sheets

## แหล่งข้อมูลเพิ่มเติม

- [Google Docs Editors Help: ARRAYFORMULA](https://support.google.com/docs/answer/3093275) _(Official Documentation)_
- [Google Sheets ARRAYFORMULA With Examples - Coupler.io](https://blog.coupler.io/arrayformula-google-sheets/) _(Tutorial)_

---

_Source: [https://www.thepexcel.com/functions/google-sheets/google/arrayformula-google-sheets/](https://www.thepexcel.com/functions/google-sheets/google/arrayformula-google-sheets/)_
