เรียน EXCEL แบบฉบับเดชคัมภีร์ธรรมดา วันเดียวรู้เรื่อง EXCEL TRAINING COURSE, EXCEL ADVANCED ,รับสอน EXCEL,เรียน EXCEL,สอน EXCEL                                                                                                                                                                                                                                                                                                                                             
 

 

 

 

 

 สถิติวันนี้ 65 คน
 สถิติเมื่อวาน 18 คน
 สถิติเดือนนี้
สถิติปีนี้
สถิติทั้งหมด
553 คน
2071 คน
217299 คน
เริ่มเมื่อ 2010-10-04

          Excel Advanced-2

 ความรู้ Excel ในระดับ Advanced-1 ที่ผ่านมานั้น ท่านได้เรียนรู้ถึงฟังก์ชั่นและการใช้เทคนิคต่างๆที่                                                                สำคัญๆและจำเป็นในการใช้งาน ซึ่งฟังก์ชั่นต่างๆไม่ว่าจะเป็น การใช้ IF,VLOOKUP,HLOOKUP,                                                                          SUMIF,COUNTIF ,การใช้ PivotTable และอื่นๆตลอดจนเทคนิคต่างๆ นั้นเพียงพอที่จะช่วยให้                                                                          งานที่ท่านทำในชีวิตประจำวันด้วย Excel สำเร็จลุล่วงไปได้ด้วยดี

สำหรับ Excel Advanced-2 นี้จะเป็นการนำความรู้พื้นฐานต่างๆจาก Excel Advanced-1 มาประยุกต์
ใช้ในงานที่มีรูปแบบที่สลับซับซ้อนมากยิ่งขึ้น เพื่อให้การใช้ Excel ในงานนั้นๆออกมากระชับ
รวดเร็ว และถูกต้องแม่นยำ ในหลักสูตรนี้จะช่วยให้ท่านเห็นมุมมองของ Excel ในภาพที่กว้างมากขึ้น
ท่านจะมีแนวความคิดและวิธีการที่ถูกต้องในการนำ Excel ไปใช้ในรูปแบบต่างๆ ได้ดีมากยิ่งขึ้น
เช่นการหลุดพ้นจากข้อจำกัดของ VLOOKUP ที่ปกติจะอ่านค่าจากซ้ายมาขวา หากท่านสามารถย้าย
ชุดข้อมูลที่ต้องการหาค่ามาอยู่ทางขวาของสะพานที่ใช้ในการอ่านค่า จากพื้นที่อ้างอิง เพื่อให้ทำ
VLOOKUP ได้ วิธีนี้ก็ถูกต้องไม่ผิดแต่ประการใด และวิธีการเช่นนั้นคือวิธีการง่ายๆที่จะช่วยให้ท่าน
ได้ผลลัพธ์ที่ต้องการได้เช่นกัน

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

 

วิธีแรกที่นิยมใช้คือ ใช้ ฟังก์ชั่น MATCH ช่วยในการหาตำแหน่ง จากนั้นใช้ INDEX ในการหาค่า
ที่ต้องการออกมา

นอกจากการใช้ MATCH + INDEX แล้วยังสามารถใช้วิธีการทาง Array หาผลลัพธ์ที่ต้องการได้ด้วย
เช่นตัวอย่างนี้ ใช้ IF บังคับทั้งชุดแล้วใช้ SUM ครอบ IF จากนั้นกดให้เป็น Array

การใช้ IFบังคับทั้งชุดแล้วใช้ SUMไปครอบ กดให้เป็น Array (กด Shift+ Ctrl ค้างไว้แล้วกด Enter)
นี้เป็นพื้นฐานที่สำคัญมากๆในการใช้  Array เลยทีเดียว และในกรณีที่ชุดข้อมูลเป็นแบบ หนึ่งต่อหนึ่ง
ในลักษณะนี้นอกจากจะใช้ SUM ไปครอบ IF ได้แล้วยังสามารถใช้ MAX หรือ MINหรือAVERAGE
แทน SUM ได้ด้วย ...ลองเล่นดู แต่หากชุดข้อมูลของท่านไม่เป็นแบบหนึ่งต่อหนึ่ง เช่นมียี่ห้อรถซ้ำกัน
ท่านจะใช้ MAX,MINหรือ AVERAGE ในการหาค่าออกมาแบบนี้ไม่ได้  แต่ก็ขึ้นอยู่ที่ว่าท่านต้องการ
หาค่าอะไร ถ้าต้องการหาผลรวมก็ใช้ SUM ลูกเดียว (กันซวยไว้ก่อน) ในที่นี้จะไม่อธิบายละเอียด
ว่าทำไมจึงเป็นเช่นนี้ เอาไว้ไปคุยกันในเรื่อง Array และกล Array จะดีกว่าผมจะอธิบายให้ละเอียดยิบ
แต่รับรองไม่เยิ่นเย้อ แน่นอนครับ พี่น้อง..
และหากท่านเข้าใจการใช้ Array ได้ดีขึ้น จะหันไปใช้ INDEX หาผลลัพธ์แบบ Array ก็ยังได้ ดังนี้
 

 


และที่ซับซ้อนไปกว่านั้นท่านจะใช้ INDEX+SMALL+ROW แบบนี้ก็ได้เช่นกัน วิธีการนี้แม้ดูซับซ้อน
แต่เป็นวิธีการทาง Array ที่ดีมากๆ วิธีหนึ่งที่ท่านจะนำไปประยุกต์ในการใช้ Array ในระดับ ยากส์...
และโคตรยากส์ต่อไป..

       

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


