Есть лист "Данные" нужно, чтобы для каждого названия в первом столбце (а,б,в) автоматически создавался лист с таким же названием, и в него переносились бы все данные "а", "б" и т. д . в примере сделано с помощью копирования и фильтрации можно как-то облегчить задачу?
Есть лист "Данные" нужно, чтобы для каждого названия в первом столбце (а,б,в) автоматически создавался лист с таким же названием, и в него переносились бы все данные "а", "б" и т. д . в примере сделано с помощью копирования и фильтрации можно как-то облегчить задачу?letasm
Pelena, Подскажите, а как сделать автофильтр, основанный на совпадениях 1ого столбца? что-то не выходит совсем( И чтобы о работал для большего диапазона строк?
Pelena, Подскажите, а как сделать автофильтр, основанный на совпадениях 1ого столбца? что-то не выходит совсем( И чтобы о работал для большего диапазона строк?letasm
Pelena, макрос ertert112 он работает для 4 столбца, а мне надо чтобы на основании знаечений 1ого появлялись листы с отфильтрованными данными, простая замена с 4 на 1 столбе в коде не работает, подскажите что не так?
Pelena, макрос ertert112 он работает для 4 столбца, а мне надо чтобы на основании знаечений 1ого появлялись листы с отфильтрованными данными, простая замена с 4 на 1 столбе в коде не работает, подскажите что не так?letasm
Sub ertert112() 'то же, что и ertert111, но InStr вместо Dictionary Dim s, r Application.ScreenUpdating = False With Sheets("Sheet4").Range("A1").CurrentRegion .Parent.AutoFilterMode = False For Each r In .Offset(1).Resize(.Rows.Count - 1).Columns(1).Value If InStr(s, r) = 0 Then If Not Evaluate("ISREF('" & r & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = r Else Sheets(r).UsedRange.ClearContents End If .AutoFilter 1, r .Copy Sheets(r & "").Range("A1") s = s & r End If Columns("a:xx").EntireColumn.AutoFit Next .AutoFilter End With: Application.ScreenUpdating = True End Sub
[/vba]
Так попробуйте [vba]
Код
Sub ertert112() 'то же, что и ertert111, но InStr вместо Dictionary Dim s, r Application.ScreenUpdating = False With Sheets("Sheet4").Range("A1").CurrentRegion .Parent.AutoFilterMode = False For Each r In .Offset(1).Resize(.Rows.Count - 1).Columns(1).Value If InStr(s, r) = 0 Then If Not Evaluate("ISREF('" & r & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = r Else Sheets(r).UsedRange.ClearContents End If .AutoFilter 1, r .Copy Sheets(r & "").Range("A1") s = s & r End If Columns("a:xx").EntireColumn.AutoFit Next .AutoFilter End With: Application.ScreenUpdating = True End Sub
Можно я вас совсем замучаю?) Как сделать чтобы созданные листы создавались в алфавитном порядке, а не так, как идут строки? Не хотелось бы первый лист сортировать по алфавиту, Pelena?
Можно я вас совсем замучаю?) Как сделать чтобы созданные листы создавались в алфавитном порядке, а не так, как идут строки? Не хотелось бы первый лист сортировать по алфавиту, Pelena?letasm
Сообщение отредактировал letasm - Суббота, 16.04.2016, 13:22
Забирать первый столбец в массив, сортировать, и уже элементы отсортированного массива использовать в качестве имён листов и критериев автофильтра. Но это уже совсем другая тема.
Забирать первый столбец в массив, сортировать, и уже элементы отсортированного массива использовать в качестве имён листов и критериев автофильтра. Но это уже совсем другая тема.
Смещает диапазон, в данном случае на четыре строки вниз. Когда было смещение на 1 строку, то в пятом столбце первой была пустая ячейка, отсюда и ошибка
Смещает диапазон, в данном случае на четыре строки вниз. Когда было смещение на 1 строку, то в пятом столбце первой была пустая ячейка, отсюда и ошибкаPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816