Excel - макрос за изтриване на редове със специфични стойности

Microsoft Excel е един от най-удобните инструменти за игра с номера. В случаите, когато са включени огромен брой редове или колони, Excel също има визуална основна рамка, която може да се използва за записване или записване на персонализирани макроси . VBA макросите позволяват на потребителите да автоматизират процеса чрез минимално въвеждане от потребителя. Тези макроси могат да бъдат персонализирани, за да работят върху конкретни стойности или редове. Потребителят може също да персонализира началния и крайния диапазон за конкретни стойности или редове. Всички тези опции увеличават използването на Excel като приложение за обработка на данни .

  • Проблем
  • Решение
  • Отбележи, че

Проблем

Основно това, което имам, е лист, пълен с информация за различни отдели и това, което искам да направя, е да изтрия всеки ред EXCEPT на редовете, които съдържат някои определени стойности (които бих искал да вляза при изпълнение на скрипта).

Да речем в колоната, която назовава отдела (в листа ми, наречен "Avd"), бих искал скриптът да потърси всяка клетка, която не съдържа, например, числата 1, 3, 5, 6 или 21 .. и така нататък (имам около 36 различни номера).

Решение

Всичко, което трябва да направите, е да маркирате информацията в колоната и след това да изпълните следния макрос. Ще има поле, което ще ви подкани да изберете каква стойност искате да запазите. Това е достъпно за до 30 000 реда.

 Sub DeleteRows () Dim strToDelete As String Dim rngSrc Като обхват Dim NumRows As Integer Dim ThisRow Като целочислено Dim ThatRow като целочислено Dim ThisCol As Integer Dim J Като целочислено Dim ИзтритиRows As Integer strToDelete = InputBox ("Value to Trigger Keep, Jason ??? ? ", " Изтриване на редове ") Задайте rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc. Стъпка 1 Ако клетки (J, ThisCol) = strToDelete Тогава 'Редове (J). Изберете topRows = J Изход за DeletedRows = Изтрити Редове + 1 Край Ако Следващ J За J = (topRows) + 1) Към NumRows Стъпка 1 Ако Cells (J, ThisCol) strToDelete Тогава 'Редове (J). Избери bottomRows = J Изход За' DeletedRows = Изтрити редове + 1 Край Ако Следващ J Ако topRows 4 Тогава ActiveSheet.Range (Cells (4, 1), клетки (topRows - 1, 52)). Изберете Selection.delete Shift: = xlUp End, ако ActiveSheet.Range (клетки (bottomRows - topRows + 4, 1), Cells (30000, 52)). Изберете Selection.delete Shift: = xlUp "MsgBox" Брой изтрити редове: "& Изтрити редове Край под 

Отбележи, че

Благодарение на Джейсън за този съвет на форума.

Предишна Статия Следваща Статия

Топ Съвети