สารบัญ
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้ 3 วิธีที่แตกต่างกันในการเน้นแถวและคอลัมน์ของเซลล์ที่เลือกใน Excel แบบไดนามิก
เมื่อดูเวิร์กชีตขนาดใหญ่เป็นเวลานาน คุณจะ ในที่สุดอาจหลงทางว่าเคอร์เซอร์ของคุณอยู่ที่ใดและข้อมูลใดที่คุณกำลังดูอยู่ หากต้องการทราบตำแหน่งที่คุณอยู่อย่างแน่ชัด ให้ Excel ไฮไลต์แถวและคอลัมน์ที่ใช้งานอยู่โดยอัตโนมัติ! โดยปกติแล้ว การไฮไลต์ควรเป็นแบบไดนามิกและเปลี่ยนทุกครั้งที่คุณเลือกเซลล์อื่น โดยพื้นฐานแล้ว นี่คือเป้าหมายของเราที่จะบรรลุ:
เน้นแถวและคอลัมน์ของเซลล์ที่เลือกโดยอัตโนมัติด้วย VBA
สิ่งนี้ ตัวอย่างแสดงวิธีเน้นคอลัมน์และแถวที่ใช้งานอยู่โดยทางโปรแกรมด้วย VBA สำหรับสิ่งนี้ เราจะใช้เหตุการณ์ SelectionChange ของวัตถุ แผ่นงาน
ก่อนอื่น ให้คุณล้างสีพื้นหลังของเซลล์ทั้งหมดบนแผ่นงานโดยการตั้งค่า ColorIndex คุณสมบัติเป็น 0 จากนั้น คุณเน้นทั้งแถวและคอลัมน์ของเซลล์ที่ใช้งานอยู่โดยตั้งค่าคุณสมบัติ ColorIndex เป็นหมายเลขดัชนีสำหรับสีที่ต้องการ
Private Sub Worksheet_SelectionChange ( ByVal Target As Range) ถ้า Target.Cells.Count > 1 จากนั้นออกจาก Sub Application.ScreenUpdating = False ' ล้างสีของเซลล์ทั้งหมด Cells.Interior.ColorIndex = 0 ด้วย Target ' เน้นแถวและคอลัมน์ของเซลล์ที่เลือก .EntireRow.Interior.ColorIndex = 38.EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End Subการปรับแต่งโค้ด
หากคุณต้องการปรับแต่งโค้ดตามความต้องการ เคล็ดลับเล็กๆ น้อยๆ เหล่านี้อาจมีประโยชน์:
- โค้ดตัวอย่างของเราใช้สองสีที่แตกต่างกันซึ่งแสดงใน gif ด้านบน - ดัชนีสี 38 สำหรับแถวและ 24 สำหรับคอลัมน์ หากต้องการ เปลี่ยนสีไฮไลท์ ให้แทนที่ด้วยโค้ด ColorIndex ที่คุณเลือก
- หากต้องการให้แถวและคอลัมน์มีสี แบบเดียวกัน ให้ใช้แบบเดียวกัน หมายเลขดัชนีสีสำหรับทั้งคู่
- หากต้องการเน้นเฉพาะ แถวที่ใช้งานอยู่ ให้ลบหรือแสดงความคิดเห็นในบรรทัดนี้: .EntireColumn.Interior.ColorIndex = 24
- หากต้องการเน้นเฉพาะ คอลัมน์ที่ใช้งานอยู่ ให้ลบหรือแสดงความคิดเห็นในบรรทัดนี้: .EntireRow.Interior.ColorIndex = 38
วิธีเพิ่มโค้ด ในเวิร์กชีตของคุณ
หากต้องการให้โค้ดดำเนินการโดยไม่โต้ตอบในพื้นหลังของเวิร์กชีตเฉพาะ คุณจะต้องแทรกโค้ดนั้นในหน้าต่างโค้ดที่เป็นของเวิร์กชีตนั้น ไม่ใช่ในโมดูลปกติ หากต้องการดำเนินการ ให้ทำตามขั้นตอนเหล่านี้:
- ในสมุดงานของคุณ ให้กด Alt + F11 เพื่อไปที่ตัวแก้ไข VBA
- ใน Project Explorer ทางด้านซ้าย คุณจะ จะเห็นรายการสมุดงานและแผ่นงานที่เปิดอยู่ทั้งหมด หากคุณไม่เห็น ให้ใช้ทางลัด Ctrl + R เพื่อนำหน้าต่าง Project Explorer มาดู
- ค้นหาสมุดงานเป้าหมาย ใน Microsoft Excelโฟลเดอร์ Objects ดับเบิลคลิกที่แผ่นงานที่คุณต้องการใช้การเน้น ในตัวอย่างนี้ ชีต 1 .
- ในหน้าต่างโค้ดทางด้านขวา ให้วางโค้ดด้านบน
- บันทึกไฟล์ของคุณเป็น สมุดงานที่เปิดใช้งานมาโคร (.xlsm).
ข้อดี : ทุกอย่างเสร็จสิ้นในแบ็กเอนด์; ไม่จำเป็นต้องมีการปรับเปลี่ยน/ปรับแต่งในด้านของผู้ใช้ ใช้ได้กับ Excel ทุกรุ่น
ข้อเสีย : มีข้อเสียสำคัญสองประการที่ทำให้เทคนิคนี้ใช้ไม่ได้ในบางสถานการณ์:
- โค้ด ล้างพื้นหลัง สี ของเซลล์ทั้งหมดในแผ่นงาน หากคุณมีเซลล์ที่มีสี อย่าใช้วิธีนี้เนื่องจากการจัดรูปแบบที่กำหนดเองของคุณจะสูญหาย
- การดำเนินการโค้ดนี้ บล็อก ฟังก์ชันการเลิกทำ บนแผ่นงาน และ คุณจะไม่สามารถเลิกทำการกระทำที่ผิดพลาดโดยการกด Ctrl + Z ได้
เน้นแถวและคอลัมน์ที่ใช้งานอยู่โดยไม่มี VBA
วิธีที่ดีที่สุดคือการเน้นแถวที่เลือกและ /หรือคอลัมน์ที่ไม่มี VBA คือการจัดรูปแบบตามเงื่อนไขของ Excel ในการตั้งค่า ให้ดำเนินการตามขั้นตอนเหล่านี้:
- เลือกชุดข้อมูลของคุณที่ควรทำการไฮไลท์
- ในแท็บ หน้าแรก ในแท็บ สไตล์ กลุ่ม คลิก กฎใหม่ .
- ในกล่องโต้ตอบ กฎการจัดรูปแบบใหม่ เลือก ใช้สูตรเพื่อกำหนดเซลล์ที่จะ รูปแบบ .
- ใน จัดรูปแบบค่าโดยที่สูตรนี้เป็นจริง ป้อนหนึ่งในสูตรเหล่านี้:
เพื่อเน้น แถวที่ใช้งานอยู่ :
=CELL("row")=ROW()
เพื่อเน้น คอลัมน์ที่ใช้งานอยู่ :
=CELL("col")=COLUMN()
เพื่อเน้น แถวและคอลัมน์ที่ใช้งานอยู่ :
=OR(CELL("row")=ROW(), CELL("col")= COLUMN())
สูตรทั้งหมดใช้ประโยชน์จากฟังก์ชัน CELL เพื่อ ส่งกลับหมายเลขแถว/คอลัมน์ของเซลล์ที่เลือก
- คลิกปุ่ม รูปแบบ สลับไปที่แท็บ เติม และเลือกสีที่คุณต้องการ
- คลิก ตกลง สองครั้งเพื่อปิด ทั้งสองหน้าต่างโต้ตอบ
หากคุณต้องการคำแนะนำโดยละเอียดเพิ่มเติม โปรดดูวิธีสร้างกฎการจัดรูปแบบตามเงื่อนไขตามสูตร
สำหรับตัวอย่างนี้ เราเลือกใช้คำสั่ง OR สูตรการแรเงาทั้งคอลัมน์และแถวด้วยสีเดียวกัน ซึ่งใช้เวลาทำงานน้อยกว่าและเหมาะสำหรับกรณีส่วนใหญ่
น่าเสียดายที่โซลูชันนี้ไม่ดีเท่า VBA เนื่องจากต้อง คำนวณชีตใหม่ด้วยตนเอง (โดยกดปุ่ม F9) ตามค่าเริ่มต้น Excel จะคำนวณเวิร์กชีตใหม่หลังจากป้อนข้อมูลใหม่หรือแก้ไขเวิร์กชีตที่มีอยู่แล้วเท่านั้น แต่จะไม่ทำเมื่อการเลือกเปลี่ยนแปลง ดังนั้น คุณเลือกเซลล์อื่น - ไม่มีอะไรเกิดขึ้น กด F9 - แผ่นงานจะถูกรีเฟรช สูตรจะถูกคำนวณใหม่ และการเน้นสีจะได้รับการอัปเดต
หากต้องการให้แผ่นงานคำนวณใหม่โดยอัตโนมัติเมื่อใดก็ตามที่เหตุการณ์ SelectionChange เกิดขึ้น คุณสามารถวางโค้ด VBA อย่างง่ายนี้ในโมดูลโค้ดของชีตเป้าหมายของคุณตามที่อธิบายไว้ตัวอย่างก่อนหน้านี้:
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End Subรหัสบังคับให้ช่วง/เซลล์ที่เลือกคำนวณใหม่ ซึ่งจะบังคับให้ฟังก์ชัน CELL อัปเดตและการจัดรูปแบบตามเงื่อนไขเพื่อให้สะท้อน การเปลี่ยนแปลงนี้
ข้อดี : ไม่เหมือนกับวิธีการก่อนหน้านี้ วิธีการนี้ไม่ส่งผลกระทบต่อการจัดรูปแบบที่มีอยู่ที่คุณนำไปใช้ด้วยตนเอง
ข้อเสีย : อาจ ทำให้ประสิทธิภาพของ Excel แย่ลง
- เพื่อให้การจัดรูปแบบตามเงื่อนไขทำงานได้ คุณต้องบังคับให้ Excel คำนวณสูตรใหม่ในทุกๆ การเปลี่ยนแปลงการเลือก (ด้วยตนเองโดยใช้ปุ่ม F9 หรือโดยอัตโนมัติด้วย VBA) การบังคับคำนวณใหม่อาจทำให้ Excel ของคุณช้าลง เนื่องจากรหัสของเราจะคำนวณการเลือกใหม่แทนที่จะเป็นทั้งแผ่นงาน ผลกระทบด้านลบมักจะสังเกตได้เฉพาะในสมุดงานที่มีขนาดใหญ่และซับซ้อนมากเท่านั้น
- เนื่องจากฟังก์ชัน CELL มีให้ใช้งานใน Excel 2007 และสูงกว่า วิธีการนี้จะไม่ ไม่สามารถทำงานในเวอร์ชันก่อนหน้าได้
เน้นแถวและคอลัมน์ที่เลือกโดยใช้การจัดรูปแบบตามเงื่อนไขและ VBA
ในกรณีที่วิธีการก่อนหน้านี้ทำให้สมุดงานของคุณทำงานช้าลงอย่างมาก คุณสามารถเข้าใกล้งานด้วยวิธีอื่น - แทน ในการคำนวณเวิร์กชีตใหม่ในทุกๆ การย้ายของผู้ใช้ รับหมายเลขแถว/คอลัมน์ที่ใช้งานอยู่โดยใช้ VBA จากนั้นจึงให้บริการตัวเลขนั้นกับฟังก์ชัน ROW() หรือ COLUMN() โดยใช้สูตรการจัดรูปแบบตามเงื่อนไข
ถึง ทำสิ่งนี้ให้สำเร็จนี่คือขั้นตอนที่คุณต้องปฏิบัติตาม:
- เพิ่มแผ่นงานเปล่าใหม่ในสมุดงานของคุณและตั้งชื่อว่า แผ่นงานตัวช่วย จุดประสงค์เดียวของแผ่นงานนี้คือเพื่อจัดเก็บตัวเลขสองตัวที่แสดงถึงแถวและคอลัมน์ที่มีเซลล์ที่เลือก ดังนั้นคุณจึงสามารถซ่อนแผ่นงานได้อย่างปลอดภัยในภายหลัง
- แทรก VBA ด้านล่างในหน้าต่างรหัสของแผ่นงาน ที่คุณต้องการใช้การเน้น สำหรับคำแนะนำโดยละเอียด โปรดดูตัวอย่างแรกของเรา Worksheet_SelectionChange ย่อยส่วนตัว ( ByVal Target As Range) Application.ScreenUpdating = False Worksheets ( "Helper Sheet" ) Cells (2, 1) = Target.Row Worksheets ( "Helper Sheet" ) Cells (2, 2) = Target.Column Application.ScreenUpdating = True End Sub
โค้ดด้านบนวางพิกัดของแถวและคอลัมน์ที่ใช้งานไปยังชีตชื่อ "Helper Sheet" หากคุณตั้งชื่อแผ่นงานของคุณแตกต่างออกไปในขั้นตอนที่ 1 ให้เปลี่ยนชื่อแผ่นงานในโค้ดตามนั้น หมายเลขแถวเขียนถึง A2 และหมายเลขคอลัมน์เขียนถึง B2
- ในเวิร์กชีตเป้าหมายของคุณ เลือกชุดข้อมูลทั้งหมด และสร้างกฎการจัดรูปแบบตามเงื่อนไขด้วยสูตรด้านล่าง ตัวอย่างข้างต้นมีคำแนะนำทีละขั้นตอน
และตอนนี้ เราจะกล่าวถึงกรณีการใช้งานหลักสามกรณีโดยละเอียด
วิธีเน้นแถวที่ใช้งานอยู่
หากต้องการเน้นแถวที่คุณวางเคอร์เซอร์อยู่ ให้ตั้งค่ากฎการจัดรูปแบบตามเงื่อนไขด้วยสูตร:
=ROW()='Helper Sheet'!$A$2
ด้วยเหตุนี้ ผู้ใช้สามารถเห็นได้อย่างชัดเจนว่าแถวใดที่เลือกอยู่ในปัจจุบัน:
วิธีเน้นคอลัมน์ที่ใช้งานอยู่
หากต้องการเน้นคอลัมน์ที่เลือก ให้ป้อนหมายเลขคอลัมน์ไปยังฟังก์ชัน COLUMN โดยใช้สูตรนี้:
=COLUMN()='Helper Sheet'!$B$2
ตอนนี้ คอลัมน์ที่ไฮไลต์ช่วยให้คุณอ่านข้อมูลแนวตั้งโดยเน้นที่คอลัมน์ทั้งหมดได้อย่างสะดวกสบายและง่ายดาย
วิธีเน้นแถวและคอลัมน์ที่ใช้งานอยู่
หากต้องการให้ทั้งแถวและคอลัมน์ที่เลือกแรเงาเป็นสีเดียวกันโดยอัตโนมัติ ให้รวมฟังก์ชัน ROW() และ COLUMN() เป็นสูตรเดียว:
=OR(ROW()='Helper Sheet'!$A$2, COLUMN()='Helper Sheet'!$B$2)
ข้อมูลที่เกี่ยวข้องจะถูกนำมาพิจารณาทันที คุณจึงหลีกเลี่ยงการอ่านข้อมูลผิด
ข้อดี : เพิ่มประสิทธิภาพ; ใช้งานได้กับ Excel ทุกรุ่น
ข้อเสีย : การตั้งค่าที่ยาวที่สุด
นั่นคือวิธีเน้นคอลัมน์และแถวของเซลล์ที่เลือกใน Excel ฉันขอขอบคุณสำหรับการอ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
สมุดงานแบบฝึกหัดสำหรับการดาวน์โหลด
การเน้นแถวและคอลัมน์ที่ใช้งานอยู่ (ไฟล์ .xlsm)