Перемещение ячеек на другой лист на основе текстовой строки с использованием VB (excel)

Поиск любых рекомендаций для написания сценария VB

В Excel у нас есть столбец, содержащий имена файлов в столбце A

«Y: \ мастер-документация \ алло \ дп \ ABO \ вкладка \ 100мг \ 4.packaging \ алло-закладка-100мг-дп-9-рр-moa- [ABO пр-ANL-0685-ver4.0]. pdf "" Y: \ master-documentation \ allo \ dp \ abo \ tab \ 100mg \ 4.packaging \ zz-archive \ test-form-00mg-dp-xxx-test- [test-file] -01.01.1900. DOCX»

SheetName = Файлы

Хотите скопировать в sheetname = Current, если строка «zz-archive» не содержится в ячейке, в противном случае перейдите в Sheetname = Archive.

Мы использовали формулы, но оставляем пустые строки.

Любая помощь очень благодарна Спасибо gary

Если решение на основе формулы все еще возможно, тогда эта формула массива в Current! A2 должна работать.

=IFERROR(INDEX(Files!$A$2:$A$99,MATCH(0, IF(LEN(Files!$A$2:$A$99),IF(ISERROR(SEARCH("zz-archive",Files!$A$2:$A$99)),COUNTIF(A$1:A1,Files!$A$2:$A$99),1),1),0)),"") 

Он должен быть в A2, поскольку не задействованная ячейка должна находиться над ней, чтобы избежать циклических ссылок. В качестве формулы массива требуется Ctrl + Shift + Enter, а не просто вводить. После правильного ввода его можно заполнить по мере необходимости, чтобы поймать все возможные возвращения.

Приложение: Чтобы использовать ту же формулу в архиве! A2, измените ISERROR на ISNUMBER .

Вот решение VBA, которое копирует фильтрованные данные в каждый из текущих и архивных листов.

 Sub categorize_filesnames() Dim ws As Worksheet, wsa As Worksheet, wsc As Worksheet Set ws = Sheets("Files") Set wsc = Sheets("Current") Set wsa = Sheets("Archive") wsa.Cells(1, 1).CurrentRegion.Offset(1, 0).ClearContents wsc.Cells(1, 1).CurrentRegion.Offset(1, 0).ClearContents With ws.Cells(1, 1).CurrentRegion .AutoFilter .AutoFilter Field:=1, Criteria1:="=*zz-archive*" .Offset(1, 0).Copy Destination:=wsa.Cells(2, 1) .AutoFilter Field:=1, Criteria1:="<>*zz-archive*" .Offset(1, 0).Copy Destination:=wsc.Cells(2, 1) .AutoFilter End With Set wsc = Nothing Set wsa = Nothing Set ws = Nothing End Sub 
Давайте будем гением компьютера.