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

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

สร้างตารางการปฏิบัติงาน (Gantt Chart) ด้วย Conditional formatting

ตารางการปฏิบัติงาน หรือ Gantt Chart เป็นอีกลักษณะงานหนึ่งที่หลายๆ คนต้องทำ ส่วนใหญ่จะมีลักษณะเป็นตารางรายวัน รายเดือน หรือรายปี ใช้สำหรับการวางแผนและควบคุมโครงงานต่างๆ ให้ดำเนินไปตามระยะเวลาที่วางเอาไว้ เช่น แผนการฝึกอบรมประจำปี, แผนการดำเนินโครงการ หรือ แผนการวางระบบใดๆ ฯลฯ เป็นต้น ดังรูปที่ 1


รูปที่ 1 ตัวอย่างตารางแผนการฝึกอบรมประจำปี


ผมเคยเห็นการสร้างตารางแผนการปฏิบัติงาน (Gantt Chart) ของบางคน จะเรียกว่าเป็นวิธีการขั้นเทพ หรือภูมิปัญญาชาวบ้านก็ไม่ทราบได้ โดยใช้วิธีการวาดเส้นหรือกล่องสี่เหลี่ยม ด้วยเครื่องมือวาดภาพ (Drawing Tools) ลงในช่วงเดือนที่ต้องการ แล้วลงสีให้เป็นสีทึบ ก็จะได้ผลงานออกมาลักษณะคล้ายๆ กับในรูปที่ 1 เช่นกัน

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


ลงมือปฏิบัติ

ก่อนอื่น ให้ทำการสร้างตารางการปฏิบัติงาน สมมติว่าเป็น "ตารางแผนการฝึกอบรมประจำปี" โดยแบ่งเป็นสองส่วน ข้อมูลส่วนแรกได้แก่ ลำดับที่ ชื่อหลักสูตร วันเริ่มต้น วันสิ้นสุด และจำนวนวัน เป็นต้น

เพื่อที่จะให้แถบสีในช่วงระยะเวลาดำเนินการ ออกมาดูสวยงาม จึงควรแทรกแถวว่างข้างบนและข้างล่างของแถวที่เป็นชื่อหลักสูตร และปรับขนาดของแถวนั้นให้มีความสูงประมาณ 6~8 พิกเซล และทำการผสานเซลล์ (Merge cells) เพื่อให้ 3 แถวรวมกันเป็น 1 แถว (เฉพาะในช่วง A:E) ดังรูปที่ 2


รูปที่ 2 ตัวอย่างตารางแผนการฝึกอบรมประจำปี


ทดลองใส่วันที่เริ่มต้น และวันที่สิ้นสุด ลงในคอลัมน์ C และ D ของแต่ละกิจกรรม เพื่อจะใช้ทดสอบการแสดงผล และในคอลัมน์ E เป็นการหาจำนวนวันของกิจกรรมนั้นๆ (ถ้าต้องการ) ให้พิมพ์สูตร =IF(ISBLANK($C7),"",D7-C7+1)


สำหรับข้อมูลส่วนที่สองของตารางนี้คือ ในช่วงคอลัมน์ F:Q ซึ่งจะแสดงแถบสี ที่สัมพันธ์กับวันที่ในคอลัมน์ C และ D ดังนั้น ก่อนอื่นให้ใส่ชื่อเดือนในช่วง F5:Q5 จะใส่เป็นภาษาไทย หรือภาษาอังกฤษ จะเป็นชื่อเต็มหรือชื่อย่อก็ได้ครับ ตามสะดวก ดังรูปที่ 3


รูปที่ 3 แสดงรายชื่อเดือนในหัวตาราง


ขั้นตอนการแสดงแถบสีในช่วงระยะเวลาที่กำหนด

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

  1. ให้เลือกช่วงเซลล์ F7:Q7
  2. สำหรับ Excel 2003 ให้คลิกที่เมนู Format > Conditional formatting… (รูปแบบ > การจัดรูปแบบตามเงื่อนไข...)
  3. เมื่อกรอบการตั้งเงื่อนไขปรากฏขึ้น ให้เลือก Formula Is… (สูตรคือ...) แล้วพิมพ์สูตรดังนี้
    =
    AND(NOT(ISBLANK($C7)),
    MONTH($C7)<=COLUMNS($F:F),

    MONTH($D7)>=COLUMNS($F:F))
  4. คลิกที่ปุ่ม Format (รูปแบบ)
  5. ทำการเลือกรูปแบบสีพื้น (Patterns) ตามต้องการ ดังรูปที่ 4 แล้วคลิก OK
  6. คลิก OK อีกครั้ง เพื่อออกจากหน้าการกำหนดรูปแบบ แล้วสังเกตผลลัพธ์ที่ได้


รูปที่ 4 แสดงการใช้ Conditional Formatting สำหรับ Excel 2003



สำหรับ Excel 2007 หรือ 2010 ให้คลิกที่ริบบอน Home > Conditional formatting > New Rule... ดังรูปที่ 5 แล้วพิมพ์สูตรเช่นเดียวกับในข้อ 3 ข้างต้น


รูปที่ 5 แสดงการใช้ Conditional Formatting สำหรับ Excel 2007 และ Excel 2010



คัดลอกสูตรจาก F7:Q7 (สำหรับการแสดงแถบสีของกิจกรรมที่ 1) เพื่อไปวางในแถวที่ 10, 13, ..., หรือในแต่ละกิจกรรม ตามลำดับ ซึ่งถ้าเราใส่วันที่ในคอลัมน์ C และ D ไว้แล้ว ก็จะเห็นมีแถบสีปรากฏขึ้น ในเดือนที่ตรงกับวันที่ของแต่ละกิจกรรมนั้นๆ ดังรูปที่ 6


รูปที่ 6 แสดงผลลัพธ์ตารางแผนการฝึกอบรม ที่ได้จากการจัดรูปแบบตามเงื่อนไข


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


ขออธิบายเพิ่มเติมเกี่ยวกับการใช้ฟังก์ชัน COLUMNS ในการสร้างเงื่อนไข เนื่องจากว่า รายชื่อเดือนในช่วง F5:Q5 นั้น เป็นข้อความ (Text) แต่เรานำไปเปรียบเทียบกับค่าเดือนของวันเริ่มต้น และวันสิ้นสุด ซึ่งเป็นตัวเลข (Number) ดังนั้น ผมจึงใช้ COLUMNS มาส่งค่าตัวเลขไปเปรียบเทียบกับเดือน โดยฟังก์ชัน COLUMNS นี้ จะทำหน้าที่นับจำนวนคอลัมน์ของช่วงที่เราระบุ ซึ่งในที่นี้ผมให้นับจากคอลัมน์ F เป็นหลัก ไปจนถึงคอลัมน์ Q ก็จะได้ผลลัพธ์เป็นตัวเลข 1-12 ซึ่งก็แทนเดือน 1-12 นั่นเอง

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

  1. เพราะอะไรจึงแทนสูตร =AND(NOT(ISBLANK($C7)),
    MONTH($C7)<=COLUMNS($F:F),
    MONTH($D7)>=COLUMNS($F:F))
    แล้วไม่แสดผลลัพธ์เป็นแถบสีค่ะ

    ตอบลบ