Thep Excel

List.Buffer – เก็บรายการในหน่วยความจำ

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

=List.Buffer(list as list) as list

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
5/10

Syntax & Arguments

=List.Buffer(list as list) as list

Argument Type Required Default Description
list list Yes รายการที่ต้องการเก็บในหน่วยความจำ

How it works

เพิ่มประสิทธิภาพการใช้รายการซ้ำ

เมื่อต้องใช้รายการเดียวกันหลายครั้ง ให้เก็บไว้ในหน่วยความจำ

ลดจำนวนการเข้าถึงแหล่งข้อมูล

แทนที่จะเข้าถึงแหล่งข้อมูลภายนอกซ้ำๆ ให้เก็บผลลัพธ์ในหน่วยความจำ

ใช้ผลลัพธ์ในการคำนวณต่างๆ

เก็บผลลัพธ์ของรายการเพื่อใช้ในการคำนวณหรือการกรองข้อมูลต่างๆ

Examples

ตัวอย่างที่ 1: Buffer รายการตัวเลข
List.Buffer({1, 2, 3, 4, 5})
สูตรนี้เก็บรายการตัวเลข {1, 2, 3, 4, 5} ไว้ในหน่วยความจำ เพื่อให้การเข้าถึงข้อมูลเร็วขึ้น
Power Query Formula:

=List.Buffer({1, 2, 3, 4, 5})

Result:

{1, 2, 3, 4, 5}

ตัวอย่างที่ 2: Buffer รายการจากการตัดกรอง
let Filtered = List.Select({1..1000}, each _ > 500), Buffered = List.Buffer(Filtered) in Buffered
ผมใช้ let…in เพื่อชัดเจน กรองข้อมูล 1-1000 เหลือแค่ที่มากกว่า 500 แล้วเก็บในหน่วยความจำเพื่อใช้ซ้ำ ประหยัดการกรองซ้ำ
Power Query Formula:

let Filtered = List.Select({1..1000}, each _ > 500), Buffered = List.Buffer(Filtered) in Buffered

Result:

รายการ {501, 502, ..., 1000}

ตัวอย่างที่ 3: Buffer รายการข้อความ
let Source = {"apple", "banana", "cherry"}, Buffered = List.Buffer(Source) in Buffered
สูตรนี้สร้างรายการข้อความและเก็บไว้ในหน่วยความจำเพื่อใช้ซ้ำในการคำนวณต่างๆ
Power Query Formula:

let Source = {"apple", "banana", "cherry"}, Buffered = List.Buffer(Source) in Buffered

Result:

{"apple", "banana", "cherry"}

FAQs

เมื่อไหร่ควรใช้ List.Buffer

ผมแนะนำให้ใช้เมื่อ: 1) ต้องใช้รายการเดียวกันหลายครั้ง 2) แหล่งข้อมูลมาจากภายนอก (ช้า) 3) ต้องการประหยัด CPU มากกว่า หน่วยความจำ สำหรับรายการเล็กๆ จากหน่วยความจำแล้ว อาจไม่มีประโยชน์

ความแตกต่างระหว่าง List.Buffer กับ Table.Buffer

ผมได้ใช้ทั้งคู่บ่อย List.Buffer ใช้กับรายการ (List) ส่วน Table.Buffer ใช้กับตาราง (Table) หลักการเดียวกัน คือประมวลผลทั้งหมดแล้วเก็บในหน่วยความจำ

List.Buffer ใช้หน่วยความจำเท่าไหร่

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

Resources & Related

Additional Notes

List.Buffer เก็บรายการข้อมูลไว้ในหน่วยความจำแบบ eager evaluation (ประมวลผลทั้งหมดตั้งแต่ต้น) แทนที่จะใช้ lazy evaluation ที่ประมวลผลเมื่อต้องการ เมื่อต้องใช้รายการเดียวกันหลายครั้ง ฟังก์ชันนี้จะประหยัดเวลาคำนวณได้มาก เพราะไม่ต้องคำนวณซ้ำ

ที่เจ๋งคือ List.Buffer คือเครื่องมือ trade-off ระหว่างหน่วยความจำและความเร็ว ใช้หน่วยความจำมากขึ้น แต่ลดการคำนวณซ้ำ ซึ่งมีประโยชน์โดยเฉพาะเมื่อรายการที่อ้างอิงจากแหล่งข้อมูลภายนอก (ไฟล์, API, ฐานข้อมูล) และต้องใช้หลายครั้ง

ส่วนตัวผม ผมมักใช้ List.Buffer กับ List.Select หรือ List.Transform ที่ซ้ำหลายครั้ง โดยเฉพาะเมื่อข้อมูลมาจากแหล่งที่ช้า ประหยัดกว่าเรียกแหล่งข้อมูลหลายรอบ 😎

Leave a Reply

Your email address will not be published. Required fields are marked *