ჩამოსაშლელი სია მრავალჯერადი არჩევით

Excel-ის ფურცლის კლასიკური ჩამოსაშლელი სია შესანიშნავია, მაგრამ ის საშუალებას გაძლევთ აირჩიოთ მხოლოდ ერთი ვარიანტი წარმოდგენილი ნაკრებიდან. ზოგჯერ ეს არის ზუსტად ის, რაც გსურთ, მაგრამ არის სიტუაციები, როდესაც მომხმარებელს უნდა შეეძლოს არჩევანის გაკეთება ზოგიერთი ელემენტები სიიდან.

მოდით შევხედოთ ასეთი მრავალჯერადი სიის რამდენიმე ტიპურ განხორციელებას.

ვარიანტი 1. ჰორიზონტალური

მომხმარებელი ირჩევს ელემენტებს ჩამოსაშლელი სიიდან სათითაოდ და ისინი გამოჩნდებიან შეცვლილი უჯრედის მარჯვნივ, ავტომატურად ჩამოთვლილი ჰორიზონტალურად:

ჩამოსაშლელი სიები C2:C5 უჯრედებში ამ მაგალითში შექმნილია სტანდარტული გზით, ე.ი

  1. აირჩიეთ უჯრედები C2:C5
  2. ჩანართი ან მენიუ თარიღი აირჩიეთ გუნდი მონაცემთა გადამოწმება
  3. ფანჯარაში, რომელიც იხსნება, აირჩიეთ ვარიანტი სია და მიუთითეთ როგორც დიაპაზონი წყარო უჯრედები A1:A8 სიის წყაროს მონაცემებით

შემდეგ თქვენ უნდა დაამატოთ მაკრო ფურცლის მოდულში, რომელიც შეასრულებს ყველა ძირითად სამუშაოს, ანუ დაამატეთ შერჩეული მნიშვნელობები მწვანე უჯრედების მარჯვნივ. ამისათვის დააწკაპუნეთ მარჯვენა ღილაკით ფურცლის ჩანართზე ჩამოსაშლელი სიებით და აირჩიეთ ბრძანება კოდის. ჩასვით შემდეგი კოდი Visual Basic რედაქტორის ფანჯარაში, რომელიც იხსნება:

Private Sub Worksheet_Change(ByVal Target As Range) შეცდომის შესახებ Resume Next If Not Intersect(Target, Range("C2:C5")) არაფერია და Target.Cells.Count = 1 მაშინ Application.EnableEvents = False If Len(Target.Offset (0, 1)) = 0 შემდეგ Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

საჭიროების შემთხვევაში, შეცვალეთ ჩამოსაშლელი სიების მგრძნობიარე დიაპაზონი C2:C5 ამ კოდის მეორე სტრიქონში თქვენით.

ვარიანტი 2. ვერტიკალური

იგივეა, რაც წინა ვერსიაში, მაგრამ ახალი შერჩეული მნიშვნელობები არ ემატება მარჯვნივ, არამედ ბოლოში:

ეს კეთდება ზუსტად იგივე გზით, მაგრამ დამმუშავებლის მაკრო კოდი ოდნავ იცვლება:

Private Sub Worksheet_Change(ByVal Target As Range) შეცდომის შესახებ Resume Next If Not Intersect(Target, Range("C2:F2")) არაფერია და Target.Cells.Count = 1 შემდეგ Application.EnableEvents = False If Len(Target.Offset (1, 0)) = 0 შემდეგ Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

ისევ, საჭიროების შემთხვევაში, შეცვალეთ C2:F2 ჩამოსაშლელი სიების მგრძნობიარე დიაპაზონი თქვენით ამ კოდის მეორე სტრიქონში.

ვარიანტი 3. იმავე უჯრედში დაგროვებით

ამ პარამეტრში, დაგროვება ხდება იმავე უჯრედში, სადაც მდებარეობს ჩამოსაშლელი სია. შერჩეული ელემენტები გამოყოფილია ნებისმიერი მოცემული სიმბოლოთი (მაგალითად, მძიმით):

მწვანე უჯრედებში ჩამოსაშლელი სიები იქმნება სრულიად სტანდარტული გზით, როგორც წინა მეთოდებში. მთელი სამუშაო შესრულებულია, ისევ, მაკროთი ფურცლის მოდულში:

Private Sub Worksheet_Change(ByVal Target As Range) შეცდომის შესახებ Resume Next If Not Intersect(Target, Range("C2:C5")) არაფერია და Target.Cells.Count = 1 შემდეგ Application.EnableEvents = False newVal = Target Application.Undo oldval = Target თუ Len(oldval) <> 0 და oldval <> newVal შემდეგ Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 მაშინ Target.ClearContents Application.EnableEvents = True End თუ ბოლო ქვე  

თუ სასურველია, შეგიძლიათ შეცვალოთ გამყოფი სიმბოლო (მძიმით) კოდის მე-9 სტრიქონში თქვენით (მაგალითად, ინტერვალით ან მძიმით).

  • როგორ შევქმნათ მარტივი ჩამოსაშლელი სია Excel ფურცლის უჯრედში
  • ჩამოსაშლელი სია შინაარსით
  • ჩამოსაშლელი სია დამატებულია დაკარგული ვარიანტებით
  • რა არის მაკროები, როგორ გამოვიყენოთ ისინი, სად ჩავსვათ მაკრო კოდი Visual Basic-ში

დატოვე პასუხი