Екцел - Макро за брисање редова са одређеним вредностима

Мицрософт Екцел је један од најбољих алата за играње бројева. У случајевима када се ради о великом броју редова или колона, Екцел такође има визуелни основни оквир који се може користити за снимање или писање прилагођених макронаредби . ВБА макрои омогућавају корисницима да аутоматизују процес тако да имају минимални кориснички унос. Ови макрои могу бити прилагођени за рад на одређеним вредностима или редовима. Корисник такође може да прилагоди почетни и крајњи распон за одређене вредности или редове. Све ове опције повећавају Екцел-ову употребу као апликацију за обраду података .

  • Питање
  • Решење
  • Напоменути да

Питање

Углавном оно што имам је лист пун информација о различитим одељењима и оно што желим да урадим је да избришем сваки ред ЕКСЦЕПТ редова који садрже неке специфициране вредности (које бих желео да унесем у покретање скрипте).

Рецимо у колони која именује одељење (у мом листу под именом "Авд"), желим да скрипта тражи било коју ћелију која не садржи, на пример, бројеве 1, 3, 5, 6 или 21 .. и тако даље (имам око 36 различитих бројева).

Решење

Све што треба да урадите је да истакнете информације у колони и покренете следећи Макро. Биће оквир који ће од вас тражити да изаберете коју вредност желите да задржите. Ово је доступно за до 30.000 редова.

 Суб ДелетеРовс () Дим стрТоДелете Ас Стринг Дим рнгСрц Ас Ранге Дим НумРовс Ас Интегер Дим ТхисРов Ас Интегер Дим ТхатРов Ас Интегер Дим ТхисЦол Ас Интегер Дим Ј Ас Интегер Дим ДелетедРовс Ас Интегер стрТоДелете = ИнпутБок ("Валуе то Триггер Кееп, Јасон ??? ? ", " Делете Ровс ") Сет рнгСрц = АцтивеСхеет.Ранге (АцтивеВиндов.Селецтион.Аддресс) НумРовс = рнгСрц.Ровс.Цоунт ТхисРов = рнгСрц.Ров ТхатРов = ТхисРов + НумРовс - 1 ТхисЦол = рнгСрц.Цолумн Дим топРовс Ас Интегер Дим боттомРовс Ас Интегер боттомРовс = 30000 За Ј = ТхисРов За НумРовс Корак 1 Ако су ћелије (Ј, ТхисЦол) = стрТоДелете Затим 'Ровс (Ј) .Селецт топРовс = Ј Излаз за ДелетедРовс = Избрисани редови + 1 Крај Ако је следећи Ј За Ј = (топРовс) + 1) То НумРовс Корак 1 Ако Целлс (Ј, ТхисЦол) стрТоДелете Затим 'Ровс (Ј) .Селецт боттомРовс = Ј Екит Фор' ДелетедРовс = ДелетедРовс + 1 Енд Иф Нект Ј Ако топРовс 4 Затим АцтивеСхеет.Ранге (Целлс (4, 1), Ћелије (топРовс - 1, 52)). Изаберите Селецтион.делете Схифт: = клУп Енд Ако је АцтивеСхеет.Ранге (Ћелије (боттомРовс - топРовс + 4, 1), Целлс (30000, 52)). Изаберите Селецтион.делете Схифт: = клУп 'МсгБок "Број избрисаних редова:" & ДелетедРовс Крај Суб 

Напоменути да

Хвала Јасону на овом савету на форуму.

Претходни Чланак Sledeći Чланак

Топ Савети