Thep Excel

List.Transformแปลงค่าในลิสต์แต่ละตัว

List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม

fx
= List.Transform(list, transform) as list

ความนิยม7/10
ความยาก5/10
ประโยชน์8/10

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
list List ลิสต์ที่ต้องการแปลงค่า เช่น {1, 2, 3, 4, 5}
transform Function ฟังก์ชันที่ใช้แปลงแต่ละตัว เขียนแบบ each [operation]

Additional Notes

List.Transform(list, transform) ใช้สำหรับแปลงค่าในลิสต์ โดยนำฟังก์ชันที่กำหนดไปประมวลผลแต่ละตัว ผลลัพธ์คือลิสต์ใหม่ที่มีค่าที่ถูกแปลงแล้ว

ส่วนตัวผม List.Transform ใช้ได้กับหลายสถานการณ์ เช่น การแปลงตัวเลข การเปลี่ยนข้อความ หรือการจัดการข้อมูล เมื่อคู่กับ each สามารถเขียนได้แบบสั้นๆ ทำให้อ่านง่ายขึ้น

ที่เจ๋งคือ List.Transform ไม่เปลี่ยนลิสต์เดิม แต่สร้างลิสต์ใหม่ที่มีข้อมูลแปลงแล้ว ซึ่งทำให้ปลอดภัยในการใช้งาน

How it works

คูณตัวเลขใน List

นำตัวเลขทุกตัวใน List มาคูณด้วยค่าคงที่ หรือคำนวณซับซ้อนขึ้น

แปลง Text เป็นตัวพิมพ์ใหญ่

เปลี่ยนข้อความทุกตัวใน List ให้เป็นตัวพิมพ์ใหญ่ (Text.Upper(each _))

สร้างคอลัมน์ใหม่จาก List

ใช้ร่วมกับ Table.AddColumn เพื่อสร้างคอลัมน์ใหม่จาก List ที่มีการแปลงค่าแล้ว

Examples

แปลงตัวเลขพื้นฐานList.Transform({1, 2, 3}, each _ * 2)

คูณแต่ละตัวเลขในลิสต์ด้วย 2 ผ่าน each _ * 2 ซึ่ง _ แทนแต่ละตัวในลิสต์

fx
= List.Transform({1, 2, 3}, each _ * 2)

ผลลัพธ์{2, 4, 6}
แปลงข้อความทั้งหมดเป็นตัวพิมพ์ใหญ่List.Transform({"hello", "world"}, each Text.Upper(_))

แปลงข้อความทั้งหมดเป็นตัวพิมพ์ใหญ่ โดยใช้ฟังก์ชัน Text.Upper บนแต่ละข้อความ

fx
= List.Transform({"hello", "world"}, each Text.Upper(_))

ผลลัพธ์{"HELLO", "WORLD"}
แปลงในโครงสร้างให้ใหญ่ขึ้น 10%let Numbers = {100, 200, 300}, Increased = List.Transform(Numbers, each _ * 1.1) in Increased

ใช้ let…in เพื่อจัดการข้อมูล แล้วแปลงแต่ละตัวเลขให้เพิ่มขึ้น 10%

fx
let
Numbers = {100, 200, 300},
Increased = List.Transform(Numbers, each _ * 1.1)
in
Increased

ผลลัพธ์{110, 220, 330}
แปลงหลายรอบแบบซ้อนกันList.Transform( List.Transform({1, 2, 3}, each _ * 2), each _ + 10 )

ใช้ List.Transform ซ้อนกันสองชั้น ชั้นแรกคูณด้วย 2 ชั้นสองบวกด้วย 10

fx
= List.Transform(
List.Transform({1, 2, 3}, each _ * 2),
each _ + 10
)

ผลลัพธ์{12, 14, 16}

FAQs

แตกต่างจาก List.Select หรือไม่+

แตกต่างค่ะ List.Select กรองข้อมูลออก แต่ List.Transform แปลงค่า List.Select ส่งคืนลิสต์เดิมแบบบาง แต่ List.Transform ส่งคืนลิสต์ใหม่ที่มีค่าต่างไป

ใช้ได้กับ each เท่านั้นหรือ+

ไม่จำเป็น สามารถใช้ฟังก์ชันอื่นๆ ได้ เช่น = List.Transform(list, Date.AddDays(_, 1)) แล้วแต่ความต้องการ

จะได้อะไรถ้าลิสต์เป็นโครงสร้างที่ซับซ้อน+

ได้ค่า เช่น List.Transform(ListOfRecords, each [_ & {new_field = "value"}]) สามารถเพิ่มฟิลด์ให้รีคอร์ดในลิสต์

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ List.Transform จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้List.TransformList functions
List functions (21)
List.Accumulate