การหาค่าข้อมูลที่มีมากกว่าหนึ่งเงื่อนไขก็เป็นเรื่องจำเป็นในระดับนี้ท่านควรจะได้เรียนรู้และนำไปใช้
งานได้  การหาค่า LOOKUP ต่างๆ ที่มีมากกว่าหนึ่งเงื่อนไข เช่นการหายอดขายของสินค้าชนิดเดียวกัน
แต่ต่างปีกัน หรือการหายอดขายของสินค้าของสินค้าชนิดเดียวกันแต่มีพนักงานขายหลายๆคนเป็นต้น
การหาผลรวมที่มีมากกว่าหนึ่ง เงื่อนไข หากท่านใช้ Excel 2007 ขึ้นไป ท่านสามารถใช้ฟังก์ชั่น
SUMIFS ที่ Excel มีไว้ให้ได้เลย ซึ่ง SUMIFS  เป็น Array ธรรมชาติชนิดหนึ่งที่ Excel มีไว้ให้ท่าน
ใช้ได้อย่างง่ายๆ  หรือท่านจะเลือกใช้ SUM+IF ในแบบทาง Array ในการหาผลลัพธ์ในโจทย์ที่มี
เงื่อนไขมากกว่าหนึ่งเงื่อนไข หรือที่นิยมเรียกกันว่า Multiple Match ก็ได้เช่นกัน
มาดูตัวอย่างในการหาผลลัพธ์ แบบ Multiple Match ซักตัวอย่างพอสังเขป
โจทย์ให้หาผลรวมของ แมวสีขาว (Cat , White) ว่ามีกี่ตัว

วิธีแรกหากท่านใช้ Excel 2007 ขึ้นไป ท่านใช้ SUMIFS ที่ Excel มีไว้ให้ใช้อยู่แล้วไปได้เลย
การที่ Excel เพิ่มฟังก์ชั่น SUMIFS เข้ามาใน Excel 2007 ขึ้นไปนั้นช่วยให้ชีวิตสบายขึ้นอีกเยอะ
 

และหากท่านจะเลือกใช้วิธีการทาง Array ก็ได้เช่นกัน ดังนี้
วิธีแรก ใช้ IF ซ้อน คิดทั้งชุด แล้วกดเป็น Array
1.ที่ G3 คีย์ =SUM(IF(E3=A2:A6,IF(F3=B2:B6,C2:C6,"")))
2.กด Shift + Ctrl ค้างไว้ จากนั้นกด Enter เข้ากล Array
จะเกิดเครื่องหมาย{} ปิดหน้าหลังสูตร โดยอัตโนมัติ
{=SUM(IF(E3=A2:A6,IF(F3=B2:B6,C2:C6,"")))}


หรือจะเขียนสูตรแบบนี้
วิธีที่ 2 ใช้ & เชื่อมเงื่อนไขเข้าด้วยกัน ใช้ IF บังคับคิดทั้งชุดกดเป็น Array
1.ที่ G3 คีย์ =SUM(IF(E3&F3=A2:A6&B2:B6,C2:C6,""))
2.กด Shift + Ctrl ค้างไว้ จากนั้นกด Enter เข้ากล Array
จะเกิดเครื่องหมาย{} ปิดหน้าหลังสูตร โดยอัตโนมัติ
{=SUM(IF(E3&F3=A2:A6&B2:B6,C2:C6,""))}

หรือจะเขียนสูตรแบบนี้ก็ยังได้
วิธีที่ 3. ใช้ IF แบบผลคูณ คิดทั้งชุดแล้วกดเป็น Array
1.ที่ G3 คีย์ =SUM(IF(E3=A2:A6,1,0)*IF(F3=B2:B6,C2:C6,0))
2.กด Shift + Ctrl ค้างไว้ จากนั้นกด Enter เข้ากล Array
จะเกิดเครื่องหมาย{} ปิดหน้าหลังสูตร โดยอัตโนมัติ
{=SUM(IF(E3=A2:A6,1,0)*IF(F3=B2:B6,C2:C6,0))}

หรือจะใช้วิธี ง่ายๆ แบบบ้านๆ โดยการเพิ่มคอลัมน์ขึ้นมาดังนี้
วิธีที่ 4.
1.Insert Column ที่คอลัมน์ A
2.ที่ A2 คีย์ =B2&C2 แล้ว Copy สูตรลงล่าง

3.ที่ H3 คีย์ =SUMIF(A2:A6,F3&G3,D2:D6)

 

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

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

การตัดค่า ERROR ทุกกรณีเพื่อให้หาผลรวมได้หรือ เพื่อไม่ให้ค่า ERRORนั้นๆปรากฎออกมา
ท่านอาจจะใช้ IF ไปบังคับก่อนทุกๆเซลล์หรือทุกๆแถว จากนั้นค่อยหาผลรวม หรือท่านจะใช้วิธีการ
หาคำตอบได้ในสูตรเพียงสูตรเดียวก็ได้ โดยการใช้ SUM+IF แบบ Array


ลองแบบนี้ดู
1.ที่เซลล์ใดๆ คีย์   =SUM(IF(ISERROR(A1:A5),"",A1:A5))
2.กด Shift + Ctrl ค้างไว้ จากนั้นกด Enter
เข้ากล Array จะเกิดเครื่องหมาย { } ปิดหน้า-หลังสูตรให้โดยอัตโนมัติ
{=SUM(IF(ISERROR(A1:A5),"",A1:A5))} 
ได้ผลลัพธ์ = 35 (10+20+5)

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

การใช้ Data Validation List ในลักษณะ Multiple Condition เช่น เมื่อเลือกชนิดสินค้าใน List ที่หนึ่ง
แล้วให้ List ที่สองแสดงเฉพาะรายการสินค้าที่สัมพันธ์กับชนิดสินค้าใน List ที่หนึ่งเท่านั้น
หรือ เมื่อเลือกแผนกใดๆใน List ที่หนึ่ง แล้วให้ List ที่สองแสดงเฉพาะรายชื่อของพนักงานที่อยู่ใน
แผนกที่ถูกเลือกจาก List ที่หนึ่งเท่านั้น เป็นต้น
 

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


