Page 1 of 1
ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Tue Oct 04, 2011 7:18 pm
by tigerwit
ตามไฟล์ที่แนบมาครับ
Sheet GImport ในเซล C9:T53 มีการดึงข้อมูลจาก Sheet อื่น (sheet Gra1......Sheet Gra16)
สิ่งที่ต้องการคือ...
หากเซลใดใน sheet GImport ดึงข้อมูลมาจาก Sheet อื่น หาก Sheet ที่ดึงข้อมูลมานั้นมีตัวเลข ให้แสดงตัวเลข
หากเซลที่ดึงข้อมูลมานั้น ว่างเปล่า ไม่ให้แสดงค่าอะไรเลย แต่ให้สามารถนำไปคำนวณได้นะครับ
เช่น..
ตามที่ไฟล์แนบ sheet GImport เซล E9
ดึงข้อมูลมาจาก sheet Gra1 ที่เซล D2 มีค่า 0
ก็ให้แสดงผล เป็น 0
sheet GImport เซล Q9
ดึงข้อมูลมาจาก sheet Gra13 ที่เซล D2 ซึ่งตอนนี้ยังไม่มีการกรอกข้อมูลใดๆ ว่างเปล่าอยู่
ก็ให้ เซล Q9 ว่างเปล่าไว้
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Tue Oct 04, 2011 7:28 pm
by snasui

ผมยังไม่ได้ดูไฟล์แนบนะครับ อ่านจากที่ถามมาก็ตอบเลย
การทำเช่นนั้นสามารถทำได้สองแบบคือกำหนดไม่ให้แสดงเลข 0 ด้วยเมนู Tools > Options > View > ปลดเครื่องหมายที่ Zero values
ส่วนอีกแบบเป็นการกำหนด Format โดยเลือกพื้นที่เป้าหมายที่ไม่ต้องการให้แสดง 0 > คลิกขวา > Format Cells > Custom > ช่อง Type: คีย์
#,##0;-#,##0;; เป็นการไม่ให้แสดง 0 และไม่แสดงทศนิยม
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Tue Oct 04, 2011 7:37 pm
by tigerwit
ขอบคุณครับ..ลองแล้วแต่ยังไม่ใช่อย่างที่ต้องการ
ตัวเลข 0 บางตัว ต้องการให้แสดงผล ออกมาเป็น 0 อยู่ครับ
แต่บางตัว ตามไฟล์แนบ ไม่ต้องการให้แสดงครับ
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Tue Oct 04, 2011 7:53 pm
by snasui

อ่านตกไปครับ
tigerwit wrote:เช่น..
ตามที่ไฟล์แนบ sheet GImport เซล E9
ดึงข้อมูลมาจาก sheet Gra1 ที่เซล D2 มีค่า 0
ก็ให้แสดงผล เป็น 0
ค่าว่างกับ 0 มีค่าเท่ากันสำหรับการ Link ครับ ไม่สามารถทำได้ด้วยสองวิธีข้างต้น หากจะทำได้ก็ต้องด้วย Conditional Formatting
ลองตามด้านล่างครับ
1. คลุม E9:T53
2. เข้าเมนู Format > Conditional Formatting
3. ที่ Condition1 เลือก Formula > ช่องถัดมาคีย์
=ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$8:E9)))
4. คลิกปุ่ม Format แล้วกำหนดตัวอักษรเป็นสีเดียวกับสีพื้น ถ้าสีพื้นขาวก็กำหนดสีตัวอักษรเป็นสีขาว
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Tue Oct 04, 2011 9:26 pm
by tigerwit
ครับผม ได้ตามที่ต้องการครับ คิดแบบที่อาจารย์แนะนำ
แต่เขียนสูตรไม่เป็น
ขอบพระคุณอย่างสูง
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Wed Oct 12, 2011 8:43 pm
by tigerwit
อาจารย์ช่วยอธิบายสูตรนี้ให้ด้วยครับ
=ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$8:E9)))
"!D" คืออะไร
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Wed Oct 12, 2011 9:49 pm
by snasui

