Разделение книги с использованием фильтра и создание нового файла в имени столбца

468
Suyash

Предположим, у меня есть Рабочая тетрадь (Report.xlsx), и в этой рабочей тетради есть другой лист. На каждом листе у меня есть имя столбца B_Code. Используя фильтр в B_Code, я хочу отдельную рабочую книгу с каждым листом в нем.

Так же, как на рисунке 1, вы можете увидеть, что лист 1 имеет B_Code.

Точно так же в Листе 2 у меня также есть B_Code.

Теперь я хочу, чтобы данные 001, то есть Рам на листе 1, а также на листе 2 в той же книге, что и имена файлов 001 и 002, т.е. Хари на листе 1, а также на листе 2 в другой книге, как имя файла 002 и так далее.

Может кто-нибудь помочь мне решить эту проблему с помощью VBA.

0

1 ответ на вопрос

0
scenography

Сохраните копию файла перед началом удаления. Затем вы можете использовать код VBA, который удаляет строку, когда ячейка ( rngCell) имеет значение, отличное от 001 или B_Code или пробела.

 If rngCell.Value <> "001" _ And rngCell.Value <> "B_Code" _ And rngCell.Value <> "" _ Then rngCell.EntireRow.Delete End If 

Поместите этот код в Forцикл, чтобы проверить все ячейки в столбце А. Поскольку вы удаляете строки, начните цикл в последней строке и поднимитесь вверх с помощью Step -1. Код, который находит последнюю строку ( lngLastRowNumber), объясняется в разделе «Поиск последней использованной ячейки в диапазоне» .

 lngLastRowNumber = Cells(Rows.Count, "A").End(xlUp).row For lngRowNumber = lngLastRowNumber To 1 Step -1 Set rngCell = Columns("A").Rows(lngRowNumber) If rngCell.Value <> "001" _ And rngCell.Value <> "B_Code" _ And rngCell.Value <> "" _ Then rngCell.EntireRow.Delete End If Next lngRowNumber 

Чтобы удалить строки на каждом рабочем листе, поместите цикл в другой цикл, который является For Eachрабочим листом.

Пишите о любых проблемах, которые у вас есть, когда вы пишете и тестируете код.