เรื่องกราฟนับเป็นเรื่องสำคัญ ในการใช้ Excel โดยเฉพาะการ นำเสนอรายงานต่างๆ ในระดับนี้ท่าน
จะได้เรียนรู้การสร้างกราฟแบบ คลิกเดียวเปลี่ยนทุกกราฟ ซึ่งจะเป็นการเพิ่มความสำคัญและน่าติดตาม
ในการนำเสนอรายงานต่างๆได้อีกด้วย


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


การใช้ Conditional Formatting ในการทำ Project Plan หรือการทำ Schedule Plan เช่นการวางแผน
การผลิตหรือการวางแผนเพื่อทำโครงงานต่างๆแบบ Dynamic เมื่อท่านกำหนดวันแล้วเสร็จในขั้นตอน
ต่างๆ ตัว Gantt Chart จะแปรเปลี่ยนไปตามวันของขั้นตอนต่างๆที่ท่านกำหนดไว้  โดยมีแถบสีเป็นตัว
กำหนดวันที่แล้วเสร็จในแต่ละขั้นตอน ซึ่งจะช่วยให้มองเห็นง่ายและช่วยในการตัดสินใจได้ง่ายขึ้นว่า
 Plan ที่ท่านวางไว้นั้นควรจะปรับเปลี่ยนเวลา หรือดำเนินการอื่นๆอย่างไรต่อไป 
 


Conditional Formatting ใน Excel 2007 ขึ้นไป มีความแตกต่างจาก Version ก่อนหน้านั้นพอสมควร
แม้จะแตกต่างกันอยู่บ้างบางประการอย่างมากมาย แต่หลักการยังคงคล้ายกันอยู่ โดยเฉพาะการ
เขียนสูตรลงไปใน Condition ต่างๆ เพื่อบังคับให้เป็นไปตามเงื่อนไขที่ต้องการ กระนั้นก็ตามหากท่าน
เป็นผู้ใช้ Excel ที่ยังสับสน ในการเขียนสูตรลงไปใน Conditional Formatting หรือท่านมักจะ สับสน
ว่า เมื่อใดควรจะเลือกใช้ Cell Value เมื่อใดควรจะเลือกใช้ Formula ในการกำหนดเงื่อนไขให้กับ
Conditional Formatting  ผมขอแนะเป็นแนวทางง่ายๆ เบื้องต้นดังนี้
ให้ดูว่าเซลล์นั้นๆที่ต้องการทำ Conditional Formatting ต้องอ้างอิงถึงเซลล์อื่นๆด้วยหรือไม่ ถ้าไม่ต้อง
อ้างอิงจากเซลล์ใดๆหรือพื้นที่ใดๆ ให้ใช้ Cell Value ไปเลย แต่ถ้าต้องอ้างอิงถึงเซลล์อื่นๆหรือต้อง
ใช้ค่า จากเซลล์อื่นๆหรือพื้นที่อื่นๆ ก็ให้ใช้ Formula ยึดหลักง่ายๆแบบนี้ไปก่อนรับรองใช้ได้แน่ครับ
ตัวอย่าง การใช้ Cell Value เช่นเราต้องการให้ เกรด A เป็นพื้นสีแดง หรือ สีใดๆตามต้องการ

 


เกรดแต่ละเกรดคือตัวของมันเอง ไม่ต้องไปอ้างอิงจากเซลล์
ใดๆ หรือพื้นที่ใดๆ แบบนี้เราก็ใช้ Cell Value กำหนด
เงื่อนไข ได้เลย ซึ่งใน Excel 2007 ขึ้นไปนั้น เราสามารถ
ทำได้ มากกว่า หนึ่ง วิธี ดังนี้

วิธีที่หนึ่ง
1.คลุมพื้นที่ B2:B8
2.Home -> Conditional Formatting -> Highlight Cells Rules ->  Equal To…

 

 

 

 

3.คีย์ A ลงไปในช่องว่างที่ปรากฎขึ้นมา -> เลือกสี หรือ Format ต่างๆตามต้องการในตารางที่ Excel
มีไว้ให้ หรือจะไปเลือกรูปแบบใดๆ ที่แตกต่างออกไปที่ Custom Format... ก็ได้ -> แล้วคลิก OK
 

 

วิธีที่สอง
1.คลุมพื้นที่ B2:B8
2.Home -> Conditional Formatting -> Manage Rules...

 

3.คลิกแท็บ New Rule ...

4. คลิกเลือก Format only cells that contain

 

5.คลิกเลือก Cell Value
6. คลิกเลือก equal to
7.คีย์ A ลงไป ( หรือจะให้เงื่อนไขเป็น B,C,D... ก็คีย์ตัวนั้นลงไปเลือกได้ทีละเงื่อนไข)
8.คลิก Format -> เลือก Format หรือรูปแบบตามต้องการ -> OK -> OK -> OK

 

 

ทั้งสองวิธีที่ยกตัวอย่าง ให้ผลลัพธ์ที่เหมือนกัน ชอบแบบไหน ก็เลือกเอาไปใช้ ในแต่ละวิธีมีข้อดีที่แตกต่างกัน
ลองเล่นบ่อยๆ และสังเกตดูรายละเอียดอื่นๆ ในแต่ละวิธี

ยังไม่จบ...มาดูรูปแบบที่ต้องใช้ Formula กันบ้าง พอเป็นแนวทางให้เกิดความเข้าใจ
จากตัวอย่างเดิมหากต้องการ ให้ชื่อของคนที่ได้เกรด A ขึ้น สีแดงด้วย ต้องทำอย่างไร?
จะเห็นว่า
ชื่อขึ้นกับเกรด อ้างอิงจากเกรด
แบบนี้แหละที่จะต้อง ใช้ Formula วิธีทำมีดังนี้

1.คลุมพื้นที่ A2:A8
2. Home -> Conditional Formatting -> Manage Rules…
3. คลิกแท็บ New Rule …
4. คลิกเลือก  Use a formula to determine which cells to format



