Я пытаюсь найти способ автоматизировать пользовательские фильтры, которые создаются для повседневных операций.Начав только действительно изучать VBA 24 часа назад, я использовал комбинацию записи макросов, а также смесь различных решений, которые я нашел в Интернете.Приведенный ниже код ближе всего подходит к тому, что мне было нужно, но есть некоторые странности, которые я не совсем понимаю, почему они происходят гораздо реже, чем их исправить.
Я пыталсясмещение строк вместе с добавлением или удалением одной снизу с минимальным успехом, поскольку в нем всегда указывается, что его раздел недопустим (я предполагаю, что его нужно где-то определить, но не совсем уверен, в каком формате).То, что, казалось, работало лучше всего, было комбинацией Обработки ошибок и specialCells, где скрипт должен игнорировать часть добавления значения, если во 2-й строке ничего не заполнено.Если там что-то заполнено, то добавляется значение в последнем столбце, но только для пустых ячеек.
Columns("A:H").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$H$800000").AutoFilter Field:=2, Criteria1:="=*",
_Operator:=xlAnd
ActiveSheet.Range("$A$1:$H$800000").AutoFilter Field:=8,
Criteria1:="=*In*", _Operator:=xlAnd
Это должно отфильтровать то, что мне нужно для каждой вкладки в Excel.Я ищу любые документы, которые имеют значение во 2-м столбце (B), и любые документы, содержащие «В» в 8-м столбце (H).Сгенерированные отчеты могут сильно различаться по длине, поэтому я обозначил 800k в качестве хорошего порога.
On Error GoTo NoBlanks01
If Range("$A$2:$H$2").SpecialCells(xlCellTypeVisible).Count > 0 Then
Columns("I:I").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "InsertValueHere"
Skip01:
On Error Resume NextEnd If
Я не уверен на 100%, если их использование является излишним, но я подумал, что если что-то и будетвторой ряд, продолжить.Если нет, то будет сгенерирована ошибка, которая последует в конец скрипта, затем перейдите к skip01 и перейдите оттуда.По сути, в обход значения, добавляющего, где он выделит все пустые ячейки в строке I и добавит «Вставить значение здесь».Эта часть обычно работает, но в Excel есть несколько вкладок, когда во второй строке будут элементы, но скрипт не распознает их и не выполнит обработку ошибок.Это та часть, которую я не понимаю.
NoBlanks01:
Resume Skip01
'У меня 11 «NoBlanks», «No Skips» и «Resumes» в одной и той же подпункте.Все по разным вкладкам.Опять же, не уверен, что это имеет значение, но подумал, что я бы сказал, что в случае, если есть какой-то порядок операций, который я пропустил при исследовании этого.
Я ожидаю, что скрипт должен отфильтровать в соответствии с данными спецификациями, затем выполнить череззапрос, где он проверяет, содержит ли вторая строка какие-либо элементы.Если это так: тогда он должен перейти к выбору последнего столбца на этой вкладке, выбрать только пустые ячейки на этой вкладке, а затем кодировать их значение.Если это не так, то он должен пропустить добавление любого значения и перейти прямо к соответствующему «NoBlanks», за которым следует соответствующее «Skip».
Как есть, он завершает логику на некоторых вкладках, но нена других.Я понятия не имею, почему, когда второй ряд четко заполнен.Я понимаю, что некоторые из этих отчетов пригодятся, поэтому при необходимости я могу их предоставить.