ขึ้นอยู่กับสถานการณ์ คุณอาจต้องเลือกหลายค่าในรายการหล่น ในบทช่วยสอนนี้ เราจะแสดงวิธีเลือกหลายรายการในรายการหล่น สำหรับเซสชันนี้ เราใช้ Excel 2019 โปรดใช้เวอร์ชันที่คุณชอบ
ก่อนเข้าสู่เนื้อหา มารู้จักชุดข้อมูลที่เป็นพื้นฐานของตัวอย่างของเรา

ที่นี่เรามีรายการเครื่องเขียนหลายอย่าง ใช้สร้างรายการหล่นและเลือกหลายรายการ
โปรดสังเกตว่านี่คือชุดข้อมูลง่ายๆ เพื่อให้เข้าใจง่าย ในสถานการณ์จริง อาจพบชุดข้อมูลใหญ่และซับซ้อนกว่านี้มาก
สมุดงานฝึกฝน
คุณสามารถดาวน์โหลดสมุดงานฝึกฝนจากลิงก์ด้านล่างได้
การเลือกหลายรายการใน Drop-Down List
ขั้นแรก เราต้องสร้างรายการหล่นจากเครื่องเขียนของเรา มาสร้างดูไว้ อย่าลังเลไปอ่านบทความเกี่ยวกับการสร้างรายการหล่น
ในกล่องโต้ตอบ Data Validation เลือกประเภทข้อมูล LIST และใส่ช่วงเซลล์ของรายการ

B4:B11 คือช่วงที่เก็บรายการเครื่องเขียน ตอนนี้คุณจะพบรายการหล่น

อ่านเพิ่มเติม: Excel Drop Down List Depending on Selection
1. เลือกหลายรายการ (อนุญาตให้เลือกซ้ำ)
รายการหล่นแบบดั้งเดิมเลือกได้แค่รายการเดียว ที่นี่คุณเห็น เราเลือก Pen จากรายการ (ภาพด้านล่าง)

ตอนนี้ หากเราเลือกรายการอื่น สมมติ Pencil

มันจะแทนที่ค่าก่อนหน้า เหลือแค่ Pencil ที่ถูกเลือก

เพื่อเลือกหลายรายการ เราต้องใช้โค้ด VBA เปิดหน้าต่าง Microsoft Visual Basic for Applications (กด ALT + F11 เพื่อเปิด)
ดับเบิลคลิกที่ชื่อหรือหมายเลขชีตงาน ที่คุณต้องการเลือกหลายรายการในรายการหล่น คุณจะพบหน้าต่างโค้ดสำหรับชีตนั้น

นี่คือหน้าต่างโค้ดสำหรับ Sheet2 ในสมุดงานของเรา (เรามีรายการหล่นในชีตนี้)
เมื่อเปิดหน้าต่างโค้ดแล้ว ใส่โค้ดต่อไปนี้
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

บันทึกโค้ด และลองเลือกรายการในรายการหล่น

หลังเลือก Pencil เราจะเลือกรายการอื่น Notebook และคุณเห็น เราพบทั้งสองรายการ (ภาพด้านล่าง)

โค้ดนี้อนุญาตให้เลือกซ้ำ สมมติถ้าเราเลือก Pencil อีกครั้ง

เราจะพบรายการนั้นอีกครั้งในกล่องเลือก

คำอธิบายโค้ด
เราประกาศสตริงสองตัว Oldvalue และ Newvalue
คุณเห็นเราสร้างรายการหล่นในเซลล์ D4 นั่นคือที่อยู่เป้าหมายคือ D4 และเพิ่มเติม เราตรวจสอบอีกครั้งว่าเซลล์ใช้ Data Validation หรือไม่ โดย Target.SpecialCells
เมื่อเลือกค่าแล้ว เราปิดอีเวนต์ (Application.EnableEvents = False) เพื่อไม่ให้การเปลี่ยนแปลงกระตุ้นอีเวนต์ซ้ำ จากนั้นเก็บรายการที่เลือกไว้ใน Newvalue
หลังจาก Undo การเปลี่ยนแปลง เราตั้งค่าเป็น Oldvalue ตรวจสอบว่า Oldvalue ว่างหรือไม่ หากว่าง (หมายถึงเลือกแค่ค่าเดียว) คืนค่า Newvalue มิฉะนั้น รวม Oldvalue และ Newvalue
ก่อนจบ รีเซ็ตอีเวนต์ เพื่อให้สามารถเปลี่ยนแปลงได้หากต้องการ
อ่านเพิ่มเติม: Multiple Dependent Drop-Down List Excel VBA
2. เลือกหลายรายการจาก Drop Down List (เลือกได้เฉพาะค่าที่ไม่ซ้ำ)
ในส่วนก่อน เราเห็นการเลือกหลายรายการที่อนุญาตให้ซ้ำ หากคุณไม่ต้องการ ให้ทำตามส่วนนี้
เพื่อความสะดวก เราใช้ชีตแยกสำหรับสาธิต คราวนี้เราอยู่ที่ Sheet3 เขียนโค้ดต่อไปนี้ในหน้าต่างโค้ดสำหรับชีตนี้
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