5. คีย์ =B2="A"
6.คลิก Format -> เลือก Format หรือรูปแบบตามต้องการ -> OK -> OK -> OK
 

เรื่องราวของ Conditional Formatting ยังมีอีกมากมาย
ที่ยกตัวอย่างมาน่าจะพอเป็นแนวทางได้บ้าง
สรุปเอาดื้อๆว่า ถ้าเลือกใช้ Cell Value เลือกได้ 2 แบบ
แต่ ถ้าต้องใช้ Formula ให้เลือก... Use a formula to determine which cells to format
ปลอดภัยที่สุด

และการสร้าง Project Plan หรือการใช้ Conditional Formatting ในรูปแบบอื่นๆล้วนใช้
พื้นฐานจากตัวอย่างที่กล่าวมาแล้ว แทบทั้งสิ้น ดังนั้นตัวอย่างที่ให้ไว้จึงเป็นตัวอย่างที่ดี นักแล
เป็นพื้นฐานสำคัญในการใช้ Conditional Formatting ในรูปแบบที่สลับซับซ้อนยิ่งๆขึ้นไป

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

ในการค้นหาตัวเลข หรือคำ หรือกลุ่มคำ หรือค่า Character ใดๆ หากตัวเลข หรือคำ หรือกลุ่มคำ
รวมทั้ง Character นั้นๆ อยู่อย่างโดดๆ เพียงลำพังแบบนี้ อาจใช้ VLOOKUP ค้นหา ได้เลย
และแม้แต่จะใช้ Data Text to Columns  ช่วยแยกออกมาก็ได้หากค่าเหล่านั้นอยู่ในตำแหน่งที่แน่นอน
ชัดเจน หรือมีสะพานที่ช่วยแยกออกมาคงที่ เช่นแยกคำออกมาจากสะพานที่เป็น ช่องว่าง
เช่นการแยกชื่อ นามสกุล ออกจากกันซึ่งปกติมักจะใช้ Data Text to Columns แยกโดยใช้ช่องว่างหรือ
Space ในการแยกคำหรือกลุ่มคำนั้นๆออกมา หรือแม้แต่จะใช้ฟังก์ชั่น ตระกูล LEFT ,RIGHT ,MID
ไปช่วยในการเขียนสูตรเพื่อแยกออกมาก็ได้เช่นกัน

แต่หากค่าดังกล่าวไม่ได้อยู่อย่างโดดๆ แต่ต้องไปสุงสิงหรือคบค้าสมาคมกับ ตัวเลข , คำ หรือกลุ่มคำ
อื่นๆแล้วไซร้ เราจะแยกค่าหรือค้นหาค่าเหล่านั้นซึ่งอยู่ในตำแหน่งที่ไม่แน่นอนออกมาได้อย่างไร
เช่น ตัวอย่างนี้ เราจะค้นหาว่า แถวนั้นๆหรือเซลล์นั้นๆ ในที่นี้คือ A2:A7 มีค่าหรือคำที่ต้องการหรือไม่
(Bangkok , Chiangmai, Excel)
 

มีหลายๆวิธีที่จะค้นค่าเหล่านั้นออกมา เช่นใช้ SUBSTITUTE + LEN + IF
แต่โดยทั่วๆมักจะใช้ FIND หรือ SEARCH ในการหาตำแหน่งก่อนจากนั้นจึงค่อยใช้วิธีการอื่นๆหาค่า
ที่ต้องการออกมาสามารถทำได้ทั้งวิธีการพื้นๆโดยใช้ฟังก์ชั่นพื้นฐานทั่วๆไป และใช้วิธีการทาง Array
 
ในเบื้องต้นผมแนะนำให้ท่านใช้วิธีการพื้นฐานจะดีกว่า เนื่องด้วยวิธีการพื้นๆนั้น แม้จะมองว่าใช้
พื้นที่ใช้คอลัมน์มากไปบ้าง แต่นั่นกลับทำให้ท่านเห็นภาพที่ชัดเจน และได้ผลลัพธ์ออกมาตามที่
ต้องการ สิ่งที่นอกเหนือไปกว่านั้นคือท่านจะเกิดความเข้าใจได้ง่าย สิ่งนี้แหละที่สำคัญ ความเข้าใจ
เป็นพื้นฐานที่สำคัญมากๆที่จะช่วยให้ท่านก้าวกระโดดไปสู่ความรู้ที่ยากและสลับซับซ้อน ต่อไป

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

ถ้าท่านจะลองใช้แบบ Array ก็ลองแบบนี้ดู
1.ที่ B2 คีย์

=INDEX($C$1:$C$4,SUM(IF(ISERROR(SEARCH($C$2:$C$4,A2)),"",ROW($C$2:$C$4))))

2.กด Shift + Ctrl ค้างไว้ จากนั้นกด Enter เข้ากล Array
จะเกิดเครื่องหมาย {} ปิดหน้า-หลังสูตรให้โดยอัตโนมัติ
{=INDEX($C$1:$C$4,SUM(IF(ISERROR(SEARCH($C$2:$C$4,A2)),"",ROW($C$2:$C$4))))}

3.Copy สูตรลงล่าง


 *** ในกรณีนี้ค่าที่ต้องการค้นหา ไม่ซ้ำกัน สามารถใช้ MAX หรือ MIN แทน SUM ก็ได้เช่นกัน***
ทำไมจึงใช้แทนกันได้เอาไว้ว่างๆ ค่อยมาคุยกันในเรื่อง Array และ กล Array ครับ
 

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

ในหลักสูตรที่ผ่านมาท่านสามารถปัดเศษด้วยการใช้ ROUND,ROUNDUP,ROUNDDOWN
มาแล้ว ในหลักสูตรนี้ท่านจะได้เรียนรู้การปัดเศษในรูปแบบอื่นๆตามที่ต้องการ ด้วยฟังก์ชั่น
CEILING และ FLOOR

