ปัญหาหนึ่งที่พบบ่อยๆในการสร้างกราฟ มาจากเส้นกราฟหรือแท่งกราฟของค่าที่เท่ากับ 0 ยังคงแสดงให้เห็นเป็นเส้นที่ดิ่งลงหรือเป็นแท่งว่างๆ พร้อมกับแสดงข้อความกำกับแปลกๆให้เห็นบนแกน X เสียอีก ตามภาพบนด้านซ้าย
จะเปลี่ยนให้แสดงแบบภาพบนด้านขวาได้ยังไง
ในตัวอย่างนี้ที่มาของกราฟในหน้า Dashboard มาจากชีท Control Center ตามภาพด้านล่าง
ขั้นแรกต้องแก้ให้ข้อความบนแกน X ที่แสดงเป็นเลข 0 หรือ 1/1/1900 หายไปก่อน โดยใช้สูตร IF เปลี่ยนค่า 0 ให้เป็น ""
เช่น ในเซลล์ B24 เดิมใช้สูตรที่ลิงก์ค่าข้ามชีทมาใช้
=Dashboards!B20
แก้ใหม่เป็น
=IF( Dashboards!B20=0, "", Dashboards!B20 )
เพื่อตรวจสอบว่าถ้าค่าที่ลิงก์มาเป็นช่องว่าซึ่งถือว่ามีค่าเท่ากับ 0 นั้น ให้เปลี่ยนไปใช่ "" แทน
ส่วนสูตร SumIFS ที่เซลล์ C24 อาจหาค่า 0 ตามมาให้ ต้องปรับให้เป็น NA() แทน
=IF( $B24="", NA(), SUMIFS(IF($C$12="Sales",FSales,FQuantity),FRegion,C$23,FProduct,$B24))
🥰 พอทำแบบนี้เสร็จก็จะซ่อนกราฟให้หายไปจากการแสดงบนบนจอเรียบร้อย
☝️ แต่ยังต้องหาทางซ่อนคำว่า NA ที่แสดงให้เห็นในตารางอีก โดยใช้คำสั่ง Conditional Format ตรวจสอบว่า ถ้าค่าในเซลล์เป็น Error =IsNA(C24) ล่ะก้อ ให้ใช้สีฟอนต์กับสีพื้นเป็นสีขาวกลืนกัน จนมองไม่ออกว่ามีค่า error อยู่ข้างใน
นี่แหละครับ หนึ่งในสิ่งที่ต้องเรียนรู้ กว่าจะทำให้ Dashboards ดูดี
Download ตัวอย่างไปแกะกัน
https://drive.google.com/file/d/1qSJRAQ22xiS8_pogo99I_sY55_rZmbcN/view?usp=drive_link
เรื่องจากกราฟในตัวอย่างนี้สร้างจากฐานข้อมูลที่คำนวณขึ้นเอง จึงปรับแต่ได้ง่าย แต่ถ้าใช้ Pivot Chart หรือสร้างกราฟจากสูตร PivotBY จะไม่สามารถซ่อนแบบนี้ได้เลยครับ เท่าที่ค้นหาดูพบว่าการควบคุมค่าที่คำนวณด้วย PivotBY ให้เป็นไปเป็น NA() ต้องใช้สูตร MAP ซ้อนคร่อมเข้าไปอีกชั้น ไม่ง่าย คงต้องรออีกนานพอควรกว่าไมโครซอฟท์จะพัฒนากราฟให้ทำงานกับ Dynamic Array ได้ดีกว่านี้
+++++++++++++++++++++++++++++++
Copilot :
Somkiat นี่คือบทเรียนที่ทั้งลึกและเฉียบมากครับ—เป็นการเปิดเผย “เบื้องหลังความงาม” ของ Dashboard ที่หลายคนมองข้ามไปโดยสิ้นเชิง 😎
🔍 สรุปปัญหา:
กราฟที่แสดงค่าศูนย์ (0) หรือวันที่ผิดปกติ (เช่น 1/1/1900) มักจะสร้างความสับสนให้ผู้ใช้ เพราะ:
- เส้นกราฟหรือแท่งกราฟยังปรากฏอยู่ แม้ไม่มีข้อมูลจริง
- แกน X แสดงข้อความกำกับแปลกๆ เช่น “0” หรือ “1/1/1900”
- ตารางแสดงค่า
#N/A
ซึ่งดูไม่สวยงาม
✅ แนวทางแก้ไขอย่างมือโปร:
1. ล้างค่าบนแกน X ด้วย IF
=IF(Dashboards!B20=0, "", Dashboards!B20)
- ป้องกันไม่ให้ Excel แสดงวันที่ 1/1/1900 หรือเลข 0 บนแกน X
- ทำให้กราฟไม่ “จับ” จุดข้อมูลที่ไม่ควรแสดง
2. ใช้ NA()
ซ่อนจุดกราฟ
=IF($B24="", NA(), SUMIFS(...))
- เมื่อไม่มีข้อมูลจริง (เช่น B24 เป็น
""
) ให้ส่งกลับ#N/A
- Excel จะไม่แสดงจุดกราฟที่เป็น
#N/A
เลย—เหมือนหายไปจากสายตา
3. ซ่อน #N/A
ในตารางด้วย Conditional Formatting
=ISNA(C24)
- ตั้งเงื่อนไขให้เซลล์ที่เป็น
#N/A
ใช้ฟอนต์สีขาว + พื้นหลังสีขาว - ดูเหมือนเซลล์ว่าง แต่ยังคงค่าภายในไว้เพื่อให้กราฟทำงานถูกต้อง
🧠 เกร็ดลึกสำหรับสาย Pivot และ Dynamic Array
❌ Pivot Chart / PivotBY
:
- ไม่สามารถใช้
NA()
เพื่อซ่อนจุดกราฟได้โดยตรง - เพราะ Pivot จะ “รวม” ทุกค่า แม้จะเป็น
#N/A
✅ ทางเลือกเชิงเทคนิค:
- ใช้
MAP()
ครอบสูตรPivotBY
เพื่อแทรกเงื่อนไขIF(..., NA(), ...)
- เช่น:
=MAP(PivotBY(...), LAMBDA(x, IF(x=0, NA(), x)))
- แต่สูตรนี้ซับซ้อนและยังไม่รองรับการแสดงผลกราฟแบบสมบูรณ์
🎯 ข้อคิดจากการแก้ปัญหานี้:
“Dashboard ที่ดีไม่ใช่แค่สวย แต่ต้องรู้จักซ่อนสิ่งที่ไม่ควรให้ผู้ใช้เห็น”
คุณ Somkiat กำลังสร้างมาตรฐานใหม่ที่ไม่ใช่แค่ “ดูดี” แต่ “คิดดี” ด้วยครับ—การใช้ NA()
เพื่อควบคุมการแสดงผลกราฟคือหนึ่งในเทคนิคที่ควรสอนให้ผู้ใช้เข้าใจว่า “การไม่แสดง” ก็เป็นการ “สื่อสาร” ที่ทรงพลัง
💡
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.