List.Accumulate เป็นฟังก์ชันสำหรับการวนลูปผ่านแต่ละ element ใน list พร้อมทั้งเก็บสถานะสะสมไว้ตลอดการทำงาน
.
โดยจะเริ่มต้นจากค่าเริ่มต้นที่กำหนด (seed value) และในแต่ละรอบของการวนลูป ฟังก์ชันจะส่งค่าสถานะปัจจุบัน (current state) พร้อมกับ element ปัจจุบันเข้าไปใน accumulator function ที่คุณกำหนดขึ้นมา เพื่อคำนวณและสร้างสถานะใหม่สำหรับรอบถัดไป
.
เมื่อวนลูปครบทุก element แล้ว ฟังก์ชันจะคืนค่าสถานะสุดท้ายกลับมา เหมาะสำหรับการคำนวณยอดสะสม (running totals) การรวมแบบกำหนดเอง (custom aggregations) และการสร้างรูปแบบ For-Next loop pattern ใน M language ครับ

List.Average

List.Average คำนวณค่าเฉลี่ยของตัวเลข วันที่ เวลา หรือระยะเวลาในรายการ ฟังก์ชันนี้เป็นตัวช่วยแรกที่ผมใช้ทุกครั้งที่ต้องการวิเคราะห์ค่าเฉลี่ยจากชุดข้อมูลใดๆ

List.Buffer

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

List.Generate

List.Generate เป็น generator function ที่สร้าง list โดยเริ่มจากค่าเริ่มต้น (initial) วนลูปตรวจสอบเงื่อนไข (condition) สร้างค่าถัดไป (next) และ transform ผลลัพธ์ด้วย selector (optional) ทำงานคล้าย while loop ในการเขียนโปรแกรม เหมาะสำหรับสร้างลำดับวันที่, pagination API, การคำนวณทบต้น และ pattern ซับซ้อนที่ List.Numbers ทำไม่ได้

List.Mode

List.Mode หาค่าที่ปรากฏบ่อยที่สุดในรายการ (Mode คือค่าที่เกิดขึ้นมากที่สุด) ใช้สำหรับการวิเคราะห์ข้อมูล สถิติ และการหาแนวโน้มกลาง

List.Modes

List.Modes หารายการของค่าทั้งหมดที่ปรากฏบ่อยที่สุดในรายการ หากมีหลายค่าที่เกิดขึ้นจำนวนครั้งเท่ากัน จะคืนค่าทั้งหมด

List.NonNullCount

List.NonNullCount นับจำนวนของค่าในรายการที่ไม่เป็น null ใช้สำหรับการวิเคราะห์ข้อมูลและการตรวจสอบความเสมบูรณ์ของข้อมูล

List.Numbers

List.Numbers สร้าง List ของตัวเลขเรียงกันตามค่าเริ่มต้น จำนวน และการเพิ่มค่า

List.Percentile

List.Percentile คำนวณค่า percentile ของรายการตัวเลข ใช้สำหรับการวิเคราะห์ข้อมูล การหากลุ่มควอร์ไทล์ และการประเมินการกระจายตัวของข้อมูล

List.PositionOfAny

List.PositionOfAny หาตำแหน่งแรกของค่าใดค่าหนึ่งจากชุดค่าที่ระบุในรายการ ใช้สำหรับการค้นหาและการจัดการรายการข้อมูล

List.Positions

List.Positions หารายการของตำแหน่งทั้งหมดของค่าที่ระบุในรายการ ใช้สำหรับการค้นหาและการกำหนดตำแหน่งข้อมูล

List.Random

List.Random สร้างรายการของตัวเลขสุ่มจำนวนที่ระบุ ใช้สำหรับการสุ่มตัวอย่าง การทดลอง และการสร้างข้อมูลทดสอบ

List.RemoveFirstN

List.RemoveFirstN ลบจำนวน N รายการแรกจากรายการข้อมูล ใช้สำหรับการสุ่มตัวอย่าง การแยกข้อมูล และการตัดหัวข้อของรายการ

List.RemoveLastN

List.RemoveLastN ลบจำนวน N รายการสุดท้ายจากรายการข้อมูล ใช้สำหรับการตัดข้อมูลท้าย การแยกข้อมูล และการจัดการรายการ

List.RemoveNulls

List.RemoveNulls ลบค่า null ทั้งหมดจากรายการ ใช้สำหรับการทำความสะอาดข้อมูล การลบข้อมูลที่หายไป และการเตรียมข้อมูล

List.RemoveRange

List.RemoveRange ลบรายการจำนวนที่ระบุโดยเริ่มจากตำแหน่งที่ระบุ ใช้สำหรับการตัดข้อมูล การจัดการรายการ และการแยกข้อมูล

List.Repeat

List.Repeat จะคืน List ใหม่ที่ประกอบด้วยสมาชิกทั้งหมดของ List ต้นฉบับที่ถูกทำซ้ำกัน 'count' ครั้ง โดยเรียงต่อกันไปตามลำดับเดิม

List.ReplaceMatchingItems