CEILING ใช้ปัดขึ้นส่วน FLOOR นั้นใช้ปัดลงทั้งสองฟังก์ชั่นนี้จะช่วยลดความยุ่งยากใน
การปัดเศษในรูปแบบ ที่ต้องการได้มาก ไม่ว่าท่านต้องการปัดเศษในรูปแบบใดทั้ง
จำนวนเต็มหรือทศนิยมก็ตาม

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

รวมไปถึงการจ่ายค่าน้ำมันหรือแก๊ส ที่ท่านไปเติมตามปั๊มน้ำมัน คุณเด็กปั๊มจะไม่ปัดลงให้ท่าน
อย่างเด็ดขาด และแทบทุกครั้งพวกจะปัดให้เต็ม 100 สตางค์หรือหนึ่งบาทไปเลย เจ๋งซะไม่มี...

โม้ไปไกลแต่ใกล้คุกเข้าไปทุกที  ขอกลับเข้าเรื่อง น่าจะปลอดภัยกว่าครับ :)

สมมุติที่ A1 มีค่า 487.54 ท่านต้องการปัดขึ้นให้ลงเศษ 25 สตางค์ หากท่านไม่ทราบการใช้ CEILING ท่าน
อาจจะใช้ฟังก์ชั่น ROUND ทั้งหลายที่ท่านเคยทราบมาแล้วช่วยแก้ปัญหาก็ไม่ผิดแต่ประการใด
ที่ B1 คีย์=ROUNDDOWN(A1,0)+ROUNDUP((A1-ROUNDDOWN(A1,0))/0.25,0)*0.25 ->Enter

หรือ ที่ B1 คีย์ =CEILING(A1,0.25) -> Enter แบบนี้ชีวิตน่าจะง่ายขึ้นอีกเยอะ...

ส่วนฟังก์ชั่น FLOOR ใช้ในการปัดลง หลักการจะเหมือนๆกับ CEILINGโดยขอให้ท่าน ยึดหลักว่า
CEILING ปัดให้ชนเพดาน ส่วน FLOOR ปัดให้ติดพื้น แค่นี้ท่านจะไม่สับสนกับชีวิตในการปัดเศษ
อีกต่อไป หลักการนี้ ท่านสามารถนำไปปัดเศษได้สารพัดรูปแบบ จะปัดให้เต็มสิบ เต็มร้อย หรือปัด
ให้ลงตัวในจำนวนที่ท่านกำหนด ไม่ว่าจะเป็น จำนวนเต็ม หรือทศนิยมใดๆก็ตาม

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

การหาผลรวมตามช่วงเวลาเป็นอีกหนึ่งแนวทางที่ท่านจะสามารถนำไปประยุกต์ใช้กับการทำรายงาน
ต่างๆ ตามช่วงเวลาที่ท่านต้องการทราบ เช่นรายงานยอดขายระยะเวลา 6 เดือนสุดท้ายหรือช่วงระยะ
เวลาใดๆเช่น จากเดือน...ถึงเดือน...หรือจากปี...ถึงปี... เพื่อเปรียบเทียบตามช่วงระยะเวลาดังกล่าว
ในหลักสูตรนี้ท่านจะได้ทราบถึงวิธีการ ประยุกต์ ความรู้ที่ท่านได้ทราบ มาแล้วจาก Excel Advanced-1
แบบคลิกเดียวเปลี่ยนทั้งชุดข้อมูล และกราฟ ในอีกรูปแบบหนึ่ง ที่จะทำให้รายงานของท่านมีความน่าสนใจ
ช่วยให้การ Present ของท่านน่าติดตาม


ตัวอย่างด้านล่างนี้เป็นยอดขายในแต่ละเดือน หากท่านต้องการคีย์ เดือนใดๆลงไปที่ D3 เดือนถัดๆไป
จะปรากฎขึ้น อัตโนมัติรวมทั้งยอดขายไปจนถึงเดือนสุดท้ายของปีด้วย ท่านควรทำอย่างไร


เพื่อให้เห็นภาพที่ชัดเจนมากขึ้น ขอตั้งชื่อช่วงเซลล์ A2:A13 ว่า Month และที่ D3 ทำ Validation List ไว้
 


** ดังนั้น Month ในสูตรนี้จะหมายถึง ช่วงเซลล์  A2:A13 นั่นเอง**
1.ที่ D4 คีย์  =INDEX(Month,MATCH($D$3,Month,0)+ROW(D1))
2. Copy สูตรลงล่าง
3.ที่ E3 คีย์ =INDEX($B$2:$B$13,MATCH(D3,Month,0))
4. Copy สูตรลงล่าง
 และแน่นอนท่านจะพบว่า มีค่า ERROR เกิดขึ้น



