Рӯйхати афтанда бо интихоби бисёр

Рӯйхати классикии афтанда дар варақи Excel бузург аст, аммо он ба шумо имкон медиҳад, ки танҳо як вариантро аз маҷмӯи пешниҳодшуда интихоб кунед. Баъзан ин маҳз ҳамон чизест, ки шумо мехоҳед, аммо ҳолатҳое ҳастанд, ки корбар бояд интихоб кунад баъзе элементҳо аз рӯйхат.

Биёед якчанд амалисозии маъмулии чунин рӯйхати бисёр интихобро дида бароем.

Варианти 1. Уфуқӣ

Истифодабаранда ҷузъҳоро аз рӯйхати афтанда як ба як интихоб мекунад ва онҳо дар тарафи рости чашмаки тағирёбанда пайдо мешаванд ва ба таври худкор ба таври уфуқӣ рӯйхат мешаванд:

Рӯйхати афтанда дар чашмакҳои C2:C5 дар ин мисол ба таври стандартӣ сохта шудаанд, яъне

  1. ҳуҷайраҳои C2:C5-ро интихоб кунед
  2. ҷадвал ё меню Маълумот даста интихоб кунед Тасдиқи маълумот
  3. дар равзанаи кушодашуда, интихоберо интихоб кунед рӯйхат ва ҳамчун диапазон муайян кунед сарчашма ҳуҷайраҳои дорои маълумоти сарчашма барои рӯйхати A1:A8

Пас шумо бояд ба модули варақ макрос илова кунед, ки он тамоми кори асосиро иҷро мекунад, яъне арзишҳои интихобшударо ба рости ячейкаҳои сабз илова мекунад. Барои ин, дар ҷадвали варақ бо рӯйхатҳои афтанда тугмаи ростро клик кунед ва фармонро интихоб кунед Рамзи манбаъ. Рамзи зеринро ба равзанаи муҳаррири Visual Basic, ки кушода мешавад, гузоред:

Варақаи кории хусусӣ_Тағйир (Ҳадаф аз ByVal ҳамчун диапазон) Дар хатогӣ идомаи навбатӣ Агар бурида нашавад(Ҳадаф, диапазон("C2:C5")) Ҳеҷ чиз нест ва Target.Cells.Count = 1 Пас Application.EnableEvents = False Агар Len(Target.Offset) (0, 1)) = 0 Сипас Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Анҷоми ҳадаф агар Target.ClearContents Application.EnableEvents = Охири ҳақиқӣ Агар End Зер бошад  

Агар лозим бошад, диапазони ҳассоси рӯйхатҳои афтанда C2:C5-ро дар сатри дуюми ин код бо худ иваз кунед.

Варианти 2. Вертикалӣ

Ҳамон тавре ки дар версияи қаблӣ, аммо арзишҳои нави интихобшуда на ба тарафи рост, балки ба поён илова карда мешаванд:

Он маҳз ҳамин тавр анҷом дода мешавад, аммо коди макростикӣ каме тағйир меёбад:

Варақаи хусусии кории_Тағйирот(ByVal Ҳадаф ҳамчун Диапазон) Дар Хато Идомаи Оянда Агар бурида нашаванд(Ҳадаф, Диапазон("C2:F2")) Ҳеҷ чиз нест ва Target.Cells.Count = 1 Пас Application.EnableEvents = False Агар Len(Target.Offset) (1, 0)) = 0 Сипас Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Анҷоми ҳадаф агар Target.ClearContents Application.EnableEvents = Охири ҳақиқӣ Агар End Зер бошад  

Боз, агар лозим бошад, диапазони ҳассоси рӯйхатҳои афтанда C2:F2-ро дар сатри дуюми ин код бо худ иваз кунед.

Варианти 3. Бо ҷамъшавӣ дар як ҳуҷайра

Дар ин хосият, ҷамъкунӣ дар ҳамон чашмаке, ки рӯйхати афтанда ҷойгир аст, сурат мегирад. Унсурҳои интихобшуда бо ҳар гуна аломати додашуда ҷудо карда мешаванд (масалан, вергул):

Рӯйхати афтанда дар ҳуҷайраҳои сабз ба таври комилан стандартӣ, мисли усулҳои қаблӣ сохта мешаванд. Ҳама корҳо боз бо макрос дар модули варақ анҷом дода мешаванд:

Варақаи хусусии_Тағйирот(Ҳадаф аз рӯи диапазон) Дар хатогӣ идома диҳед Баъдӣ Агар бурида нашавад(Ҳадаф, Диапазон("C2:C5")) Ҳеҷ чиз ва Target нест.Cells.Count = 1 Пас Application.EnableEvents = False newVal = Application Target.Undo oldval = Ҳадаф Агар Len(oldval) <> 0 Ва oldval <> newVal Сипас Ҳадаф = Ҳадаф & "," & newVal Else Ҳадаф = newVal End Агар Len(newVal) = 0 Пас Target.ClearContents Application.EnableEvents = Охири ҳақиқӣ Агар Охирин зер  

Агар хоҳед, шумо метавонед аломати ҷудокунандаро (вергул) дар сатри 9-уми код бо худ иваз кунед (масалан, фосила ё нуқта-вергул).

  • Чӣ тавр сохтани рӯйхати оддии афтанда дар ҳуҷайраи варақи Excel
  • Рӯйхати афтанда бо мундариҷа
  • Рӯйхати афтанда бо имконоти гумшуда илова карда шудааст
  • Макросҳо чист, чӣ тавр истифода бурдани онҳо, ба куҷо ворид кардани коди макро дар Visual Basic

Дин ва мазҳаб