snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#1
Post
by kmb » Mon Nov 01, 2010 8:44 pm
จากไฟล์ที่แนบมา ผมใส่ Conditional format ว่าถ้าค่าในคอลัมน์ B มากกว่า 10 ให้ cell เป็นสีเหลือง ก็ทำได้ไม่มีปัญหาครับ
แต่ต้องการใส่ขอบเขตไว้สำหรับในกรณีที่มีจำนวนบรรทัดมากขึ้น โดยเปลียนจาก applied to : =$A$1:$B$12 เป็น
=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1)) โดยตรง หรือใช้วิธี define name แล้วก็ใส่สูตร OFFSET ไปที่ NAME แทน แล้วแทนค่า
มันก็ทำงานนะครับ แต่มันก็เปลี่ยนค่าจาก OFFSET หรือ NAME นั้น ๆ กลับไปเป็น =$A$1:$B$12 ทุกครั้ง
ไม่ทราบว่าพอจะมีวิธีทำให้สามารถเปลี่ยนขอบเขตลักษณะนี้ได้ไหมครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Mon Nov 01, 2010 10:02 pm
ดูแล้วน่าจะเป็นความฉลาดของโปรแกรมครับ แม้ว่าจะให้ชื่อไว้กับช่วงข้อมูลแล้วนำมาใช้ในช่อง Applied to แต่โปรแกรมก็แปลงกลับมาเป็นช่วงข้อมูล แต่การกำหนด Conditional Formatting นั้นสามารถที่จะเพิ่มลดตามตามปริมาณข้อมูลที่เราคีย์เพิ่มได้ ไม่ใช่ว่าโปรแกรมแปลงกลับมาเป็นช่วงข้อมูลแล้วจะจำกัด Conditional Formatting อยู่เพียงแต่ช่วงเซลล์นั้น
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#3
Post
by kmb » Wed Nov 03, 2010 8:53 am
แต่พอผมลองคีย์ข้อมูลเพิ่ม range มันไม่เปลี่ยนตามน่ะครับ
format จะตามมาด้วยในกรณีที่ copy จาก range เดิมเท่านั้น
หรือไม่ก็ต้อง copy คำสั่ง OFFSET หรือ NAME ไปใ่ส่ในช่อง applied to ใหม่ มันถึงจะเปลี่ยนเป็น range ใหม่ให้
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Wed Nov 03, 2010 10:40 am
ดูภาพการทดสอบสด ๆ จากไฟล์ที่คุณ kmb แนบมาครับ
You do not have the required permissions to view the files attached to this post.
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#5
Post
by kmb » Wed Nov 03, 2010 1:17 pm
ถ้าเป็นการเพิ่มทีละบรรทัดดังในรูป ไม่มีปัญหาครับ
แต่ตอนที่ใช้งาน ผมทำจาก 2 วิธีครับ คือ
1. ใช้ Autofill
2. ใช้ copy --> paste
ซึ่งจะเป็นการใส่ข้อมูลมากกว่า 1 บรรทัดต่อครั้ง
Range มันจะคลุมเพิ่มแค่บรรทัดแรกบรรทัดเดียวเท่านั้นน่ะครับ
ขอโทษทีครับ ทำเป็นภาพให้เห็นอย่างข้างบนไม่เป็น
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Wed Nov 03, 2010 1:42 pm
การ Copy แล้ววางให้วางแบบ Special ครับคือ
หลังจาก Copy เซลล์ต้นทาง > คลิกขวาที่เซลล์เป้าหมาย > Paste Special > Value
หากวางตรง ๆ จะทำให้ Conditional Formatting ที่กำหนดไว้ถูกทับด้วย Format ของเซลล์ที่วางครับ
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#7
Post
by kmb » Wed Nov 03, 2010 10:03 pm
snasui wrote: การ Copy แล้ววางให้วางแบบ Special ครับคือ
หลังจาก Copy เซลล์ต้นทาง > คลิกขวาที่เซลล์เป้าหมาย > Paste Special > Value
หากวางตรง ๆ จะทำให้ Conditional Formatting ที่กำหนดไว้ถูกทับด้วย Format ของเซลล์ที่วางครับ
มันเป็นแบบนี้น่ะครับ เวลา paste ถึงแม้ว่าจะ paste value ก็ตาม
cf.gif
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Thu Nov 04, 2010 10:04 am
ไม่เป็นไรครับ เราไปปรับช่วงข้อมูลเผื่อไว้ก่อนครับ เช่นจากเดิม Applied to: =$A$1:$B$12 ให้เราแก้เป็น =$A$1:$B$
1200 ครับ
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#9
Post
by kmb » Fri Nov 05, 2010 8:45 pm
snasui wrote: ไม่เป็นไรครับ เราไปปรับช่วงข้อมูลเผื่อไว้ก่อนครับ เช่นจากเดิม Applied to: =$A$1:$B$12 ให้เราแก้เป็น =$A$1:$B$
1200 ครับ
ขอบคุณครับ จริง ๆ แล้วถ้ามีข้อมูลใน Column A & B ทั้งหมดเพื่อจะตรวจสอบตามเงื่อนไขเหมือนกันหมด
ก็คงใส่เป็น Applied to: =$A:$B ไปเลยน่ะครับ
แต่ที่จะพยายามเขียนสูตรให้เปลี่ยน range ได้เผื่อในกรณีที่ worksheet นั้น มีการแบ่งข้อมูลออกเป็นช่วง ๆ สำหรับกรณีที่ต่างกันน่ะครับ
จะลองหาวิธีประยุกต์ดูครับ
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#10
Post
by kmb » Fri Dec 24, 2010 3:20 pm
ถ้าในกรณีที่มีหลาย worksheet แล้วต้องการจะ copy conditional format จาก sheet นึง ไปยัง sheet อื่น ๆ สามารถทำได้ไหมครับ
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Fri Dec 24, 2010 3:37 pm
หากกำหนด Conditional Format ด้วยการดูค่าในเซลล์สามารถ Copy Format ไปได้ครับ แม้ว่าจะข้ามไฟล์กันก็ตาม แต่การจะให้แสดงผลเหมือนกัน สภาพแวดล้อมของข้อมูลที่นำ Format ไปวางก็ต้องมีลักษณะเดียวกันครับ
หากกำหนด Condition Format เป็นสูตรก็คงต้องดูเป็นกรณี ๆ ไปครับ
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#12
Post
by kmb » Fri Dec 24, 2010 4:33 pm
ตามตัวอย่างไฟล์ที่แนบมา ถ้าต้องการ copy conditional format จาก sheet 1 ไปยัง sheet 2 มีวิธีการไหมครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#13
Post
by snasui » Fri Dec 24, 2010 4:43 pm
ลองตามนี้ครับ
1. ที่ Sheet1 คลุม B2:O34 > คลิกขวา > Copy
2. ไปที่ Sheet2 คลิกขวาเซลล์ B2 > Paste Special > Format
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#14
Post
by kmb » Fri Dec 24, 2010 8:19 pm
ถ้าใช้วิธีเลือกที่ Conditional Formatting > Manage Rules ...
เลือก New Rule ... แล้วเปลี่ยนค่าในสูตร กับช่อง Applied to โดยให้อ้างอิงค่าด้วยการใส่ชื่อ Worksheet นั้น ๆ ได้ไหมครับ
แต่ผมลองแล้ว ทำไม่ได้ ไม่รู้ว่าเป็นเพราะทำไม่ถูกหรือเปล่า
ตอนนี้ถ้าจะทำได้ต้องไปเลือก Worksheet นั้น ๆ ก่อนแล้วค่อยเลือก New Rule ... เพื่อเปลี่ยนค่าในช่อง Applied to ทีหลัง
เหตุผลที่ไม่ใช้วิธี Paste Special > Format เพราะว่าแต่ละ Worksheet มีการ Format อื่น ๆ ซึ่งจะไม่เหมือนกัน เช่นการตีเส้น เป็นเส้นเดี่ยว เส้นคู่ หรือตัวหนังสือเป็นตัวหนาในบางบรรทัด ประมาณนั้นน่ะครับ
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#15
Post
by snasui » Fri Dec 24, 2010 8:41 pm
ในการเขียนสูตร Conditional Formatting เราจะอ้างอย่างไรก็ได้ครับ แต่ในช่อง Applies to ถูกบังคับให้อ้าง Sheet ปัจจุบันเท่านั้น ดังนั้น การเขียน Conditional Formatting เพื่อไป Applies to กับชีทอื่นจึงไม่น่าจะทำได้ด้วยวิธีนี้
แต่เราสามารถอ้างอิงเงื่อนไขจากชีทอื่นเพื่อมาใช้กับชีทปัจจุบันได้ครับ ดูตัวอย่างการเขียนสูตรตามไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#16
Post
by kmb » Sat Dec 25, 2010 11:54 am
ขอบคุณครับ ถ้างั้นในกรณีผม คงต้องทำไปทีละ worksheet
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#17
Post
by snasui » Sat Dec 25, 2010 12:16 pm
โดยลักษณะการทำงานของ Conditional Formatting จะกำหนดให้ทำที่ชีทใครชีทมันครับ ถ้ามีข้อจำกัดว่าไม่สามารถจะ Copy Format ได้ ก็จำเป็นต้องทำทีละชีทครับ
kmb
Bronze
Posts: 305 Joined: Thu Oct 14, 2010 10:03 pm
#18
Post
by kmb » Sat Dec 25, 2010 11:34 pm
ไม่ทราบว่าสามารถประยุกต์โดยใช้ define name แทนการใส่สูตรโดยระบุชื่อ worksheet ได้ไหมครับ
snasui
Site Admin
Posts: 31175 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#19
Post
by snasui » Sat Dec 25, 2010 11:42 pm
สามารถทำได้ครับ