Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

การสร้างรายการดรอปดาวน์แบบขึ้นต่อกันหลายรายการเป็นสิ่งที่ท้าทายใน MS Excel มาโดยตลอด เราต้องการรายการดรอปดาวน์ประเภทนี้เมื่อมีการขึ้นต่อกันหรือความสัมพันธ์ระหว่างสองรายการดรอปดาวน์ โดยทั่วไปเราจะสร้างสิ่งนี้โดยใช้สูตรต่างๆ หรือเปลี่ยนตัวเลือกที่เหมาะสมใน Excel อย่างไรก็ตาม มีบางวิธีง่ายๆ ในการสร้างรายการดรอปดาวน์หลายรายการโดยใช้โค้ด Excel VBA ในบทความนี้ ผมจะแสดงวิธีต่างๆ ในการสร้างรายการดรอปดาวน์หลายรายการโดยใช้โค้ด VBA ใน Excel

อ่านเพิ่มเติม: วิธีการสร้างรายการแบบหล่นลงใน Excel (อิสระและขึ้นอยู่กับ)

รายการดรอปดาวน์ที่ขึ้นต่อกันใน Excel คืออะไร

ก่อนไปที่กระบวนการหลัก เรามาดูว่ารายการดรอปดาวน์ที่ขึ้นต่อกันคืออะไรใน Excel เมื่อมีการขึ้นต่อกันระหว่างรายการดรอปดาวน์ตั้งแต่สองรายการขึ้นไป เราจะเรียกรายการเหล่านั้นว่ารายการดรอปดาวน์ที่ขึ้นต่อกันใน Excel รูปภาพด้านล่างแสดงถึงแนวคิดที่ชัดเจนเกี่ยวกับรายการแบบเลื่อนลงที่ขึ้นต่อกัน

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี) รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ดังที่เราเห็นได้ที่นี่สองรายการแบบหล่นลง หมวดหมู่ และอาหาร เป็นรายการแบบหล่นลงที่ขึ้นต่อกันทั้งหมดสองรายการ ขึ้นอยู่กับการเลือกหมวดหมู่ เรากำหนดรายการอาหารที่นี่ ดังนั้น วิธีการทำงานของรายการดรอปดาวน์แบบเรียงซ้อนหลายรายการ

อ่านเพิ่มเติม: วิธีสร้างรายการดรอปดาวน์ขึ้นอยู่กับไดนามิกใน Excel

3 วิธีในการสร้างรายการแบบหล่นลงหลายรายการขึ้นอยู่กับ Excel VBA

1. วิธีการเลือกหลายรายการในรายการแบบเลื่อนลงใน Excel VBA

สมมติว่าเรามีสองรายชื่อชื่อโครงการและสมาชิกโครงการ สำหรับแต่ละโครงการ เราจะกำหนดสมาชิกหนึ่งหรือหลายคนโดยใช้รายการแบบเลื่อนลง

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 1: ไปที่ นักพัฒนา แท็บแล้วเปิด Visual Basic (ทางลัด Alt + F11 )

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 2: ไปที่แผ่นงานที่เกี่ยวข้องจากเมนู VBAProject ที่เกี่ยวข้อง

ขั้นตอนที่ 3: ตอนนี้เขียนโค้ดต่อไปนี้ในคอนโซล VBA

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

รหัส:

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Old_value As String
 Dim New_value As String
 Application.EnableEvents = True
 On Error GoTo Exitsub
 If Not Intersect(Target, Range("C4:C11")) Is Nothing Then
 If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
 GoTo Exitsub
 Else: If Target.Value = "" Then GoTo Exitsub Else
 Application.EnableEvents = False
 New_value = Target.Value
 Application.Undo
 Old_value = Target.Value
 If Old_value = "" Then
 Target.Value = New_value
 Else
 If InStr(1, Old_value, New_value) = 0 Then
 Target.Value = Old_value & ", " & New_value
 Else:
 Target.Value = Old_value
 End If
 End If
 End If
 End If
 Application.EnableEvents = True