มีความแตกต่างจากโค้ดก่อนหน้าหรือไม่! ดูใกล้ๆ คุณจะเห็นความแตกต่างเล็กน้อย
ที่นี่เราใช้ฟังก์ชัน VBA ชื่อ INSTR ฟังก์ชัน INSTR คืนตำแหน่งของการเกิดขึ้นครั้งแรกของสตริงย่อยในสตริง อ่านบทความ INSTR เพื่อข้อมูลเพิ่มเติม
ใช้การดำเนินการตรรกะกับ InStr(1, Oldvalue, Newvalue) = 0 เราตรวจสอบว่าพบค่าเหล่านั้นหรือไม่ หากการดำเนินการตรรกะคืนค่า TRUE (ไม่พบก่อนหน้า) จะอนุญาตให้เลือกรายการและรวมกับค่าก่อนหน้า
บันทึกโค้ด และลองเลือกรายการที่เคยเลือกแล้ว

ที่นี่เราเลือก Pencil ไปแล้ว หากต้องการเลือกอีกครั้ง ไม่ได้ มันไม่อนุญาตให้ค่าซ้ำ
อ่านเพิ่มเติม: วิธีสร้าง Drop Down List จากชีตอื่นใน Excel
3. เลือกรายการในบรรทัดใหม่
จนตอนนี้ เราพบรายการคั่นด้วยจุลภาค ในส่วนนี้ เราจะจัดรายการที่เลือกในบรรทัดใหม่
เพื่อความง่าย เรารวมเซลล์บางส่วนกับเซลล์ D4 เลือกเซลล์ที่ต้องการรวม และคลิก Merge & Center จากส่วน Alignment ของแท็บ Home

เซลล์จะได้ความสูงมากขึ้น

มาดูโค้ดสำหรับแยกรายการด้วยบรรทัดใหม่ ใช้โค้ดต่อไปนี้
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

ความแตกต่างจากโค้ดก่อนหน้าคือ คราวนี้เราใช้ vbNewLine ระหว่าง OldValue และ NewValue
vbNewLine ให้บรรทัดใหม่ระหว่างรายการ
ตอนนี้ เลือกรายการ

เราเลือกรายการ Pen ที่แสดงในภาพด้านบน ตอนนี้เลือกอีกองค์ประกอบ

คุณจะพบสองรายการอยู่ในบรรทัดต่างกัน

ที่นี่เรามีสองค่า อยู่ในสองบรรทัดต่างกัน การเลือกรายการอื่นจะเพิ่มเข้าไปในบรรทัดใหม่ ทุกค่าจะอยู่ในบรรทัดใหม่

โปรดสังเกต หากคุณต้องการตัวคั่นอื่น ให้ใช้ตัวคั่นนั้นในเครื่องหมายคำพูดคู่ แทน vbNewline
สรุป
จบบทความวันนี้ เราแสดงหลายวิธีการเลือกหลายรายการในรายการหล่น หวังว่าจะเป็นประโยชน์ โปรดคอมเมนต์หากมีอะไรยากที่จะเข้าใจ แจ้งให้เรารู้วิธีอื่นที่เราพลาดไป
การอ่านเพิ่มเติม
- วิธีสร้าง Drop Down List ในหลายคอลัมน์ใน Excel (3 วิธี)
- Link a Cell Value with a Drop Down List in Excel (5 Ways)
- Conditional Drop Down List in Excel (Create, Sort and Use)
- Create Dynamic Dependent Drop Down List in Excel
- วิธีใช้ IF Statement สร้าง Drop-Down List ใน Excel
- VLOOKUP with Drop Down List in Excel