บทความ ARRAYFORMULA Excel / Google Sheets

ARRAYFORMULA Google Sheets — สูตรทำงานทั้งคอลัมน์ใน 1 เซลล์

พี่โยไอที
11 เมษายน 2026 · อัปเดต 13 ตุลาคม 2026
10 นาที
ARRAYFORMULA Google Sheets — สูตรทำงานทั้งคอลัมน์ใน 1 เซลล์

Cheat Sheet สูตร Google Sheets ฟรี

รวมสูตรที่ใช้บ่อย พร้อมตัวอย่าง อธิบายเข้าใจง่าย เปิดดูได้ตลอดขณะทำงาน

ทุกครั้งที่มีแถวใหม่ ต้องลากสูตรลงมาเอง ลืมเมื่อไหร่ แถวนั้นไม่มีสูตร ยอดรวมขาดโดยไม่มีใครรู้ — โดยเฉพาะชีตที่รับข้อมูลจาก 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) แบบนี้ แล้วไม่ต้องแตะคอลัมน์นั้นอีก:

ตัวอย่าง 1: สูตรเดียวที่หัวคอลัมน์ คิดยอดเงินให้ทุกแถว — รวมแถวที่ยังไม่ได้กรอก
ภาพหน้าจอ Google Sheets: ตัวอย่าง 1: สูตรเดียวที่หัวคอลัมน์ คิดยอดเงินให้ทุกแถว — รวมแถวที่ยังไม่ได้กรอก

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)

ดูเป็นตาราง (ก๊อปตัวเลขได้)
ABCD
1สินค้าจำนวนราคา/ชิ้นยอดเงิน
2กาแฟ345135
3ชาไทย24080
4โกโก้550250
5

สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):

  • D1={"ยอดเงิน";ARRAYFORMULA(IF(A2:A="","",B2:B*C2:C))}

สูตรอยู่ที่ D1 ช่องเดียว ช่อง D2 ลงไปเป็นผลที่ล้นลงมาเอง (ห้ามพิมพ์อะไรทับ) · แถว 5 ยังว่าง ช่อง D5 จึงว่างตาม — พอพิมพ์สินค้าแถวใหม่ ยอดเงินขึ้นเองทันที

  1. 1

    {"ยอดเงิน"; … } = หัวตาราง + ผลลัพธ์

    วงเล็บปีกกาเอาข้อความหัวตารางวางไว้บนสุด แล้วต่อด้วยผลของทุกแถวด้านล่าง (; = ขึ้นบรรทัดใหม่) สูตรจึงอยู่ที่หัวตาราง ไม่มีใครเผลอลบตอนลบข้อมูล
  2. 2

    IF(A2:A="","", …) = แถวว่างให้ว่าง

    ถ้าไม่ใส่ แถวที่ยังไม่มีข้อมูลจะขึ้น 0 ยาวไปถึงแถวล่างสุดของชีต — ใส่ไว้เสมอ
  3. 3

    B2:B*C2:C = ช่วงแบบเปิดท้าย

    ไม่ใส่เลขแถวปิดท้าย ช่วงจะยาวถึงแถวสุดท้ายเอง ข้อมูลเพิ่มกี่แถวก็ครอบคลุม

ARRAYFORMULA กับสูตรอื่น: ทำได้มากกว่าการคูณ

ฟังก์ชันส่วนใหญ่ใส่ใน ARRAYFORMULA ได้ เช่น ดึงราคาจากตารางราคาให้ทั้งคอลัมน์ด้วย VLOOKUP:

ตัวอย่าง 2: ดึงราคาจากตารางราคาให้ทั้งคอลัมน์ด้วย VLOOKUP สูตรเดียว
ภาพหน้าจอ Google Sheets: ตัวอย่าง 2: ดึงราคาจากตารางราคาให้ทั้งคอลัมน์ด้วย VLOOKUP สูตรเดียว

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)

ดูเป็นตาราง (ก๊อปตัวเลขได้)
ABCDEFG
1เมนูจำนวนราคายอดเมนูราคา
2กาแฟ24590กาแฟ45
3ชาไทย14040ชาไทย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:

ตัวอย่าง 3: ARRAYFORMULA + IF บอกสถานะสต็อกทุกแถว
ภาพหน้าจอ Google Sheets: ตัวอย่าง 3: ARRAYFORMULA + IF บอกสถานะสต็อกทุกแถว

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)

ดูเป็นตาราง (ก๊อปตัวเลขได้)
ABCD
1สินค้าคงเหลือจุดสั่งซื้อสถานะ
2แก้วกาแฟ1220สั่งเพิ่ม
3หลอด300100พอ
4ฝาแก้ว5050สั่งเพิ่ม

สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):

  • D1={"สถานะ";ARRAYFORMULA(IF(A2:A="","",IF(B2:B<=C2:C,"สั่งเพิ่ม","พอ")))}

สังเกตว่า IFERROR ครอบไว้ในตัวอย่างราคา — เมนูที่ไม่มีในตารางราคา (มัทฉะ) จะขึ้นข้อความแทน #N/A ทั้งคอลัมน์จึงไม่พังเพราะแถวเดียว

ใช้คู่กับ Google Form: งานที่ ARRAYFORMULA เกิดมาเพื่อทำ

ชีตคำตอบของ Google Form แทรกแถวใหม่ทุกครั้งที่มีคนส่งฟอร์ม สูตรที่ลากไว้ล่วงหน้าจึงไม่ตามมาในแถวใหม่ — วิธีที่ถูกคือใส่ ARRAYFORMULA ไว้ที่หัวคอลัมน์ว่างทางขวาของคำตอบ:

  1. 1

    เปิดชีตคำตอบ (Form Responses 1)

    หาคอลัมน์ว่างคอลัมน์แรกทางขวาของคำถามสุดท้าย
  2. 2

    พิมพ์สูตรที่แถว 1 ของคอลัมน์นั้น

    เช่น ยอดเงิน = จำนวน × ราคา: ={"ยอดเงิน";ARRAYFORMULA(IF(A2:A="","",C2:C*D2:D))} (A = ประทับเวลา ซึ่งมีทุกครั้งที่มีคนส่ง)
  3. 3

    ส่งฟอร์มทดสอบ 1 ครั้ง

    แถวใหม่ต้องมียอดเงินขึ้นเองโดยไม่ต้องทำอะไร

อ่านต่อเรื่องเชื่อม Form กับชีตได้ที่ บทความ Google Form

ข้อผิดพลาดที่เจอบ่อย

ขึ้น #REF! "Array result was not expanded"

มีอะไรขวางทางที่ผลจะล้นลงไป (มักเป็นตัวเลขหรือสูตรเก่าที่ค้างอยู่ในคอลัมน์) — ล้างคอลัมน์ใต้สูตรให้ว่างทั้งหมด ผลจะขึ้นเอง

เลข 0 ยาวลงไปถึงแถวล่างสุด

ลืมครอบด้วย IF(A2:A="","", …) ใส่เงื่อนไขแถวว่างตามสูตรมาตรฐานข้างบน

SUM / COUNTIF ใส่ใน ARRAYFORMULA แล้วได้ช่องเดียว

ฟังก์ชันที่รวมทั้งช่วง (SUM, AVERAGE, COUNTIF แบบปกติ) ให้ผลเดียวอยู่แล้ว ไม่ล้นเป็นรายแถว — ถ้าอยากได้ยอดสะสมหรือนับรายแถว ต้องใช้สูตรแบบอื่น เช่น MMULT หรือ COUNTIF ที่รับช่วงเงื่อนไขทั้งคอลัมน์

ชีตช้าลงมาก

ช่วงเปิดท้าย (B2:B) ครอบทุกแถวของชีต ถ้าชีตมีแถวว่างเป็นหมื่น ลบแถวว่างท้ายชีตทิ้ง หรือกำหนดช่วงให้พอดี เช่น B2:B2000

อยากให้คำตอบจาก Form ออกเป็นใบเสร็จ PDF และส่งอีเมลให้ลูกค้าเอง?

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

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

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),"")) จะได้ราคาทุกแถวจากสูตรเดียว

ถ้าบทความนี้มีประโยชน์ ช่วยแชร์ให้เพื่อนๆ ด้วย

อยากสร้างระบบจริงด้วย Google Sheets?

คู่มือฉบับสมบูรณ์ สอนสร้างระบบ step-by-step ตั้งแต่เริ่มต้นจนใช้งานได้จริง พร้อมเทมเพลตและไฟล์ตัวอย่างครบ

ดาวน์โหลดทันทีหลังชำระเงิน ไม่มีค่าสมัครรายเดือน

อยากได้ระบบแบบนี้ แต่ไม่มีเวลาทำเอง?

รับทำระบบ Google Sheets ตามงานจริงของคุณ — บัญชี สต็อก ลงเวลา แจ้งเตือนเข้า LINE และ Apps Script อัตโนมัติ ทักมาเล่าปัญหาได้เลย ประเมินให้ฟรี

ทัก LINE ปรึกษาฟรี

บทความที่เกี่ยวข้อง

เครื่องมือแนะนำ