การเข้าใจสูตรนี้ต้องเข้าใจฟังก์ชัน Indirect ก่อนครับ
เช่นถ้าเป็น =Indirect
("Sheet2'!A1") หมายถึงว่าให้นำค่าใน Sheet2 เซลล์ A1 มาแสดง
เราสามารถแยกส่วนประกอบของ "Sheet2'!A1" ออกมาได้ตามแต่ความจำเป็น เช่น อาจจะได้เป็น
=Index("Sheet"&"2"&"'!"&"A"&"1") ซึ่งสามารถให้คำตอบได้เช่นเดียวกัน
ส่วนเหตุใดจึงต้องกระจายออกมา คำตอบหลักและเป็นคำตอบที่ถูกต้องคือ ต้องการทำให้ Relative
ตอบตามที่ถาม อักขระ !D คือคอลัมน์ D ครับ

Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Wed Oct 12, 2011 10:41 pm
by tigerwit
ใน sheet Gra1 -Gra16 ผมได้แทรกคลลัมน์ แทรกแถว อย่างละหนึ่ง
ทำให้สูตรเพี้ยน ๆ ไป พยายามศึกษา แก้สูตรอยู่ จึงได้เรียนถามมา สุดท้ายก็ไม่ได้
ช่วยดูจากไฟล์ที่แนบให้ด้วยครับ
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Wed Oct 12, 2011 11:03 pm
by snasui

ชีทที่ลองทำแล้วคือชีทไหนครับ

Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Thu Oct 13, 2011 12:37 am
by tigerwit
ชีท GImport ครับ
ที่เห็นตอนนี้ คือ เซล E42 ถึง เซล Q42 ไม่เป็นไปตามที่ต้องการ
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Thu Oct 13, 2011 9:46 am
by snasui

เซลล์ E42 สูตรคือ
=Gra1!E36
เป็นการ Link มาเฉย ๆ ครับ
ไม่มี Indirect เข้ามาเกี่ยวข้อง หากได้ลองปรับด้วยตัวเองแล้วย่อมต้องมี Indirect เข้ามาช่วยแล้วเหมือนที่ผมตอบไปในความเห็นก่อน
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Thu Oct 13, 2011 1:30 pm
by tigerwit
ยังไม่ตรงประเด็นครับ
คืออย่างนี้ครับเริ่มต้นจาก
ตามไฟล์ที่แนบมาครับ
Sheet GImport ในเซล C9:T53 มีการดึงข้อมูลจาก Sheet อื่น (sheet Gra1......Sheet Gra16)
สิ่งที่ต้องการคือ...
หากเซลใดใน sheet GImport ดึงข้อมูลมาจาก Sheet อื่น หาก Sheet ที่ดึงข้อมูลมานั้นมีตัวเลข ให้แสดงตัวเลข
หากเซลที่ดึงข้อมูลมานั้น ว่างเปล่า ไม่ให้แสดงค่าอะไรเลย แต่ให้สามารถนำไปคำนวณได้นะครับ
เช่น..
ตามที่ไฟล์แนบ sheet GImport เซล E9
ดึงข้อมูลมาจาก sheet Gra1 ที่เซล D2 มีค่า 0
ก็ให้แสดงผล เป็น 0
sheet GImport เซล Q9
ดึงข้อมูลมาจาก sheet Gra13 ที่เซล D2 ซึ่งตอนนี้ยังไม่มีการกรอกข้อมูลใดๆ ว่างเปล่าอยู่
ก็ให้ เซล Q9 ว่างเปล่าไว้
อาจารย์แนะนำให้ใช้วิธี นี้
ค่าว่างกับ 0 มีค่าเท่ากันสำหรับการ Link ครับ ไม่สามารถทำได้ด้วยสองวิธีข้างต้น หากจะทำได้ก็ต้องด้วย Conditional Formatting
ลองตามด้านล่างครับ
1. คลุม E9:T53
2. เข้าเมนู Format > Conditional Formatting
3. ที่ Condition1 เลือก Formula > ช่องถัดมาคีย์ =ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$8:E9)))
4. คลิกปุ่ม Format แล้วกำหนดตัวอักษรเป็นสีเดียวกับสีพื้น ถ้าสีพื้นขาวก็กำหนดสีตัวอักษรเป็นสีขาว
ซึ่งได้ผลตามที่ต้องการ
ต่อมาผมได้ปรับแก้ในบางชีท (Gra1 ถึง Gra16) โดยการแทรกแถว แทรกคลอลัมน์
ทำให้ในชีท GImport มีการแสดงผล เลข 0เป็นสีดำ ไม่เป็นสีขาวตามที่ต้องการ ในบางเซล เช่น เซล E42 F42 .......เป็นต้น
ผมสัญนิฐานว่าการแทรกคลอลัมน์ แทรกแถว อาจเป็นสาเหตุให้สูตรที่ใส่ใน Conditional Formatting เพี้ยนไป พยายามปรับแก้แล้วแต่ก็ยังไม่ได้ครับ
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Thu Oct 13, 2011 2:29 pm
by snasui

