Здравствуйте. Я прошу прощения, если мой заголовок был не очень хорошо сформулирован, но я постараюсь уточнить здесь более подробно.
Краткая справка / Что я знаю
Я не программист, но я уже второй год учусь в школе по специальности СНГ;Мой единственный опыт в программировании - это объектно-ориентированный класс программирования и базовый самообучаемый Excel VBA с использованием Google и средства записи макросов, и я учусь, чтобы помочь автоматизировать определенные процессы и рутину на работе.
Что я пытаюсь выполнить
- Теоретически этот процесс должен повторяться ровно 5 раз
- Создать автофильтр по текстовому значению на рабочем листе «Мастер» (Лист 2) в столбце "D"
- Текстовое значение будет основано на массиве (" HQ ", " MTV ", " OTV "," RTD", Все остальное не выделено желтым )
- Есть также 5 готовых листов с маркировкой (" CORP"," MTV"," OTV"," RTD"," Исключения")
- Для каждого текстового значения вмассив, фильтр и определить, если видимая строка возвращается.
ЕСЛИ ТАК
- 1. Выделите строки желтым;
- 2. Копировать строки (без выделения) на другой лист в RC (2,0);
- 3. В столбце A перейти к последней строке + смещение на (2,0)) и введите значение «ВСЕГО:»;
- 4. Смещение выделения на (0,1) и введите формулу COUNTA приложения для подсчета суммы строк минус заголовок (строка 1)
- ЕСЛИ ВОЗВРАЩАЕТСЯ НЕТ ВИДИМЫХ СТРОК Переходить к следующему элементу в массиве
- Как только массив завершен, все, что НЕ подсвечено желтым, должно быть скопировано& вставляется на лист с именем «Исключения», начиная с A2
- . Итоги, созданные на других листах («CORP», «MTV», «OTV», «RTD»), затем должны автоматически вводиться в готовуюЛист «Итоги» (который, я думаю, можно сделать с помощью VLOOKUP)
Вот что я имею в виду на странице итогов
Что я уже пробовал / С чем я борюсь
Итак, я попытался использовать макро-рекордер примерно 5 различными способами, чтобы попытаться выяснить,это, и я могу очень легко сделать это вручную и обман мой путь через, но я хочу сделать тего код полностью автономен и динамичен, и я думаю, что я слишком усложняю его. Создание рабочих листов и автоматическое форматирование каждой страницы достаточно просты, и кажется, что в остальном это всего лишь простая процедура filter> copy> paste.
Вот что у меня пока есть -
Sub AutoFilterFormat()
Range("A1:D1").Select
Selection.AutoFilter 'cancel filter already in place on header range
ActiveSheet.Range("$A$1:$D$212").AutoFilter Field:=4, Criteria1:="=*HQ*", _
Operator:=xlAnd 'filter that will be used for the following array:(HQ, CORP, MTV, OTV, RTD, <>)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select '
Selection.Copy
Sheets("CORP").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.End(xlDown).Select
Selection.Offset(2, 0).Activate
Selection.Value = "TOTAL:"
Selection.Offset(0, 1).Activate
'
'application COUNTA formula to count each non-blank row, excluding header A1:D1
'
End Sub
Что я ищу
Я не хочу, чтобы это выглядело какМне нужен кто-то, чтобы написать код для меня, потому что это не то, что я ищу. Так как у меня очень слабые базовые знания VBA, я изо всех сил пытаюсь найти наилучшие способы решения динамических проблем в любое время, поэтому я надеюсь получить несколько указателей, в частности, о:
- Find the LastRowТОЛЬКО видимых ячеек из автофильтра
- Какой цикл использовать с массивом
- Если нет результатов автофильтра, перейдите к следующему элементу в массиве
СпасибоВы за ваше время, и я прошу прощения, если моя проблема была слишком длинной или если я сошел с какой-либо степени неуместности.
Еще раз спасибо!