ตัวอย่างที่ 1: ผลรวมสะสม (Sum)
=REDUCE(0, Values, LAMBDA(acc, val, acc + val))
15
วนลูปคำนวณข้อมูลทั้ง Array จนเหลือค่าเดียว
REDUCE เป็นฟังก์ชัน Helper ที่ทำงานร่วมกับ LAMBDA โดยจะรับค่าเริ่มต้น (Initial Value) และ Array ข้อมูล จากนั้นจะส่งค่าเข้าไปใน LAMBDA ทีละตัวเพื่อคำนวณและนำผลลัพธ์ไปใช้ในรอบถัดไปเรื่อยๆ จนจบข้อมูล
=REDUCE([initial_value], array, lambda)
=REDUCE([initial_value], array, lambda)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| initial_value | Any | Optional | 0 | ค่าเริ่มต้นที่จะใช้ตั้งต้นในการคำนวณ (Accumulator) |
| array | Range | Yes | ช่วงข้อมูลที่ต้องการนำมาวนลูป | |
| lambda | Function | Yes | ฟังก์ชัน LAMBDA ที่รับค่า 2 ตัวแปร (accumulator, current_value) ไปคำนวณ |
รวมชื่อพนักงานเฉพาะแผนก IT คั่นด้วยคอมม่า (ซึ่ง TEXTJOIN ทำเงื่อนไขซับซ้อนได้ยาก)
คำนวณเงินคงเหลือโดยนำยอดรายรับ-รายจ่ายมาบวกลบสะสมไปเรื่อยๆ
ใช้ REDUCE วนลูป SUBSTITUTE เพื่อเปลี่ยนคำผิดหลายๆ คำให้ถูกต้องในครั้งเดียว
=REDUCE(0, Values, LAMBDA(acc, val, acc + val))
15
=REDUCE("", Values, LAMBDA(acc, val, IF(val>10, acc & val & ", ", acc)))
12, 15, 20,
=REDUCE("Old Text", {"Old","Text"}, LAMBDA(txt, word, SUBSTITUTE(txt, word, "New")))
New New
REDUCE คืนค่า “ผลลัพธ์สุดท้าย” เพียงค่าเดียว ส่วน SCAN คืนค่า “ผลลัพธ์สะสมในแต่ละขั้นตอน” ออกมาเป็น Array
Excel จะใช้ค่าแรกของ Array เป็นค่าเริ่มต้น และเริ่มวนลูปที่ค่าที่ 2 แทน (ระวังเรื่อง Data Type ที่อาจไม่ตรงกัน)
ฟังก์ชัน REDUCE ใช้สำหรับวนลูป (Loop) ข้อมูลใน Array เพื่อนำค่ามาคำนวณสะสมไปเรื่อยๆ (Accumulate) จนเหลือผลลัพธ์สุดท้ายเพียงค่าเดียว เหมาะสำหรับงานที่ซับซ้อนซึ่งสูตรปกติทำได้ยาก เช่น การรวมข้อความ หรือการคำนวณแบบมีเงื่อนไขสะสม