Automatically translated.View original post

Calculate salary increase with INDEX & MATCH (1 / 2)

4/6 Edited to

... Read moreหลายคนทำไฟล์ “ปรับเงินเดือน” แล้วติดตรงการดึงค่าให้ตรงกับทั้ง “ตำแหน่งงาน” และ “เกรด” (หรือคะแนนประเมิน) ซึ่งจริงๆ ทำให้เป็นระบบได้ด้วย INDEX & MATCH แบบ 2 มิติค่ะ/ครับ แนวคิดคือทำตารางอัตราปรับไว้ก่อน (เช่นคอลัมน์เป็นเกรด A/B/C หรือ 1/2/3 และแถวเป็นตำแหน่งงาน) แล้วค่อยให้ Excel ไปหา “ตำแหน่งของแถว” และ “ตำแหน่งของคอลัมน์” จากนั้น INDEX จะดึงเปอร์เซ็นต์ที่ถูกต้องกลับมา โครงสร้างตารางที่ทำแล้วใช้ง่าย: 1) ตารางอัตราปรับ (เช่นช่วง D8:F12) แถวซ้ายสุดเป็น “ตำแหน่งงาน” (เช่นช่วง C8:C12) และแถวหัวตารางเป็น “เกรด” (เช่นช่วง D7:F7) 2) ตารางพนักงานมีช่อง “ตำแหน่ง” (เช่น K8) และ “เกรด” (เช่น I8) และ “เงินเดือนปัจจุบัน” (เช่น J8) สูตรหลักที่ใช้บ่อย (แนะนำล็อกช่วงด้วย $ เพื่อกันเลื่อน): - หาแถวของตำแหน่งงาน: =MATCH(K8,$C$8:$C$12,0) - หาคอลัมน์ของเกรด: =MATCH(I8,$D$7:$F$7,0) - ดึงเปอร์เซ็นต์ปรับ: =INDEX($D$8:$F$12, MATCH(K8,$C$8:$C$12,0), MATCH(I8,$D$7:$F$7,0)) - คำนวณเงินเดือนใหม่: =J8*(1+เปอร์เซ็นต์ที่ดึงได้) ตัวอย่างเขียนรวมเป็นบรรทัดเดียว: =J8*(1+INDEX($D$8:$F$12,MATCH(K8,$C$8:$C$12,0),MATCH(I8,$D$7:$F$7,0))) ทริคที่ทำให้ไฟล์ไม่พังง่าย: - MATCH ใส่ 0 เสมอเมื่อเป็นการจับคู่ “ตรงตัว” (ตำแหน่ง/เกรดต้องตรงกัน) - ล็อกช่วงตารางอัตราปรับทั้งหมดเป็น $D$8:$F$12 และหัวตารางเป็น $D$7:$F$7 เพื่อให้ลากสูตรลงได้ - จัดรูปแบบเกรดให้เป็นชนิดเดียวกันทั้งไฟล์ (ถ้าในหัวตารางเป็น “A” แต่ในข้อมูลเป็น “เกรด A” จะ MATCH ไม่เจอ) - เพิ่ม IFERROR กัน #N/A เช่น: =IFERROR(J8*(1+INDEX(...)) , J8) เพื่อให้ไม่แสดง error ระหว่างกรอกข้อมูล ถ้าต้อง “เทียบเพดานรายได้สูงสุดของแต่ละตำแหน่ง” เพิ่มอีกตารางหนึ่งไว้เลย เช่นคอลัมน์ตำแหน่ง + เงินเดือนสูงสุด แล้วดึงเพดานด้วย XLOOKUP/VLOOKUP หรือ INDEX & MATCH จากนั้นใช้ MIN เพื่อคุมไม่ให้เกินเพดาน เช่น เงินเดือนใหม่สุดท้าย =MIN(เงินเดือนใหม่, เพดานตำแหน่ง) ทำตามนี้จะได้ไฟล์ปรับเงินเดือนที่แก้แค่ตารางอัตราปรับครั้งเดียว แล้วทั้งองค์กรคำนวณให้เองอัตโนมัติ ลากสูตรได้ยาวๆ และตรวจสอบง่ายมากค่ะ/ครับ