ฟังก์ชันนี้จะสแกนอาร์เรย์และสร้างค่ากลางโดยใช้ฟังก์ชัน LAMBDA
กับแต่ละค่า แสดงผลอาร์เรย์ของค่ากลางที่ได้มาจากแต่ละขั้นตอน
ตัวอย่างการใช้งาน
SCAN(5, A1:A3, LAMBDA(accumulator, current_value, accumulator+current_value))
SCAN(2, A1:A3, LAMBDA(accumulator, current_value, accumulator*current_value))
ไวยากรณ์
SCAN(initial_value, array_or_range, LAMBDA)
initial_value
: ค่าaccumulator
เริ่มต้นarray_or_range
: อาร์เรย์หรือช่วงที่จะสแกนLAMBDA
:LAMBDA
ซึ่งจะนำไปใช้กับแต่ละค่าในarray_or_range
เพื่อทำการสแกน- รูปแบบคำสั่ง:
LAMBDA(name1, name2, formula_expression)
- ข้อกำหนด:
LAMBDA
จะต้องมีอาร์กิวเมนต์ที่มีชื่อ
2 รายการ พร้อมด้วยformula_expression
ซึ่งใช้ชื่อ
เดียวกัน โดยระบบจะใช้name1
เป็นค่าปัจจุบันในaccumulator
ส่วนname2
จะแทนค่าcurrent_value
ในarray_or_range
เมื่อใช้LAMBDA
จากนั้นจะอัปเดตaccumulator
ในแต่ละขั้นตอนเป็นค่ากลางที่ได้รับจากในขั้นตอนที่ผ่านมา
- รูปแบบคำสั่ง:
หมายเหตุ
LAMBDA
ที่ส่งผ่านควรยอมรับอาร์กิวเมนต์ที่มีชื่อ
เพียง 2 รายการ มิเช่นนั้นระบบจะแสดงข้อผิดพลาด#N/A
อาร์กิวเมนต์เหล่านี้จะสอดคล้องกับaccumulator
และcurrent_value
ตามลําดับ ซึ่งมีคำอธิบายดังนี้name1
: จะเป็นค่าaccumulator
name2
จะเป็นค่าcurrent_value
ในอาร์เรย์อินพุต
accumulator
จะเริ่มทำงานด้วยค่าinitial_value
จากนั้นจะอัปเดตในแต่ละขั้นตอนเป็นค่ากลางที่ได้รับจากในขั้นตอนที่ผ่านมา
-
ระบบจะทำการค้นหา
current_value
ในอาร์เรย์อินพุตทีละแถว เมื่อใช้LAMBDA
- ระบบจะส่ง
ฟังก์ชันที่มีชื่อ
สําหรับพารามิเตอร์LAMBDA
และในกรณีนี้ ฟังก์ชันดังกล่าวจะทํางานแบบLAMBDA
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันที่มีชื่อฟังก์ชันที่มีชื่อ
ต้องเป็นไปตามไวยากรณ์LAMBDA
ของSCAN
ที่มีการกำหนดตัวยึดตำแหน่งอาร์กิวเมนต์ 2 รายการไว้- ไม่ต้องใส่เครื่องหมายวงเล็บตามหลัง
ฟังก์ชันที่มีชื่อ
ตัวอย่าง
แสดงผลรวมของอาร์เรย์
ตัวอย่างข้อมูล
A |
|
---|---|
1 |
4 |
2 |
2 |
3 |
1 |
ตัวอย่าง =SCAN(5, A1:A3, LAMBDA(accumulator, current_value, accumulator+current_value))
ผลลัพธ์
9 |
11 |
12 |
แสดงผลเปอร์เซ็นต์สะสมของค่าทั้งหมด
ตัวอย่างข้อมูล
A |
|
---|---|
1 |
4 |
2 |
2 |
3 |
1 |
ตัวอย่าง: =SCAN(0, A1:A3, LAMBDA(accumulator, current_value, accumulator + current_value/sum(A1:A3)))
ผลลัพธ์
0.57 |
0.85 |
1 |
แสดงผลรวมทั้งหมดของอาร์เรย์และเริ่มคํานวณใหม่เมื่อตัวเลขเป็น 0 ด้วยฟังก์ชันที่มีชื่อซึ่งจะทํางานแบบ LAMBDA
ตัวอย่างข้อมูล
A |
|
---|---|
1 |
4 |
2 |
2 |
3 |
1 |
4 |
0 |
5 |
3 |
6 |
6 |
ตัวอย่าง =SCAN(0, A1:A6, RUNNING_TOTAL_0)
ฟังก์ชันที่มีชื่อ: RUNNING_TOTAL_0
คือฟังก์ชันที่มีชื่อ
ซึ่งจะแสดงผลรวมทั้งหมดของอาร์เรย์และเริ่มคํานวณอีกครั้งเมื่อ current_value
เท่ากับ 0
คำนิยามของสูตร: =if(current_value=0, current_value, accumulator+current_value)
โดยที่ accumulator
และ current_value
เป็นตัวยึดตําแหน่งอาร์กิวเมนต์ที่กําหนดไว้สําหรับ RUNNING_TOTAL_0
ผลลัพธ์
4 |
6 |
7 |
0 |
3 |
9 |
ข้อผิดพลาดที่พบบ่อย
LAMBDA ที่ส่งไม่ได้มีอาร์กิวเมนต์ที่มีชื่อจำนวน 2 รายการหากฟังก์ชัน LAMBDA
ไม่ได้มีอาร์กิวเมนต์ที่มีชื่อ
2 รายการ ระบบจะแสดงข้อผิดพลาดนี้
"จํานวนอาร์กิวเมนต์ที่ไปยัง LAMBDA ไม่ถูกต้อง ต้องการ 3 อาร์กิวเมนต์ แต่ได้รับเพียง 2 อาร์กิวเมนต์"
ตัวอย่าง =SCAN(5, C1:C4, LAMBDA(current_value, current_value+1))
ในตัวอย่างนี้ LAMBDA ได้รับอาร์กิวเมนต์ที่มีชื่อ
เพียง 1 รายการเท่านั้น เมื่อต้องการเป็นจำนวน 2 รายการ
หากพารามิเตอร์สุดท้ายของฟังก์ชัน SCAN
ไม่ใช่ฟังก์ชัน LAMBDA
ระบบจะแสดงข้อผิดพลาดนี้
“อาร์กิวเมนต์ต้องเป็น LAMBDA”
ตัวอย่าง =SCAN(5, C1:C4, 3)
ในตัวอย่างนี้ ฟังก์ชันสุดท้ายคือ 3
แทนที่จะเป็นฟังก์ชัน LAMBDA
หากอาร์กิวเมนต์ที่มีชื่อ
อย่างน้อย 1 รายการไม่ถูกต้อง ระบบจะแสดงข้อผิดพลาดนี้
“อาร์กิวเมนต์ที่ 1 ของฟังก์ชัน LAMBDA ไม่ใช่ชื่อที่ถูกต้อง”
ตัวอย่าง =SCAN(5, C1:C4, LAMBDA(C1, v, C1+v))
ในตัวอย่างนี้ C1
คือชื่อ
ที่ไม่ถูกต้องเนื่องจากมีความขัดแย้งกับช่วง
ถ้าการใช้ LAMBDA
ในอาร์เรย์อินพุตสร้างค่ากลางที่ไม่ใช่ค่าเดี่ยว ระบบจะแสดงข้อผิดพลาดนี้
“ผลลัพธ์ควรเป็นค่าเดี่ยว ระบบไม่รองรับผลลัพธ์ที่เป็นอาร์เรย์แบบซ้อน”
ตัวอย่าง =SCAN(5, C1:C4, LAMBDA(accumulator, value, {accumulator, value}))
ทุกการใช้งานของ LAMBDA
จำเป็นต้องสร้างค่ากลางเป็นค่าเดี่ยวและจะใช้กับอาร์เรย์อื่นไม่ได้
ฟังก์ชันที่เกี่ยวข้อง
- ฟังก์ชัน LAMBDA: ฟังก์ชันนี้จะช่วยให้คุณสร้างและแสดงผลฟังก์ชันที่กำหนดเองซึ่งมีชุดของ
ชื่อ
และformula_expression
ที่ใช้ฟังก์ชันเหล่านั้นได้ - ฟังก์ชัน MAP: ฟังก์ชันนี้จะจับคู่แต่ละค่าในอาร์เรย์ที่ระบุกับค่าใหม่
- ฟังก์ชัน REDUCE: ฟังก์ชันนี้จะตัดทอนอาร์เรย์เป็นผลลัพธ์แบบรวม
- ฟังก์ชัน BYROW: ฟังก์ชันนี้จะจัดกลุ่มอาร์เรย์ตามแถว
- ฟังก์ชัน BYCOL: ฟังก์ชันนี้จะจัดกลุ่มอาร์เรย์ตามคอลัมน์
- ฟังก์ชัน MAKEARRAY: ฟังก์ชันนี้จะสร้างอาร์เรย์ที่คำนวณของมิติข้อมูลที่ระบุ
- สร้างและใช้ฟังก์ชันที่มีชื่อ: ฟังก์ชันนี้จะช่วยสร้างและจัดเก็บฟังก์ชันที่กำหนดเองซึ่งคล้ายกับ
LAMBDA