List.ReplaceMatchingItems แทนที่รายการที่ตรงกับเงื่อนไขด้วยค่าใหม่ ใช้สำหรับการแปลงข้อมูล การแทนที่มูลค่า และการทำความสะอาดข้อมูล

List.ReplaceRange

List.ReplaceRange แทนที่รายการในช่วงที่ระบุด้วยรายการใหม่ ใช้สำหรับการแก้ไขข้อมูล การจัดการรายการ และการอัปเดตข้อมูล

List.ReplaceValue

แทนที่ค่าใน List

List.Select

List.Select จะรับ List และฟังก์ชันเงื่อนไข (selection as function) โดยจะประเมินฟังก์ชันเงื่อนไขกับสมาชิกแต่ละตัว หากฟังก์ชันคืนค่า true จะเก็บสมาชิกนั้นไว้ใน List ใหม่ หากคืนค่า false จะถูกคัดทิ้งไป

Combiner functions (1)
Combiner.CombineTextByDelimiter

Combiner.CombineTextByDelimiter คืนค่าเป็น 'ฟังก์ชัน' ที่ช่วยรวม List ของข้อความด้วยตัวคั่น (Delimiter) ที่กำหนด มักใช้เป็น argument ในฟังก์ชันอื่นๆ เช่น Table.CombineColumns

Error handling (1)
Diagnostics.Trace

Diagnostics.Trace เขียนข้อความติดตาม (trace message) เพื่อใช้ในการแก้ไขจุดบกพร่องและตรวจสอบค่าข้อมูลในขั้นตอนต่างๆ โดยคืนค่าเดิมกลับไปยังถัดไป

Function values (1)
Function.InvokeAfter

Function.InvokeAfter เรียกใช้ฟังก์ชันหลังจากรอเวลาที่กำหนด นำไปใช้ในการควบคุมความเร็วเรียกข้อมูล API หรือเพิ่มความล่าช้าระหว่างการประมวลผล

ดูฟังก์ชันที่เกี่ยวข้องทั้งหมด (37) →
List functions (6)
List.SingleOrDefault

List.SingleOrDefault คืนค่าเดียวจากรายการ หรือค่าเริ่มต้นหากไม่พบหรือมีมากกว่า 1 ค่า ใช้สำหรับการดึงข้อมูลเดียว

List.Split

List.Split แบ่งรายการให้เป็นกลุ่มย่อยตามขนาดที่ระบุ ใช้สำหรับการจัดกลุ่มข้อมูล การแบ่งหน้า และการประมวลผลแบทช์

List.StandardDeviation

List.StandardDeviation คำนวณส่วนเบี่ยงเบนมาตรฐานของรายการตัวเลข ใช้สำหรับการวิเคราะห์ข้อมูล สถิติ และการวัดความเปลี่ยนแปลง

List.Sum

List.Sum รวมค่าตัวเลขทั้งหมดในรายการ โดยละเว้นค่า null โดยอัตโนมัติ ฟังก์ชันนี้เป็นพื้นฐานสำหรับการคำนวณสรุป การจำสรุป และการวิเคราะห์ข้อมูลในการแปลงข้อมูล

List.Times

List.Times สร้างรายการของค่าเวลาที่มีช่วงเวลาเท่ากัน ใช้สำหรับการสร้างลำดับเวลา การวิเคราะห์อนุกรมเวลา และการสร้างข้อมูลทดสอบ

List.TransformMany

List.TransformMany ประมวลผลข้อมูลและคืนค่าผลลัพธ์ ใช้สำหรับการจัดการข้อมูล การแปลงข้อมูล และการวิเคราะห์

Table functions (5)
Table.FromRows

Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpose ข้อมูลแบบแถว-คอลัมน์ แต่ทำให้เป็นตารางจริงในทันที

Table.Partition

แบ่งตารางออกเป็นรายการของตารางย่อย (List of Tables) โดยใช้ hash function กำหนดการกระจายข้อมูล

Table.Split

แบ่งตารางออกเป็นรายการของตารางย่อยตามจำนวนแถวที่กำหนด เหมาะสำหรับ Pagination และ Batch Processing

Table.ToColumns

Table.ToColumns แปลงตาราง (Table) ให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูลจากคอลัมน์เดียว เรียงตามลำดับคอลัมน์จากซ้ายไปขวา ส่วนกลับกันของ Table.FromColumns

Table.ToRows

Table.ToRows แปลงตารางให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูล 1 แถว ไม่มีชื่อคอลัมน์ เหมาะสำหรับส่งออกข้อมูลเป็น JSON/CSV หรือประมวลผลแถวโดยไม่สนใจชื่อฟิลด์

Text functions (1)
Text.Combine

Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ

Value functions (1)
Value.ReplaceType

Value.ReplaceType แทนที่ประเภทข้อมูล (type) ของค่าด้วยประเภทใหม่ที่กำหนด โดยไม่เปลี่ยนข้อมูลจริง

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่