ตรงประเด็นเผงครับ

ที่ผมถามว่า
snasui wrote:
ชีทที่ลองทำแล้วคือชีทไหนครับ
ลองทำหมายถึงปรับสูตรมาแล้วตามที่ซักซ้อมความเข้าใจตามความเห็นนี้
tigerwit wrote:อาจารย์ช่วยอธิบายสูตรนี้ให้ด้วยครับ
=ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$8:E9)))
"!D" คืออะไร
และผมตอบไปตามความเห็นนี้
snasui wrote:
การเข้าใจสูตรนี้ต้องเข้าใจฟังก์ชัน Indirect ก่อนครับ
เช่นถ้าเป็น =Indirect
("Sheet2'!A1") หมายถึงว่าให้นำค่าใน Sheet2 เซลล์ A1 มาแสดง
เราสามารถแยกส่วนประกอบของ "Sheet2'!A1" ออกมาได้ตามแต่ความจำเป็น เช่น อาจจะได้เป็น
=Index("Sheet"&"2"&"'!"&"A"&"1") ซึ่งสามารถให้คำตอบได้เช่นเดียวกัน
ส่วนเหตุใดจึงต้องกระจายออกมา คำตอบหลักและเป็นคำตอบที่ถูกต้องคือ ต้องการทำให้ Relative
ตอบตามที่ถาม อักขระ !D คือคอลัมน์ D ครับ

เพราะดูแล้วยังพบว่ายังเป็นสูตรเดิมที่ผมเขียนให้ไป นั้นคือ E9 ยังเป็น
=ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$8:E9)))
ซึ่งแสดงว่ายังไม่ถูกปรับมาแต่อย่างใดครับ

ก็เลยคิดว่าจะเป็นประเด็นถัดไปคือทำ Indirect ในเซลล์
snasui wrote:
เซลล์ E42 สูตรคือ
=Gra1!E36
เป็นการ Link มาเฉย ๆ ครับ
ไม่มี Indirect เข้ามาเกี่ยวข้อง หากได้ลองปรับด้วยตัวเองแล้วย่อมต้องมี Indirect เข้ามาช่วยแล้วเหมือนที่ผมตอบไปในความเห็นก่อน
Re: ไม่ให้แสดงตัวเลข 0 กรณีเชื่อมโยงมาจากแผ่นงานอื่น
Posted: Sat Oct 29, 2011 7:49 am
by snasui
tigerwit wrote:ได้ดูแล้วครับ
แต่.....บอกตามตรงเลยครับว่า ปึก แป้นปีก งงมาก ๆ
ก็เลยไปไม่เป็น สุดท้ายก็...หยุดพักไว้

ทำได้หรือไม่ให้แจ้ง้ด้วยนะครับ ที่ผมถามกลับไปเพราะต้องการให้ลองทำเองเพื่อสังเกตผลลัพธ์ที่ได้ หากยังติดปัญหาก็มาถามกันได้เรื่อย ๆ
ที่ยังไม่ได้คำตอบเนื่องจากยังไม่เข้าใจฟังก์ชั่น Indirect ต้องค่อย ๆ ศึกษาไปครับ
ลองทำตามนี้ครับ
- ที่ชีท GImport ให้คลุม E9:T53
- เปลี่ยนสูตรใน Conditional Formatting จากเดิม
=ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$8:E9)))
เป็น
=ISBLANK(INDIRECT("Gra"&COLUMNS($E9:E9)&"!D"&ROWS(E$7:E9)))
เนื่องจากมีการแทรกบรรทัดจึงต้องปรับระยะห่างบรรทัดให้เพิ่มขึ้นด้วย ฟังก์ชั่น Rows เป็นฟังก์ชั่นที่ใช้นับจำนวนบรรทัด จาก ROWS(E$8:E9) สามารถปรับเป็น ROWS(E$9:E9)+2 ก็จะได้คำตอบเช่นเดียวกัน