ดังนั้นจึงควรใช้ IF(ISERROR( ) ซ้อนลงไปเพื่อบังคับค่า ERROR ให้เป็น 0 หรือค่าว่าง
IF(ISERROR( ) บรรยายไว้ใน Excel Advanced-1 ท่านก็นำมาใช้ได้เลย


การบังคับค่า ERROR ในลักษณะนี้ จะใช้วิธีการอื่นๆอีกมากมายหลายๆวิธีก็ได้ แต่แนะนำให้ใช้ความรู้ IF(ISERROR( )  ที่มีอยู่ไปช่วยจัดการจะดีกว่า เนื่องจาก ISERROR นั้นสามารถบังคับค่า ERROR ได้ทุกกรณี


1.ที่ D4 คีย์
 =IF(ISERROR(INDEX(Month,MATCH($D$3,Month,0)+ROW(D1))),"",INDEX(Month,MATCH($D$3,Month,0)+ROW(D1)))

2. Copy สูตรลงล่าง

3.ที่ E3 คีย์
 =IF(ISERROR(INDEX($B$2:$B$13,MATCH(D3,Month,0))),"",INDEX($B$2:$B$13,MATCH(D3,Month,0)))

4. Copy สูตรลงล่าง

และนำข้อมูลที่ตัดค่า ERROR ออกแล้ว ไปทำกราฟต่อได้เลย และเมื่อท่านคลิกเลือกเดือนที่ D3 ที่เดียว
ข้อมูลจะเปลี่ยนไป เรียงเดือนกันลงมาถึงเดือนสุดท้าย และกราฟของท่านจะเปลี่ยนไปด้วย โดยอัตโนมัติ
คลิกเดียวเปลี่ยนทั้งชุดนี้จะช่วยให้การ Present ของท่านมีความน่าสนใจ ดูเจ๋ง แจ่มแจ๋วขึ้นมาทันตา



หากต้องการคลิกเลือกให้แสดงเฉพาะช่วงเวลา ใดๆ เช่นให้แสดง ยอดขายตั้งแต่เดือน...ถึงเดือน... ทำได้ดังนี้
ที่ D1 และ E1 ทำ Validation List เพื่อเลือกเดือน ที่ต้องการให้แสดงยอดขาย
 


โจทย์แบบการเลือกช่วงเวลา ใช้ฟังก์ชั่นเหล่านี้ไปช่วย เช่น IF(AND( ) เพื่อบังคับให้แสดงเฉพาะเดือน
ที่อยู่ในช่วงที่ถูกเลือก จากนั้นใช้ ROW , SMALL ,INDEX  เพื่อดึงค่าขึ้นมาอยู่ด้านบน
เรียงกันลงไปโดยอัตโนมัติ รวมทั้ง IF(ISERROR( ) เพื่อบังคับค่า ERROR ให้เป็นค่าว่างเช่นเคย
1.ที่ C2 คีย์  =IF(AND(A2>=$D$1,A2<=$E$1),A2,"") -> Copy สูตรลงล่าง

จากนั้นใช้ IF(ISERROR( ) บังคับให้เป็นค่าว่าง ( บรรยายในหลักสูตร Excel Advanced-1 )

2.ที่ D3 คีย์ =IF(ISERROR(SMALL($C$2:$C$13,ROW(C1))),"",SMALL($C$2:$C$13,ROW(C1)))

3.ที่ E3 คีย์ =IF(ISERROR(INDEX($B$2:$B$13,(MATCH(D3,Month,0)))),"",INDEX($B$2:$B$13,(MATCH(D3,Month,0))))

4.Copy สูตรที่ D3:E3 ลงล่าง

ได้ข้อมูลตามต้องการ นำไปสร้างกราฟ  … เมื่อท่านคลิกเลือกช่วงเวลาที่ D1 และ E1
ชุดข้อมูลจะเปลี่ยนไป รวมทั้งกราฟ ก็จะเปลี่ยนไปโดยอัตโนมัติเช่นกัน  ( Dynamic)
 

  สำคัญ!!! อยากให้ท่านพิจารณาการใช้ ROW, SMALL , INDEX ในลักษณะนี้ให้ดี ฟังก์ชั่นเหล่านี้
มีความสำคัญมาก ในการเรียนรู้ Excel ในระดับที่ยากและซับซ้อนขึ้นไป รวมถึงการเรียนรู้การใช้ Array
ที่สลับซับซ้อน มักจะใช้ฟังก์ชั่นเหล่านี้ทั้งชุดไปช่วยแก้ปัญหาแทบทั้งสิ้น

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

อยู่หกฟังก์ชั่นที่ท่านควรเข้าใจและใช้ได้อย่างชำนาญดังต่อไปนี้

ROW( ) , COLUMN( ) , SMALL( ), LARGE( ), MATCH( ), และ INDEX( )

ท่านทราบหรือไม่ว่า ในการแก้ปัญหา Excel ที่ยุ่งยากซับซ้อน ไม่ว่าจะใช้วิธีการ แบบง่ายๆเรียบๆ
หรือจะใช้วิธีการทาง Array ล้วนต้องอาศัย ฟังก์ชั่นทั้งหกนี้ หมุนเวียน สลับกันไป และที่สำคัญคือ
มักใช้ฟังก์ชั่นเหล่านี้ร่วมกันกับการใช้ IF โดยการซ้อนฟังก์ชั่น เข้าด้วยกัน เป็นชั้นๆเป็นชุดๆ
ในการบรรยาย ในหลักสูตร Excel Advanced-2 นี้ ผมมีบรรยายเรื่องเหล่านี้ไว้ให้ท่านได้ทราบพื้นฐาน
ที่สำคัญ เป็นความรู้ติดตัวไป เพื่อที่ท่านจะได้นำไปใช้และเรียนรู้ในระดับที่ลึกต่อไปได้ด้วยตัวท่านเอง

ฟังก์ชั่นทั้งหก นี้ ผมได้อัดเป็น วีดีโอเพื่อการศึกษาพอเป็นแนวทาง นำลงไว้ใน Youtube ท่านสามารถ
ชมการบรรยาย เพื่อเป็นแนวทางเบื้องต้น หรือ Download ไฟล์วีดีโอ หากท่านต้องการ ได้ที่

www.youtube.com/user/bigcat9excel

ในการนำฟังก์ชั่นทั้งหกนี้ไปใช้ในรูปแบบที่สลับซับซ้อน หากท่าน ขยันอ่าน ท่านสามารถเข้าไป
ดูตัวอย่าง วิธีการนำไปใช้ในรูปแบบต่างๆ ซึ่งผม แสดงเป็นไฟล์ Excel ไว้ที่                          
www.bigcat9excel.com

เลือกดูที่ หัวข้อ " ความรู้ อ่านฟรี ไม่เสียตังค์ "
นอกจากอ่านฟรี แล้วท่านยังสามารถ Save ไฟล์ Excel  ในนั้นไปได้ โดยไม่เสียตังค์ด้วยเช่นกัน :)

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

บางบทตอนของ การเทียบเวลาที่ถูกบังคับให้ท่อง ราวกับนกแก้ว ตอนที่ยังเป็นละอ่อนน้อย ไร้เดียงสา
60 วินาทีเป็น 1 นาที  60 นาทีเป็น 1 ชั่วโมง  24 ชั่วโมงเป็น 1 วัน... ที่เราท่านล้วนคุ้นเคยกันเป็นอย่างดี
เรื่อง วันที่และเวลา ดูแล้วไม่น่าจะยากแต่ประการใด แต่พอบทจะใช้มันขึ้นมาจริงๆ บน Excel กลับเป็นเรื่อง
ที่ชวนให้วุ่นวาย อยู่ไม่น้อย ในหลักสูตรนี้จึงเห็นว่าเป็นเรื่องใกล้ตัวที่ท่านควรเรียนรู้ให้ถูกต้องไว้ โดย
เฉพาะเรื่อง ที่สำคัญๆ เกี่ยวกับ วันที่ และเวลา ที่พบเจอกันบ่อยๆ ในชีวิตประจำวัน

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

 แต่ในชีวิตจริง ข้อมูลมีมาก และการบันทึกก็ทำกันมานาน ครั้นจะกลับไปแก้ไขด้วยการบันทึกลงไปใหม่     

คงไม่ใช่ทางเลือกที่ดีสักเท่าใด

สิ่งสำคัญคือ ท่านควรเรียนรู้ว่า การบันทึกที่ไม่ควรเป็น จะแก้ไขอย่างไรให้เป็นไปตามสิ่งที่มันควรจะเป็น เช่น
1.คีย์ไว้เป็น 7.50 ต้องการแปลงค่าให้เป็น 7 ชั่วโมง กับ 30 นาที แยก ชั่วโมง-นาทีให้อยู่คนละคอลัมน์
2.คีย์ไว้เป็น 7.50 ต้องการแปลงค่าให้เป็น 7 ชั่วโมง กับ 30 นาที  ในรูป 7:30
3.คีย์ไว้เป็น 7.30 ต้องการแปลงค่าให้เป็น 7 ชั่วโมง กับ 30 นาที โดยแยก ชั่วโมง-นาทีให้อยู่คนละคอลัมน์
4.คีย์ไว้เป็น 7.30 ต้องการแปลงค่าให้เป็น 7 ชั่วโมง กับ 30 นาที  ในรูป 7:30

การแปลงชั่วโมงของเวลาที่อยู่ในรูปมาตรฐาน เป็นนาที ก็เป็นเรื่องที่พบเจอบ่อยๆ เช่น ต้องการแปลง
7:25 ชั่วโมง ให้เป็นนาทีทั้งหมด ( 445 นาที) จะทำอย่างไร

ปัญหาที่พบบ่อยๆ ของการคิดเงินค่าจ้างให้ แก่พนักงานที่ทำงานล่วงเวลา หากทำงานล่วงเวลาไม่เกิน
24.00 น เช่น 17.00-22.00 น. ก็มักไม่มีปัญหามากนัก ปัญหามักจะไปอยู่ที่ พนักงานทำงานล่วงเวลาหลัง
24.00 น เช่น ถึง จาก 17.00 น ถึง04.00 น (ตีสี่) ของอีกวัน การนำเวลามาลบกัน เช่น 4:00-17:00 แบบนี้
ทำไม่ได้นะครับ หรือจะสลับเป็น 17:00-4:00 แบบนี้แม้จะลบกันได้แต่เวลาที่ออกมาก็จะไม่ถูกต้องอยู่ดี
ปัญหาต่างๆเหล่านี้ ไม่ใช่เรื่องเล็กๆน้อยๆ มันเกี่ยวพันไปถึง การจ่าย ค่าจ้างที่ต้องถูกตรงกับความเป็นจริง

หากต้องการแยก วัน เดือน ปี ออกมาจากเซลล์ใดๆ ที่คีย์วันที่ลงไป เช่นต้องการแยก วัน-เดือน-ปี ของ
22-Apr-07  จะแยกออกมา ได้อย่างไร

หรือหากวัน เดือน ปี ถูกแยกกันอยู่คนละคอลัมน์ จะนำกลับไปรวมกันให้เป็น วัน-เดือน-ปี ในเซลล์เดียวได้อย่างไร

คีย์วันเดือนปี ในรูป พ.ศ. ต้องการทำให้เป็น วัน เดือน ปี ในรูป ค.ศ. ควรทำอย่างไร

จะรู้ได้อย่างไรว่า ระยะเวลาใดๆ  วันแรก ถึงวันสุดท้าย มีวันหยุดเสาร์-อาทิตย์กี่วัน

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

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

สิ่งที่ท่านควรทราบไว้เป็นพื้นฐานสำคัญก็คือว่า VLOOKUP แสดงผล Matching หรืออ่านค่าเพียงค่าเดียว
จากสะพานที่กำหนดนั้น ถูกต้องเป๊ะตามหลักการของ VLOOKUP แล้ว มันเป็นสิ่งที่ถูกกำหนดโครงสร้าง
และรูปแบบให้เป็นแบบนั้น นั่นคือการ Matching แบบ หนึ่งต่อหนึ่ง เท่านั้น

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

โจทย์ต้องการ LOOKUP ข้อมูลในตารางด้านซ้าย ให้ปรากฎในตารางด้านขวา ด้วย Product Name
ซึ่งตารางด้านซ้ายมีข้อมูลที่ซ้ำกัน ( Product Name)

หากใช้ VLOOKUP แบบปกติ

1.ที่ H6 คีย์  =VLOOKUP(G6,$B$3:$D$8,2,0)

2.ที่ I6 คีย์  =VLOOKUP(G6,$B$3:$D$8,3,0)

3. Copy สูตรที่ H6:I6 ลงล่าง
   ผลลัพธ์ที่ได้จะนำค่าจากแถวแรก มาแสดงเท่านั้น (Location และ Qty. แสดงค่าซ้ำกันทุกแถว )
 

หากต้องการให้ดึงค่ามาแสดง ถูกต้อง ก็ต้องมีการปรับแต่งกันเล็กน้อย เพื่อไม่ให้มีค่า (Product Name) ซ้ำนั่นเอง

ลองใช้วิธีการง่ายๆดังนี้ ใช้ COUNTIF โดยการตรึงค่าแรก เพื่อให้ค่าเรียงลำดับกันลงไป แล้วใช้ & เชื่อม

1. ที่ A3 คีย์  =COUNTIF($B$3:B3,B3)&B3

2. Copy A3 ลงล่าง

 ทำฝั่งนี้แล้วก็ต้องทำฝั่งนู้นด้วยเพื่อให้มีสะพานที่อ่านค่ากันได้

3. ที่ F6 คีย์  =COUNTIF($G$6:G6,G6)&G6

4. Copy F6 ลงล่าง
ดูผลที่ได้ว่า เปลี่ยนแปลงอย่างไร จากนั้น ทำ VLOOKUP ได้แล้ว

5.ที่ H6 คีย์  =VLOOKUP(F6,$A$3:$D$8,3,0)

6.ที่ I6 คีย์  =VLOOKUP(F6,$A$3:$D$8,4,0)

7.Copy H6:I6 ลงล่าง

 

ค่าที่ขึ้น ERROR หมายถึงไม่มีข้อมูลนั้นๆ ในตารางอ้างอิง ท่านอาจจะใช้ IF(ISERROR( ) 

ไปครอบสูตรเพื่อบังคับให้เป็นค่าว่าง ก็ว่ากันไป จะออกมาได้ประมาณนี้

5.ที่ H6 คีย์   =IF(ISERROR(VLOOKUP(F6,$A$3:$D$8,3,0)),"",VLOOKUP(F6,$A$3:$D$8,3,0))

6.ที่ I6 คีย์  =IF(ISERROR(VLOOKUP(F6,$A$3:$D$8,4,0)),"",VLOOKUP(F6,$A$3:$D$8,4,0))

7.Copy H6:I6 ลงล่าง

 

อีกกรณีหากท่านไม่ใช้ COUNTIF ไปช่วย จะใช้วิธีทาง Array ก็ได้เช่นกัน อาศัยฟังก์ชั่นสำคัญ

ROW,SMALL, INDEX ร่วมกับ IF การใช้ Array นั้น เกือบทุกรูปแบบล้วนอาศัย IF แทบทั้งสิ้น

ดังนั้น ท่านควรศึกษาและใช้ คุณ IF นี้ให้ชำนาญ IF เป็นบันไดสำคัญ ที่จะพาให้ท่านก้าวข้ามไปสู่

การเป็นผู้ใช้ Excel ชั้นยอด

อนึ่ง การใช้ Array ในที่นี้จะใช้คอลัมน์ F ด้วยเพื่อแสดงให้ท่านเห็น ภาพที่ชัดเจน มากขึ้น 

หากท่านชำนาญแล้ว ท่านไม่จำเป็นต้องใช้ คอลัมน์ F  ท่านซ้อนสูตร Array นี้ลงไปในคอลัมน์  H และ I ได้เลย

1.ที่ F6 คีย์  =SMALL(IF(G6=$B$3:$B$8,ROW($B$3:$B$8),""),ROW(B1))

2.กด  Shift + Ctrl ค้างไว้ จากนั้นกด Enter เข้ากล Array
จะเกิดเครื่องหมาย { } ปิด หน้า-หลัง สูตร โดยอัตโนมัติ
{ =SMALL(IF(G6=$B$3:$B$8,ROW($B$3:$B$8),""),ROW(B1))}

3. Copy สูตรที่ F6 ลงล่าง

4.ที่ H6 คีย์ =INDEX(C$1:C$8,$F6)

5. Copy สูตร ที่ H6 ไปทางขวา และลงล่างจนครบ
 


หากท่านไม่ต้องการให้ติดค่า ERROR ก็ใช้ IF(ISERROR( )  ไปบังคับค่า ERROR ให้เป็นค่าว่าง 

หากท่านทำเป็น Array ทั้งชุดท่านก็ซ้อน IF(ISERROR ( ) ลงไปใน Array นั้นได้เลย 

เรื่อง Array ไม่อธิบายละเอียดในที่นี้ เอาไว้พบกันในเรื่อง Array และ กล Array จะดีกว่าครับ

หากท่านสนใจ ผมมีหลักสูตร "เซียนแท้ต้องไม่แพ้ใจ" สอน Array ล้วนๆ รับเฉพาะ เก่งๆเท่านั้น  : )

ในที่นี้ บังคับค่า ERROR ให้เป็นค่าว่าง 

4. ที่ H6 คีย์  =IF(ISERROR(INDEX(C$1:C$8,$F6)),"",INDEX(C$1:C$8,$F6))

5. Copy สูตร ที่ H6 ไปทางขวา และลงล่างจนครบ

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

ขอขอบคุณที่ให้ความไว้วางใจในหลักสูตรของเราด้วยดีตลอดมา
ด้วยความปรารถนาดี

Bigcat9

www.bigcat9excel.com
E-mail : bigcat9excel@gmail.com
Tel : 083-246-6789

Copyright (c) 2006 by bigcat9excel.com ,Excel advance, Excel Training,Excel Training Course ,รับสอน Excel,เซียน Excel ,Excel ขั้นเทพ,อบรม Excel , Excel basic, Excel พื้นฐาน,Excel เบื้องต้น,Excel ขั้นสูง,สอน Excel ,เรียน Excel ,เก่ง Excel,หลักสูตร Excel 2003,2007,2010 , pivot table