ค้นหาเว็บไซต์

วิธีใช้ฟังก์ชัน MAP ใน Microsoft Excel


ฟังก์ชันเติมอัตโนมัติของ Excel เหมาะสำหรับแค่ไม่กี่แถว แต่ในชุดข้อมูลขนาดใหญ่ นั่นคือความผิดพลาดที่รอเกิดขึ้น ทำไมต้องลากแล้วปล่อยในเมื่อคุณสามารถทำให้มันอัตโนมัติได้? ฟังก์ชัน MAP ช่วยให้คุณเขียนสูตรเพียงสูตรเดียวที่กระจายตรรกะไปทั่วทั้งชีต ทำให้ข้อมูลของคุณสะอาดและกระบวนการทำงานของคุณราบรื่น

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

ฟังก์ชัน MAP ใช้ได้กับผู้ที่ใช้ Excel สำหรับ Microsoft 365, Excel สำหรับเว็บ และเวอร์ชันล่าสุดของแอป Excel บนมือถือและแท็บเล็ต

วิธีการทำงานของฟังก์ชัน MAP

ไม่เหมือนกับสูตร Excel แบบมาตรฐานที่อยู่ในทุกเซลล์ของคอลัมน์ MAP จะอยู่ในเซลล์เดียวและส่งตรรกะลงไปด้านล่าง โดยส่งแต่ละรายการผ่านฟังก์ชันช่วย LAMBDA เพื่อประมวลผลแต่ละรายการเป็นรายบุคคล

ไวยากรณ์ของ MAP

ฟังก์ชัน MAP มีอาร์กิวเมนต์ดังต่อไปนี้:

=MAP(array,LAMBDA(param,logic))

ที่ไหน :

  • array คือช่วงของข้อมูลที่คุณต้องการประมวลผล คุณสามารถใส่หลายๆ array ได้ถ้าเหตุผลของคุณต้องการเปรียบเทียบคอลัมน์—ดูตัวอย่างสถานการณ์ที่ 2 ด้านล่าง
  • LAMBDA คือคำสั่ง ถ้าไม่มีมัน MAP จะไม่รู้ว่าต้องทำอะไรกับข้อมูล
  • param เป็นชื่อเล่นชั่วคราวที่คุณสร้างขึ้นภายใน LAMBDA
  • ตรรกะ คือคำสั่งเฉพาะที่คุณต้องการให้ทำงานบนชื่อเล่นนั้น

ตัวอย่างง่าย ๆ: การบวก 10% ให้กับราคาสินค้า

เพื่อดูว่าการใช้เหตุผลเหล่านี้ทำงานอย่างไร ให้ฉันยกตัวอย่างง่าย ๆ สมมติว่าคุณต้องการเพิ่มราคาทุกตัวในคอลัมน์ A ขึ้น 10%

สูตรในเซลล์ C2 มีลักษณะดังนี้:

=MAP(A2:A4,LAMBDA(price,price*1.1))

ที่ไหน :

  • ค่าของ อาเรย์ คือ A2:A4
  • ตัว LAMBDA ทำหน้าที่เป็นตัวห่อหุ้มสำหรับคำสั่ง
  • พารามิเตอร์ param คือ price.
  • ตรรกะคือ ราคา*1.1.

ประเด็นสำคัญที่ควรทราบก่อนเริ่มต้น

ก่อนที่คุณจะเริ่มสร้างระบบอัตโนมัติที่ซับซ้อนมากขึ้น ให้จำกฎโครงสร้างสามข้อเหล่านี้ไว้:

  • กฎห้ามใช้ในตาราง: คุณไม่สามารถใส่สูตร MAP ภายในตาราง Excel ได้ เพราะตารางถูกออกแบบมาให้มีสูตรหนึ่งสูตรต่อหนึ่งแถว เนื่องจากฟังก์ชัน MAP จะกระจายผลลัพธ์ไปยังช่วงของเซลล์ หากคุณพยายามใช้มันภายในตาราง คุณจะเห็นข้อผิดพลาด #SPILL!
  • หลีกเลี่ยงกับดักของตาราง: ตรวจสอบให้แน่ใจว่าคุณเว้นคอลัมน์ว่างอย่างน้อยหนึ่งคอลัมน์ระหว่างตารางของคุณกับสูตร MAP ของคุณเพื่อให้แน่ใจว่าตารางจะไม่ครอบคอลัมน์การคำนวณ

