ซ่อมคอมพิวเตอร์นอกสถานที่ บางกะปิ รามคำแหง

วันอาทิตย์ที่ 2 มีนาคม พ.ศ. 2557

การทำงานของฟังก์ชัน Index และ Match

ผมเคยตอบคำถามในกระทู้หนึ่ง โดยเสนอใช้วิธีแก้ปัญหาด้วยฟังก์ชัน Index และ Match แต่เจ้าของกระทู้นั้น ก็ถามกลับมาว่า"Function Index and Match ทำงานอย่างไรค่ะ เคยอ่านในหนังสือแต่อธิบายไม่เข้าใจนะคะ จะลองเอาไปใช้กับของจริงที่ทำงาน"

ผมขออธิบายดังนี้


รูปที่ 1


การทำงานของ INDEX
สมมติว่า เรามีรายชื่อเดือน ม.ค. - ธ.ค. อยู่ในช่วง A1:A12 และ มีชื่อเดือนภาษาอังกฤษ Jan - Dec อยู่ในช่วง B1:B12 ถ้า ณ เซลล์ใดๆ เราพิมพ์สูตรว่า =INDEX(A1:A12, 10) เราจะได้ผลลัพธ์เป็น "ต.ค." หรือถ้าพิมพ์สูตรว่า =INDEX(B1:B12, 10) จะได้ผลลัพธ์เป็น"Oct" เป็นต้น


รูปที่ 2


สำหรับการใช้ INDEX ผมมักจะบอกผู้เรียนว่า "อยากรู้อะไร ก็ให้ INDEX ช่วงนั้น" เช่น อยากรู้ชื่อเดือนภาษาไทย ก็ INDEX ช่วงเดือนภาษาไทย (A1:A12) หรืออยากรู้ชื่อเดือนภาษาอังกฤษ ก็ INDEX ช่วงเดือนภาษาอังกฤษ (B1:B12) เป็นต้น

โดยโครงสร้างของ Index คือ => INDEX( ช่วงผลลัพธ์ , ลำดับที่ต้องการ )

****************************************************

การทำงานของ MATCH
ในทางกลับกัน ถ้าเราทำการค้นหาคำว่า "ต.ค." จากช่วง A1:A12 จะได้ผลลัพธ์เป็น 10 (หมายถึงคำว่า "ต.ค." อยู่ในอันดับที่ 10 จากช่วง A1:A12), หรือจะค้นหาคำว่า "Oct" จากช่วง B1:B12 ก็จะได้ผลลัพธ์เป็น 10 เช่นกัน (หมายถึงคำว่า "Oct" อยู่ในอันดับที่ 10 จากช่วง B1:B12)


รูปที่ 3


กรณีนี้เราหาอันดับที่ ของข้อมูลที่ต้องการได้จากฟังก์ชัน MATCH โดยมีโครงสร้างฟังก์ชันคือ
MATCH( ข้อความที่จะค้นหา , ช่วงข้อมูลที่จะค้นหา , รูปแบบการค้นหา )
สำหรับรูปแบบการค้นหานี้ โดยทั่วไปจะกำหนดให้เป็นศูนย์ (0) เสมอ

****************************************************

สำหรับกรณีการใช้ INDEX ควบคู่กับ MATCH ผมขอยกตัวอย่าง ดังนี้
ถ้าเราพิมพ์ชื่อเดือนใดๆ เป็นภาษาไทยลงในเซลล์ D2 แล้วต้องการให้ที่ E2 แสดงชื่อเดือนเป็นภาษาอังกฤษโดยอัตโนมัติ พูดง่ายๆ คือ ให้ผลลัพธ์ที่ E2 แปรผันไปตาม D2 นั่นเอง
กรณีนี้ ที่ E2 พิมพ์สูตร =INDEX(B1:B12, MATCH(D2,A1:A12,0) )


รูปที่ 4


อย่างที่ผมบอกหลักการจำไปแล้วว่า "อยากรู้อะไร ก็ให้ Index ช่วงข้อมูลนั้นๆ" เพราะฉะนั้นที่ E2 เราอยากรู้ชื่อเดือนภาษาอังกฤษ เราจึงเริ่มต้นสูตรว่า =INDEX(B1:B12,

แต่เราจะให้แสดงผลเป็นลำดับที่เท่าไรของช่วง B1:B12 นั้น ต้องมาพิจารณาชื่อเดือนภาษาไทยใน D2 โดยเอา D2 ไปเทียบกับช่วง A1:A12 โดยใช้ MATCH ก็จะได้ลำดับที่ออกมา ผลลัพธ์จาก MATCH ก็จะส่งไปยัง INDEX อีกทอดหนึ่ง ก็จะได้ชื่อเดือนภาษาอังกฤษ ตามที่ต้องการ

มีข้อแม้ว่า ลำดับที่ในช่วง A1:A12 และ B1:B12 จะต้องสัมพันธ์กัน ผลลัพธ์จึงจะถูกต้อง เช่น ถ้า A1 เริ่มต้นด้วย "ม.ค."B1 ก็ต้องเริ่มต้นด้วย "Jan" เช่นกัน แต่ถ้า B1 เป็น "May" ลำดับที่ถัดลงไปก็จะผิดตามกันไป เช่นเดียวกับการติดกระดุมผิดเม็ดนั่นล่ะครับ


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

INDEX(array, row_num, [column_num], [area_num])

ซึ่งจะได้กล่าวถึงในโอกาสต่อไป 


0 ความคิดเห็น:

แสดงความคิดเห็น