ทุกครั้งที่มีแถวใหม่ ต้องลากสูตรลงมาเอง ลืมเมื่อไหร่ แถวนั้นไม่มีสูตร ยอดรวมขาดโดยไม่มีใครรู้ — โดยเฉพาะชีตที่รับข้อมูลจาก Google Form ที่แถวใหม่โผล่มาเองทุกวัน
ARRAYFORMULA คือทางลัดที่แก้ปัญหานี้: เขียนสูตรครั้งเดียวที่หัวคอลัมน์ แล้วสูตรทำงานให้ทุกแถว รวมถึงแถวที่ยังไม่เกิดขึ้น ไม่ต้องลากอีกเลย
ARRAYFORMULA ทำอะไร — อธิบายใน 30 วินาที
สูตรปกติคิดทีละช่อง: =B2*C2 ได้ผลของแถว 2 แถวเดียว ต้องก๊อปลงไปแถว 3, 4, 5… เอง ส่วน =ARRAYFORMULA(B2:B*C2:C) สั่งให้คูณทั้งคอลัมน์ทีเดียว ผลจะ "ล้น" ลงไปทุกแถวเองจากสูตรเดียว
| สูตรปกติ (ลากลง) | ARRAYFORMULA (สูตรเดียว) | |
|---|---|---|
| จำนวนสูตรในไฟล์ | 1 สูตรต่อ 1 แถว | ทั้งคอลัมน์ใช้สูตรเดียว |
| แถวใหม่ | ต้องลากสูตรลงเอง | คำนวณให้เองทันที |
| แก้สูตร | แก้แล้วต้องลากใหม่ทั้งคอลัมน์ | แก้ที่ช่องเดียวจบ |
| คนอื่นพิมพ์ทับ | ทับได้ทีละช่อง ไม่มีใครรู้ | ทับแล้วสูตรขึ้น #REF! ทันที เห็นปัญหาเลย |
ทางลัดคีย์บอร์ด: พิมพ์สูตรปกติ เช่น =B2:B*C2:C แล้วกด Ctrl + Shift + Enter Google Sheets จะครอบ ARRAYFORMULA ให้เอง
สูตรมาตรฐานที่ใช้ได้เกือบทุกงาน (จำแบบนี้ไว้แบบเดียวพอ)
วางสูตรไว้ที่หัวคอลัมน์ (แถว 1) แบบนี้ แล้วไม่ต้องแตะคอลัมน์นั้นอีก:

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | |
|---|---|---|---|---|
| 1 | สินค้า | จำนวน | ราคา/ชิ้น | ยอดเงิน |
| 2 | กาแฟ | 3 | 45 | 135 |
| 3 | ชาไทย | 2 | 40 | 80 |
| 4 | โกโก้ | 5 | 50 | 250 |
| 5 |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- D1
={"ยอดเงิน";ARRAYFORMULA(IF(A2:A="","",B2:B*C2:C))}
สูตรอยู่ที่ D1 ช่องเดียว ช่อง D2 ลงไปเป็นผลที่ล้นลงมาเอง (ห้ามพิมพ์อะไรทับ) · แถว 5 ยังว่าง ช่อง D5 จึงว่างตาม — พอพิมพ์สินค้าแถวใหม่ ยอดเงินขึ้นเองทันที
- 1
{"ยอดเงิน"; … }= หัวตาราง + ผลลัพธ์วงเล็บปีกกาเอาข้อความหัวตารางวางไว้บนสุด แล้วต่อด้วยผลของทุกแถวด้านล่าง (; = ขึ้นบรรทัดใหม่) สูตรจึงอยู่ที่หัวตาราง ไม่มีใครเผลอลบตอนลบข้อมูล - 2
IF(A2:A="","", …)= แถวว่างให้ว่างถ้าไม่ใส่ แถวที่ยังไม่มีข้อมูลจะขึ้น 0 ยาวไปถึงแถวล่างสุดของชีต — ใส่ไว้เสมอ - 3
B2:B*C2:C= ช่วงแบบเปิดท้ายไม่ใส่เลขแถวปิดท้าย ช่วงจะยาวถึงแถวสุดท้ายเอง ข้อมูลเพิ่มกี่แถวก็ครอบคลุม
ARRAYFORMULA กับสูตรอื่น: ทำได้มากกว่าการคูณ
ฟังก์ชันส่วนใหญ่ใส่ใน ARRAYFORMULA ได้ เช่น ดึงราคาจากตารางราคาให้ทั้งคอลัมน์ด้วย VLOOKUP:

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | เมนู | จำนวน | ราคา | ยอด | เมนู | ราคา | |
| 2 | กาแฟ | 2 | 45 | 90 | กาแฟ | 45 | |
| 3 | ชาไทย | 1 | 40 | 40 | ชาไทย | 40 | |
| 4 | มัทฉะ | 1 | ไม่มีในรายการ | 0 | โกโก้ | 50 | |
| 5 |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- C1
={"ราคา";ARRAYFORMULA(IF(A2:A="","",IFERROR(VLOOKUP(A2:A,$F$2:$G$4,2,FALSE),"ไม่มีในรายการ")))} - D1
={"ยอด";ARRAYFORMULA(IF(A2:A="","",IFERROR(B2:B*C2:C,0)))}
VLOOKUP ปกติรับค่าค้นหาทีละช่อง แต่ใน ARRAYFORMULA ส่งทั้งคอลัมน์ A2:A เข้าไปได้ — ได้ราคาครบทุกแถวจากสูตรเดียว
หรือให้ชีตบอกสถานะสต็อกทุกแถวด้วย IF:

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | |
|---|---|---|---|---|
| 1 | สินค้า | คงเหลือ | จุดสั่งซื้อ | สถานะ |
| 2 | แก้วกาแฟ | 12 | 20 | สั่งเพิ่ม |
| 3 | หลอด | 300 | 100 | พอ |
| 4 | ฝาแก้ว | 50 | 50 | สั่งเพิ่ม |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- D1
={"สถานะ";ARRAYFORMULA(IF(A2:A="","",IF(B2:B<=C2:C,"สั่งเพิ่ม","พอ")))}
สังเกตว่า IFERROR ครอบไว้ในตัวอย่างราคา — เมนูที่ไม่มีในตารางราคา (มัทฉะ) จะขึ้นข้อความแทน #N/A ทั้งคอลัมน์จึงไม่พังเพราะแถวเดียว
ใช้คู่กับ Google Form: งานที่ ARRAYFORMULA เกิดมาเพื่อทำ
ชีตคำตอบของ Google Form แทรกแถวใหม่ทุกครั้งที่มีคนส่งฟอร์ม สูตรที่ลากไว้ล่วงหน้าจึงไม่ตามมาในแถวใหม่ — วิธีที่ถูกคือใส่ ARRAYFORMULA ไว้ที่หัวคอลัมน์ว่างทางขวาของคำตอบ:
- 1
เปิดชีตคำตอบ (Form Responses 1)
หาคอลัมน์ว่างคอลัมน์แรกทางขวาของคำถามสุดท้าย - 2
พิมพ์สูตรที่แถว 1 ของคอลัมน์นั้น
เช่น ยอดเงิน = จำนวน × ราคา:={"ยอดเงิน";ARRAYFORMULA(IF(A2:A="","",C2:C*D2:D))}(A = ประทับเวลา ซึ่งมีทุกครั้งที่มีคนส่ง) - 3
ส่งฟอร์มทดสอบ 1 ครั้ง
แถวใหม่ต้องมียอดเงินขึ้นเองโดยไม่ต้องทำอะไร
อ่านต่อเรื่องเชื่อม Form กับชีตได้ที่ บทความ Google Form
ข้อผิดพลาดที่เจอบ่อย
ขึ้น #REF! "Array result was not expanded"
เลข 0 ยาวลงไปถึงแถวล่างสุด
SUM / COUNTIF ใส่ใน ARRAYFORMULA แล้วได้ช่องเดียว
ชีตช้าลงมาก
อยากให้คำตอบจาก Form ออกเป็นใบเสร็จ PDF และส่งอีเมลให้ลูกค้าเอง?
คำถามที่ถามบ่อย
ARRAYFORMULA คืออะไร?
ฟังก์ชันของ Google Sheets ที่ทำให้สูตรเดียวคำนวณได้ทั้งช่วง เช่น ทั้งคอลัมน์ ไม่ต้องลากสูตรลงทีละแถว และแถวใหม่ที่เพิ่มเข้ามาก็คำนวณให้เอง
ทำไมสูตรไม่ตามไปในแถวใหม่ของ Google Form?
ฟอร์มแทรกแถวใหม่ทุกครั้งที่มีคนส่ง สูตรที่ลากไว้จึงไม่ติดมา ให้ใช้ ARRAYFORMULA ที่หัวคอลัมน์แทน สูตรเดียวครอบทุกแถวที่จะเข้ามา
Excel มี ARRAYFORMULA ไหม?
Excel 365 ไม่ต้องใช้ ARRAYFORMULA เพราะสูตรอย่าง =B2:B10*C2:C10 ล้นลงเองอยู่แล้ว (dynamic array) ส่วน Excel รุ่นเก่าใช้ Ctrl + Shift + Enter
ARRAYFORMULA ขึ้น #REF! แก้ยังไง?
แปลว่าช่องที่ผลจะล้นลงไปมีข้อมูลขวางอยู่ ลบข้อมูลในคอลัมน์ใต้สูตรให้หมด ผลลัพธ์จะแสดงเอง
ใช้ ARRAYFORMULA กับ VLOOKUP ได้ไหม?
ได้ ส่งทั้งคอลัมน์เป็นค่าค้นหา เช่น =ARRAYFORMULA(IFERROR(VLOOKUP(A2:A,ตารางราคา,2,FALSE),"")) จะได้ราคาทุกแถวจากสูตรเดียว
