IMPORTRANGE ดึงข้อมูลจาก Google Sheets ไฟล์อื่นมาแสดงแบบ Real-time โดยใช้ URL หรือ Spreadsheet ID ข้อมูลจะ sync ตามต้นฉบับอัตโนมัติทุก 30 นาที (หรือเร็วกว่า) ต้อง Allow Access ครั้งแรกที่เชื่อมต่อระหว่างไฟล์คู่ใดๆ หลังจากนั้น Editor ทุกคนในไฟล์ปลายทางสามารถใช้ IMPORTRANGE จากไฟล์ต้นทางนั้นได้เลย ข้อมูลที่ดึงมาเป็น Read-only เหมาะสำหรับการรวมศูนย์ข้อมูล สร้าง Dashboard และแชร์ข้อมูลบางส่วนโดยไม่ต้องเปิดเผยไฟล์ต้นฉบับทั้งหมด
=IMPORTRANGE(spreadsheet_url, range_string)
=IMPORTRANGE(spreadsheet_url, range_string)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| spreadsheet_url | Text | Yes | URL หรือ Spreadsheet ID ของไฟล์ต้นทาง (ต้องอยู่ในเครื่องหมายคำพูด)
รูปแบบ URL: https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit สามารถใส่ได้ทั้ง: |
|
| range_string | Text | Yes | ชื่อ Sheet และช่วงข้อมูลที่ต้องการดึง (ต้องอยู่ในเครื่องหมายคำพูด)
รูปแบบ: “SheetName!Range” หรือ “Range” (ถ้าไม่ระบุชื่อ Sheet จะดึงจาก Sheet แรก) ตัวอย่าง: |
ดึงยอดขายจากไฟล์ของแต่ละสาขา (กรุงเทพ, เชียงใหม่, ขอนแก่น, ภูเก็ต) มารวมไว้ในไฟล์ HQ เพื่อสร้าง Dashboard รวม ข้อมูลจะอัปเดตอัตโนมัติเมื่อสาขาแก้ไขไฟล์ของตัวเอง
ดึงเฉพาะคอลัมน์ที่ไม่ sensitive (ชื่อลูกค้า, สถานะ) ไปแสดงในไฟล์ใหม่ที่แชร์ให้ทีมอื่น โดยไม่ต้องเปิดเผยข้อมูล sensitive ในไฟล์ต้นฉบับ (เช่น รายได้, เบอร์โทรศัพท์)
แยกไฟล์ข้อมูล Raw (ที่ทีมกรอกข้อมูล) ออกจากไฟล์ Dashboard (ที่มีสูตรซับซ้อน) เพื่อป้องกันทีมไปแก้สูตรผิด และให้ Dashboard ทำงานได้เร็วขึ้น
ใช้ IMPORTRANGE ดึงข้อมูลทั้งหมดไปเก็บไว้อีกไฟล์หนึ่งเป็นการ Backup แบบ Real-time ถ้าไฟล์ต้นฉบับมีปัญหา ยังมีสำเนาล่าสุดอยู่
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit", "Sheet1!A1:C10")=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit", "Sheet1!A1:C10")
ข้อมูล 10 แถว 3 คอลัมน์จากไฟล์ต้นทาง (แสดงเป็น Array ที่ขยายออกไปหลาย cell)
IMPORTRANGE("1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", "Sales!A:D")=IMPORTRANGE("1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", "Sales!A:D")
ข้อมูลทั้งหมดจากคอลัมน์ A ถึง D ของ Sheet ชื่อ Sales
QUERY(IMPORTRANGE("1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", "Orders!A:E"), "SELECT Col1, Col2, Col5 WHERE Col3 = 'Completed' AND Col5 > 1000 ORDER BY Col5…=QUERY(IMPORTRANGE("1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", "Orders!A:E"), "SELECT Col1, Col2, Col5 WHERE Col3 = 'Completed' AND Col5 > 1000 ORDER BY Col5 DESC", 1)
รายการ Order ID, Customer Name, Amount ที่ Status = 'Completed' และ Amount > 1000 เรียงจากมากไปน้อย
QUERY( { IMPORTRANGE("ID_BKK", "Sales!A2:D"); IMPORTRANGE("ID_CNX", "Sales!A2:D"); IMPORTRANGE("ID_KKC", "Sales!A2:D") }, "SELECT Col1, Col2, Col3, SUM(Col4) GR…=QUERY(
{
IMPORTRANGE("ID_BKK", "Sales!A2:D");
IMPORTRANGE("ID_CNX", "Sales!A2:D");
IMPORTRANGE("ID_KKC", "Sales!A2:D")
},
"SELECT Col1, Col2, Col3, SUM(Col4) GROUP BY Col1, Col2, Col3 LABEL SUM(Col4) 'Total Sales'",
0
)
ข้อมูลยอดขายรวมจาก 3 สาขา (กรุงเทพ, เชียงใหม่, ขอนแก่น) พร้อมสรุปยอดตาม Product, Region, Month
ปัญหานี้เกิดจาก 2 กรณี:
.
1. ยังไม่ได้ Allow Access (ครั้งแรก)
– เอาเมาส์ไปชี้ที่ cell ที่ error
– จะมีปุ่ม “Allow access” ขึ้นมา ให้กด
– หลังจากนั้นข้อมูลจะแสดงออกมา
.
2. ไม่มีสิทธิ์เข้าถึงไฟล์ต้นทาง
– ต้องขอให้เจ้าของไฟล์ต้นทาง Share ให้ก่อน (อย่างน้อย View access)
– หรือเปลี่ยนการ Share ของไฟล์ต้นทางเป็น “Anyone with the link can view”
.
เมื่อ Allow Access แล้ว Editor ทุกคนในไฟล์ปลายทางสามารถใช้ IMPORTRANGE จากไฟล์ต้นทางนั้นได้ทันที ไม่ต้อง Allow ใหม่ครับ 😅
สาเหตุและวิธีแก้:
.
1. ข้อมูลมีขนาดใหญ่เกินไป
– Google จำกัด 10MB ต่อการดึงข้อมูล 1 ครั้ง
– แก้โดยแบ่งช่วงข้อมูลออกเป็นหลาย IMPORTRANGE
– หรือใช้ QUERY กรองเฉพาะที่ต้องการก่อน
.
2. ไฟล์ต้นทางมีสูตรซับซ้อน
– IMPORTRANGE รอให้ไฟล์ต้นทางคำนวณเสร็จก่อนจึงดึงข้อมูล
– ถ้าไฟล์ต้นทางช้า ปลายทางก็ช้าตาม
.
3. ใช้ IMPORTRANGE ซ้อนกันหลายชั้น (Chain)
– หลีกเลี่ยงการ IMPORTRANGE จากไฟล์ที่ IMPORTRANGE มาอีกที
– แต่ละ chain เพิ่ม delay ขึ้นไปเรื่อยๆ
.
4. Internet ช้า
– IMPORTRANGE ต้องใช้ Internet ทุกครั้งที่ refresh
– ลองเปลี่ยน Network หรือรอสักครู่ครับ 💡
ไม่ได้ครับ ข้อมูลที่ดึงมาเป็น Read-only
.
– cell ที่แสดงผลจาก IMPORTRANGE จะแก้ไขไม่ได้
– ถ้าต้องการแก้ไขข้อมูล ต้องไปแก้ที่ไฟล์ต้นทางโดยตรง
– การแก้ไขที่ไฟล์ต้นทางจะ sync มาที่ปลายทางอัตโนมัติ (ภายใน 30 นาที หรือเร็วกว่า)
.
ข้อดีคือไม่ต้องกลัวว่าคนดู Dashboard จะไปแก้ข้อมูลผิดพลาดครับ 😎
หมายความว่า Syntax ของสูตรผิด สาเหตุที่พบบ่อย:
.
1. ลืมใส่ Quotation Marks
❌ =IMPORTRANGE(1BxiMVs0XRA…, Sheet1!A:C)
✅ =IMPORTRANGE(“1BxiMVs0XRA…”, “Sheet1!A:C”)
.
2. URL หรือ ID ผิด
– ตรวจสอบว่า Copy URL มาถูกต้อง
– ถ้าใช้ ID ตรวจสอบว่าได้ส่วนที่ถูกต้อง (หลัง /d/ และก่อน /edit)
.
3. ชื่อ Sheet มี space หรืออักขระพิเศษ
– ชื่อ Sheet ที่มี space ต้องใส่ใน range_string ด้วย
– ตัวอย่าง: “‘Sales Data’!A:C” (ใช้ single quote ครอบชื่อ Sheet)
.
4. Range ผิดรูปแบบ
– ✅ “Sheet1!A1:C10” หรือ “A:C”
– ❌ “Sheet1!A1-C10” (ใช้ – แทน 🙂
รองรับครับ! สามารถใช้ชื่อ Named Range แทนการระบุ Range โดยตรงได้เลย
.
=IMPORTRANGE(“1BxiMVs0XRA…”, “SalesData”)
สมมติว่าในไฟล์ต้นทางมี Named Range ชื่อ “SalesData” ที่ชี้ไปที่ Sales!A1:D100 สูตรนี้จะดึงข้อมูลจาก Range นั้นมาให้
.
ข้อดีคือถ้าไฟล์ต้นทางย้าย Range หรือเปลี่ยนขนาด แค่แก้ Named Range ที่ไฟล์ต้นทาง ไม่ต้องแก้สูตรที่ไฟล์ปลายทางเลยครับ 💡
IMPORTRANGE เป็นฟังก์ชันที่มีเฉพาะใน Google Sheets ใช้สำหรับดึงข้อมูลจาก Spreadsheet ไฟล์อื่นมาแสดงในไฟล์ปัจจุบันแบบ Real-time โดยข้อมูลจะ sync ตามต้นฉบับอัตโนมัติ
.
ที่เจ๋งคือคุณสามารถรวมข้อมูลจากหลายไฟล์มาไว้ที่เดียวได้ โดยไม่ต้องคอย Copy-Paste เองอีกต่อไป เช่น ดึงยอดขายจากไฟล์สาขา 10 แห่งมารวมกันในไฟล์สำนักงานใหญ่ ข้อมูลจะอัปเดตตลอดเวลา
.
ส่วนตัวผมใช้ IMPORTRANGE เป็น backbone หลักของทุก Dashboard เลยครับ เพราะมันทำให้แยกการจัดการข้อมูลกับการ visualize ออกจากกันได้ ทีมกรอกข้อมูลที่ไฟล์หนึ่ง ผมสร้างรายงานที่อีกไฟล์ ไม่มีใครมายุ่งกับสูตรของกันและกัน 😎