สถานการณ์ที่ 1: การทำความสะอาดข้อมูลอัตโนมัติ

ฟังก์ชัน MAP ของ Excel สามารถบังคับให้ฟังก์ชันรวมข้อมูล—เครื่องมือที่ปกติจะพยายามรวมทั้งคอลัมน์เข้าด้วยกัน—ทำงานทีละแถวได้

สมมติว่าคุณมีรายการ Product_ID ที่วุ่นวายจำนวน 700 แถวในตารางชื่อ T_Inventory เป้าหมายของคุณคือการลบช่องว่าง ปรับตัวอักษรให้ถูกต้อง และเพิ่มแท็ก “(VALID)” ให้กับแต่ละรายการ

คุณ สามารถ ใช้คอลัมน์ที่คำนวณมาตรฐานเพื่อทำสิ่งนี้ภายในตารางได้:

=CONCAT(PROPER(TRIM([@[Product_ID]]))," (VALID)")

อย่างไรก็ตาม สิ่งนี้ต้องอาศัยการมีสำเนาสูตรจำนวน 700 ชุด หากใครบางคนแก้ไขแถวที่ 450 กระบวนการทำความสะอาดของคุณจะถูกทำให้เสียหาย

วิธีที่ดีที่สุดในการทำความสะอาดข้อมูลของคุณคือการใช้ฟังก์ชัน MAP นอกตาราง:

=MAP(T_Inventory[Product_ID],
LAMBDA(id,
CONCAT(PROPER(TRIM(id))," (VALID)")
))

นี่คือวิธีการทำงานของสูตรนี้:

  • ลูป: MAP ทำการวนซ้ำในคอลัมน์ Product_ID ของตาราง T_Inventory
  • ตัวแปร: LAMBDA เก็บค่าจากแถวปัจจุบันโดยใช้ชื่อเล่น id
  • การดำเนินการ: PROPER และ TRIM ทำความสะอาดข้อความ ส่วน CONCAT ใช้ต่อแท็กเข้ากับข้อความที่ทำความสะอาดแล้ว
  • ผลลัพธ์: ผลลัพธ์จะไหลลงมาจากเซลล์ที่มีการป้อนสูตร

เมื่อเขียนตรรกะ LAMBDA ยาว ๆ ให้กด Alt+Enter ในแถบสูตรเพื่อเริ่มบรรทัดใหม่ ซึ่งจะทำให้โค้ดของคุณอ่านง่ายขึ้นมาก

