ตัวอย่างที่ 1: ผลรวมสะสม (Running Sum)
=SCAN(0, Values, LAMBDA(acc, val, acc + val))
1, 3, 6, 10, 15
วนลูปคำนวณและแสดงผลลัพธ์สะสมในทุกขั้นตอน
SCAN ใช้สำหรับสร้างค่าสะสม (Accumulated Value) จากการวนลูปข้อมูลใน Array เช่น การหาผลรวมสะสม (Running Sum) หรือข้อความสะสม โดยจะแสดงผลลัพธ์ในทุกๆ สเต็ปของการวนลูปออกมาเป็น Array ขนาดเท่าเดิม
=SCAN([initial_value], array, lambda)
=SCAN([initial_value], array, lambda)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| initial_value | Any | Optional | 0 | ค่าเริ่มต้นที่จะใช้ตั้งต้นในการคำนวณ |
| array | Range | Yes | ช่วงข้อมูลที่ต้องการนำมาวนลูป | |
| lambda | Function | Yes | ฟังก์ชัน LAMBDA ที่รับค่า 2 ตัวแปร (accumulator, current_value) ไปคำนวณ |
คำนวณยอดขายสะสมรายเดือน (ยอดเดือนนี้ + ยอดสะสมเดือนก่อนหน้า)
ใช้ SCAN เติมชื่อหัวข้อลงในเซลล์ว่างข้างล่างให้ครบ (เหมือน Fill Down)
ดูยอดเงินฝากที่เพิ่มขึ้นในแต่ละปีจากดอกเบี้ยทบต้น
=SCAN(0, Values, LAMBDA(acc, val, acc + val))
1, 3, 6, 10, 15
=SCAN("", DataWithBlanks, LAMBDA(acc, val, IF(val="", acc, val)))
ข้อมูลที่เติมเต็มแล้ว
=SCAN("", TextArray, LAMBDA(acc, val, acc & val))
A, AB, ABC
SCAN คืนค่าเป็น Array (แสดงทุกขั้นตอน) ส่วน REDUCE คืนค่าเดียว (ผลลัพธ์สุดท้าย)
ได้ โดยใช้ SCAN บวกค่าเพิ่มทีละ 1 หรือตามสูตรที่ต้องการ แต่ปกติใช้ SEQUENCE จะง่ายกว่า
ฟังก์ชัน SCAN ทำงานคล้ายกับ REDUCE คือวนลูปคำนวณข้อมูลทีละตัว แต่ต่างกันตรงที่ SCAN จะคืนค่าผลลัพธ์ออกมา “ทุกขั้นตอน” เป็น Array (Running Total) ในขณะที่ REDUCE คืนค่าเฉพาะผลลัพธ์สุดท้าย