Exitsub:
 Application.EnableEvents = True
End Sub

ขั้นตอนที่ 4: ตอนนี้เลือกหลายชื่อในคอลัมน์สมาชิกโครงการ

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 5: ทุกเซลล์สามารถเลือกได้หลายรายการจากรายการแบบเลื่อนลง

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

อ่านเพิ่มเติม: วิธีการสร้างการเลือกหลายรายการจากรายการดรอปดาวน์ใน Excel

2. สร้างรายการดรอปดาวน์ขึ้นอยู่กับหลายรายการใน Excel VBA

มาดูชุดข้อมูลของอาหารประเภทต่างๆ เช่น ผัก ผลไม้ และผลิตภัณฑ์จากนมกัน ตอนนี้เราต้องการค้นหารายการอาหารตามหมวดหมู่ เช่นเดียวกับถ้าเราเลือกหมวดหมู่เป็น ผลไม้ จากนั้นในคอลัมน์อาหาร รายการที่มีควรเป็น ราสเบอร์รี่ แอปริคอต พีช มะม่วง ดังนั้นรายการอาหารควรมีให้ตามหมวดหมู่ มีการพึ่งพากันระหว่างหมวดหมู่และอาหาร

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 1: เปิดคอนโซล VBA โดยทำตามขั้นตอนเดียวกันจากวิธีที่ 1 (ขั้นตอนที่ 1 และ ขั้นตอนที่ 2 ) จากนั้นเขียนโค้ดต่อไปนี้

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

รหัส:

สำหรับการสร้างรายการแบบเลื่อนลงผัก:

Sub Vegetable_List()
 
 Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
 Formula1:="=Vegetable_List"
 
End Sub

สำหรับการสร้างรายการดรอปดาวน์ผลไม้:

Sub Fruit_List()
 
 Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
 Formula1:="=Fruits_list"
 
End Sub

สำหรับการสร้างรายการดรอปดาวน์ผลิตภัณฑ์นม:

Sub Dairy_List()
 
 Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
 Formula1:="=Dairy_Product_List"
 
End Sub

ในส่วนนี้ เรากำลังสร้างรายการอาหารแต่ละรายการและบันทึกไว้ในรายการแบบเลื่อนลง รายการนี้จะมีอยู่ใน C4:C6 ช่วง.

ขั้นตอนที่ 2: ตอนนี้เราต้องเขียนฟังก์ชันหลักสำหรับช่วง B4:B6

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

รหัส:

Private Sub Worksheet_Change(ByVal Target As Range)
 Range("B4:B6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
 Formula1:="Vegetable_List,Fruits_list,Dairy_Product_List"
 If Range("B4:B6").Value = "Vegetable_List" Then
 Call Vegetable_List
 ElseIf Range("B4:B6").Value = "Fruits_list" Then
 Call Fruit_List
 ElseIf Range("B4:B6").Value = "Dairy_Product_List" Then
 Call Dairy_List
 Else
 End If

คำอธิบายโค้ด

  • ที่นี่ เรากำลังสร้างรายการอื่นที่มีชื่อสำหรับหมวดหมู่ใน B4:B6 ซึ่งจะมีชื่อหมวดอาหาร
  • จากนั้นกำลังตรวจสอบค่าของรายการและจัดหมวดหมู่ตามรายการ สำหรับสิ่งนี้ ถ้าเป็นอย่างอื่น ใช้คำสั่ง
  • หากเราพบชื่อที่ตรงกัน เราก็เรียกฟังก์ชันการสร้างรายการโดยใช้เมธอด CallBack ชอบ

 หากเป็น Range(“B4:B6”).Value =“Vegetable_List” จากนั้น

                       เรียกรายการผัก

  • ที่นี่ถ้าค่าของเซลล์ตรงกับ Vegetable_List ข้อความ จากนั้นเราจะเรียก Vegetable_List ฟังก์ชันสร้างและแสดงรายการผัก

ดังนั้นโค้ดแบบเต็มของเราจะเป็นดังนี้:

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 3: ไปที่เวิร์กชีตแล้วเลือกหมวดหมู่ใดก็ได้จากรายการแบบเลื่อนลง

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 4: จากนั้นรายการที่เกี่ยวข้องจะอยู่ในคอลัมน์อาหาร

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 5: ผลลัพธ์สุดท้ายจะเป็นดังนี้:

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

3. การล้างรายการดรอปดาวน์ที่ขึ้นต่อกันหลายรายการใน Excel VBA

ในส่วนก่อนหน้านี้ เราได้เห็นแล้วว่าเราจะรับรายการที่ตรงกันที่เกี่ยวข้องใน Excel ได้อย่างไร แต่บางครั้งอาจมีการเลือกที่ไม่ตรงกันซึ่งจะไม่ถูกลบโดยอัตโนมัติ เราสามารถกำหนดสูตรป้องกันปัญหานี้ได้

อีกทางเลือกหนึ่งคือการใช้มาโคร เพื่อล้างเซลล์ที่ขึ้นต่อกัน หลังจากเลือกในเมนูดรอปดาวน์แรกแล้ว ที่จะป้องกันการเลือกที่ไม่ตรงกัน

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ขั้นตอนที่ 1: เปิดคอนโซล VBA โดยทำตามขั้นตอนเดียวกันจากวิธีที่ 1 (ขั้นตอนที่ 1 และ ขั้นตอนที่ 2 ) จากนั้นเขียนโค้ดต่อไปนี้

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

รหัส:

Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
If Target.Column = 2 Then
 If Target.Validation.Type = 3 Then
 Application.EnableEvents = False
 Target.Offset(0, 1).ClearContents
 End If
End If

exitHandler:
 Application.EnableEvents = True
 Exit Sub
End Sub

ขั้นตอนที่ 2: ตอนนี้เลือกรายการใดก็ได้จาก อาหาร และพยายามเลือกหมวดหมู่อื่นจาก หมวดหมู่ และดูว่าเกิดอะไรขึ้น

ก่อน

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

วินาที

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

ผลลัพธ์สุดท้าย

รายการแบบเลื่อนลงขึ้นอยู่กับหลายรายการ Excel VBA (3 วิธี)

อ่านเพิ่มเติม: วิธีลบรายการดรอปดาวน์ใน Excel

สิ่งที่ควรจำ

ข้อผิดพลาดทั่วไป เมื่อแสดง
ไม่สามารถลบรายการ ในการตรวจสอบข้อมูล ถ้า อนุญาต ไม่เท่ากับ List และ Source ไม่ได้ถูกเลือกอย่างถูกต้อง ดังนั้นรายการแบบหล่นลงจะไม่สามารถลบได้ หรือคุณใช้โค้ด VBA เพื่อลบรายการ
อัปเดตปัญหาค่า โดยทั่วไป ในรายการดรอปดาวน์ที่ขึ้นต่อกัน หากมีค่าที่ไม่ตรงกัน ค่านั้นจะไม่อัปเดตโดยอัตโนมัติ เราสามารถใช้สูตรหรือโค้ด VBA (วิธีที่ 3 ในบทความนี้) เพื่ออัปเดตค่าโดยอัตโนมัติ

บทสรุป

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

อ่านเพิ่มเติม

  • วิธีสร้างรายการแบบหล่นลงในหลายคอลัมน์ใน Excel (3 วิธี)
  • Excel Drop Down List ขึ้นอยู่กับการเลือก
  • วิธีใช้คำสั่ง IF เพื่อสร้างรายการดรอปดาวน์ใน Excel
  • สร้างรายการแบบหล่นลงจากชีตอื่นใน Excel (2 วิธี)
  • วิธีแก้ไขรายการดรอปดาวน์ใน Excel (แนวทางพื้นฐาน 4 วิธี)
  • VLOOKUP พร้อมรายการดรอปดาวน์ใน Excel