เนื่องจากผลลัพธ์เป็นอาร์เรย์ที่กระจายออก คุณสามารถชี้เมนูแบบเลื่อนของการตรวจสอบข้อมูลไปยังเซลล์ด้านบนตามด้วยเครื่องหมายแฮช (เช่น =$H$2#) ใช้รายการในแดชบอร์ดบนเวิร์กชีตแยก หรือคัดลอกและวางข้อมูลเป็นค่าเหนือคอลัมน์ที่มีอยู่ถ้าคุณต้องการทำความสะอาดแบบอัตโนมัติเพียงครั้งเดียว

ข้อดี: ความสมบูรณ์ของข้อมูลแบบไดนามิก

มีประโยชน์หลักสามประการในการใช้ฟังก์ชันนี้ใน Excel:

  • อัปเดตสด vs. ทำความสะอาดแบบสถิต: ในขณะที่เครื่องมืออย่าง Flash Fill หรือการค้นหาและแทนที่ด้วยตนเองสามารถทำความสะอาดข้อมูลได้ครั้งเดียว แต่ก็เป็นภาพสแนปชอตที่ตายแล้ว MAP สร้างการซิงโครไนซ์แบบสด—หากมีการแก้ไขคำผิดในข้อมูลต้นทาง ผลลัพธ์จะอัปเดตทันทีทั่วทั้งช่วงข้อมูล
  • ตรรกะแบบรวมศูนย์กับการกรอกอัตโนมัติในตาราง: การกรอกตารางอัตโนมัติสร้างสูตรที่เป็นอิสระ 700 ชุด ดังนั้นหากใครพิมพ์ทับแถวที่ 450 ตรรกะของแถวนี้จะเสียไปตลอดกาล ตรรกะของ MAP จะถูกรวมศูนย์ไว้ที่เซลล์เดียว ซึ่งหมายความว่าไม่มีสูตรในแถวด้านล่างที่จะเสียหาย
  • การควบคุมระดับแถวกับข้อผิดพลาดในการรวมค่า: แม้ว่าฟังก์ชัน Excel หลายตัวจะกระจายผลลัพธ์โดยอัตโนมัติ ฟังก์ชันการรวมค่ามักจะพยายามรวมช่วงข้อมูลทั้งหมดของคุณลงในเซลล์เดียว MAP เป็นวิธีที่มีประสิทธิภาพที่สุดในการบังคับให้ฟังก์ชันเหล่านี้ทำงานตามแถวของตัวเองและประมวลผลข้อมูลทีละแถว ในขณะที่ยังให้ประโยชน์ของสูตรกระจายในเซลล์เดียวอยู่

สถานการณ์ที่ 2: ตรรกะหลายคอลัมน์

ฟังก์ชัน MAP ใน Excel สามารถทำงานตามตรรกะข้ามหลายคอลัมน์พร้อมกันได้โดยไม่ต้องประมวลผลทั้งตารางเป็นบล็อกใหญ่เดียว

คราวนี้ ลองจินตนาการว่าคุณต้องทำเครื่องหมายว่ามีการสต็อกด่วนสำหรับสินค้าคงคลัง 700 แถวของคุณ แต่เฉพาะสำหรับสินค้าที่คอลัมน์หมวดหมู่มีคำว่า "เน่าเสียง่าย" และคอลัมน์ระดับสต็อกมีค่าน้อยกว่า 300

คุณอาจคาดหวังว่าฟังก์ชัน IF เพียงตัวเดียวจะสามารถจัดการทั้งคอลัมน์ภายในตารางได้ อย่างไรก็ตาม หากคุณพิมพ์:

=IF(AND([Category]="Perishable",[Stock_Level]<300),"Urgent","OK")

มันไม่สามารถระบุสินค้าที่เน่าเสียง่ายซึ่งมีจำนวนสต็อกน้อยกว่า 300 ได้สำเร็จเพราะฟังก์ชัน AND จะตรวจทุกเซลล์ในคอลัมน์ Category และ Stock_Level พร้อมกัน หากพบแม้แต่แถวเดียวที่ไม่ตรงตามเกณฑ์ มันจะคืนค่า "OK" สำหรับทั้งบล็อกที่มี 700 แถว

คุณสามารถแก้ไขปัญหานี้ได้โดยใช้สูตรระดับแถว แบบนี้:

=IF(AND([@Category]="Perishable",[@[Stock_Level]]<300),"Urgent","OK")

อย่างไรก็ตาม วิธีนี้ขึ้นอยู่กับการตัดกันโดยนัย (สัญลักษณ์ @) ซึ่งบอกให้ Excel มองเฉพาะแถวปัจจุบันเท่านั้น นี่จะล็อกตรรกะไว้ภายในตาราง ทำให้คุณต้องคงสูตรเดิมไว้ถึง 700 ชุด หากคุณต้องการย้ายตรรกะนี้ไปที่อื่น สัญลักษณ์ @ จะทำงานอย่างไม่คาดคิด

โดยการใช้ MAP คุณสามารถป้อนข้อมูลเข้าไปในฟังก์ชัน AND ทีละแถวโดยไม่ต้องใช้สัญลักษณ์ @ หรือสูตรที่ผูกกับตาราง ซึ่งส่งผลให้ได้รายการสถานะที่ถูกต้องและกระจายออกมาอย่างสมบูรณ์:

=MAP(T_Inventory[Category],T_Inventory[Stock_Level],
LAMBDA(cat,qty,
IF(AND(cat="Perishable",qty<300),"Urgent","OK")
)
)

นี่คือวิธีการทำงานของสูตรนี้:

  • หลายอาร์เรย์: MAP เข้าถึงทั้งคอลัมน์ Category และ Stock_Level พร้อมกัน
  • ชื่อเล่นของ LAMBDA: มันกำหนดชื่อเล่น cat ให้กับหมวดหมู่ของแถวปัจจุบัน และ qty ให้กับระดับสต็อกของแถวปัจจุบัน
  • การตรวจสอบระดับแถว: ตรรกะ IF(AND(...)) จะประเมินค่าสองค่าที่เจาะจงสำหรับแถวนั้นเท่านั้น
  • ผลลัพธ์: MAP จะคำนวณลงตามคอลัมน์โดยอัตโนมัติ สร้างช่วงการแจ้งเตือนอัตโนมัติสำหรับทั้ง 700 แถว

ข้อได้เปรียบ: ความสามารถในการพกพาแดชบอร์ด

MAP ชนะในการต่อสู้ในสถานการณ์นี้ด้วยสามเหตุผล:

  • การรายงานแบบสดกับตรรกะที่อยู่บนตาราง: ไม่เหมือนกับสูตรตารางมาตรฐาน ผลลัพธ์ของ MAP สามารถพกพาไปใช้ได้ คุณสามารถวางสูตรนี้ในแดชบอร์ดบนเวิร์กชีตแยกต่างหาก ทำให้รายงานของคุณสะอาดโดยไม่กระทบกับข้อมูลดิบของคุณ
  • ความมั่นคงของโครงสร้างเทียบกับการเขียนทับด้วยมือ: ในตารางมาตรฐาน ใครก็ตามสามารถเขียนทับการแจ้งเตือนได้ทุกแถว แต่กับ MAP ขอบเขตทั้ง 700 แถวจะถูกสร้างจากเซลล์เดียว ดังนั้น Excel จะคืนค่า #SPILL! หากมีสิ่งใดเข้ามาขัดขวาง
  • ความแม่นยำในแถวกับข้อผิดพลาดการรวมค่า: MAP เป็นวิธีที่ดีที่สุดในการใช้ฟังก์ชันแบบ “โลภ” เช่น AND หรือ OR ในสูตรไดนามิกเพียงสูตรเดียวที่กระจายผลลัพธ์ออกมา ซึ่งจะบังคับให้ Excel ประเมินตรรกะของคุณทีละแถว ทำให้มั่นใจได้ว่าการแจ้งเตือนของคุณถูกต้องสำหรับทุกรายการในรายการนั้น

การแก้ไขปัญหา MAP: ข้อผิดพลาดสามอย่างที่คุณอาจพบ

นี่คืออุปสรรคทางถนน MAP ที่พบบ่อยที่สุดสามประการและวิธีแก้ไข:

ข้อผิดพลาด

สาเหตุที่เป็นไปได้

การแก้ไข

#ค่า!

1. หัวตารางถูกรวมอยู่ในการเลือกของคุณ

2. มีจำนวนชื่อเล่นไม่ตรงกันใน LAMBDA ของคุณ

1. ตรวจสอบให้แน่ใจว่าสูตรอ้างอิงเฉพาะแถวข้อมูล เพราะ Excel ไม่สามารถประมวลผลตรรกะกับข้อความหัวตารางได้

2. ตรวจสอบให้แน่ใจว่าคุณมีชื่อเล่นหนึ่งชื่อสำหรับแต่ละอาเรย์

#รั่ว!

1. มีบางสิ่งขวางผลลัพธ์อยู่

2. คุณได้ป้อนสูตรลงในตาราง Excel

3. คุณป้อนสูตรโดยตรงถัดจากตาราง Excel ซึ่งทำให้ได้ผลลัพธ์ที่กระจายออกมา

1. ตรวจสอบให้แน่ใจว่าเส้นทางวิ่งปลอดภัย

2. พิมพ์สูตรลงในเซลล์ปกติ

3. เว้นระยะห่าง 1 คอลัมน์ระหว่างตารางกับสูตร

#NAME?

คุณน่าจะกำลังใช้เวอร์ชันเก่าของ Excel ที่ไม่รองรับฟังก์ชัน MAP หรือ LAMBDA

ย้ายไปยัง Excel สำหรับเว็บ หรือสมัครใช้ Microsoft 365


โดยการเปลี่ยนจากการคำนวณทีละเซลล์ไปสู่การสร้างระบบ คุณจะลดความเสี่ยงจากความผิดพลาดของมนุษย์ได้อย่างมากและเปลี่ยนสเปรดชีตของคุณให้เป็นเครื่องมือระดับมืออาชีพ เมื่อคุณเข้าใจตรรกะทีละแถวนี้แล้ว ขั้นต่อไปคือยกระดับการทำงานอัตโนมัติของคุณด้วยการทำความสะอาดสูตรที่ซับซ้อนโดยใช้ฟังก์ชัน LET ของ Excel

บทความที่เกี่ยวข้อง