Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Запутался с копированием строк

Автор ViktorG, 04.10.2012, 16:26

« назад - далее »

ViktorG

Помогите разобраться с копированием строк.
Имеется исходный файл. Нужно на основании первых двух цифр из лицевого счета создать лист и на него скопировать текущую строку. При этом шапка строки 1-17 должна быть на каждом листе.
Начал чего-то изобретать и немного запутался.
P.S. Заметил небольшой косяк в макросах заменил файл.

Poltava

Посмотрите такой вариант
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

ViktorG

#2
Так то нормально, но названия листов должны быть заданы так: если первые цифры лицевого счета 41 значит название листа 11, 42-12 и т.д. до 46

Wasilic

в строке макроса
   txt$ = Left(Arr(i, col), 2)
допишите  -30
  txt$ = Left(Arr(i, col), 2) - 30
И будет Вам счастье!  :)
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

cheshiki1

ЦитироватьИ будет Вам счастье! 
не будет. номер листа еще где то завязан.
так получаются только нужные листы, а заполнения по ним нет.

Wasilic

Цитата: cheshiki1 от 08.10.2012, 11:52
ЦитироватьИ будет Вам счастье! 
не будет. номер листа еще где то завязан.
так получаются только нужные листы, а заполнения по ним нет.
Ну, так в чем дело.
Если завязан, для полного счастья, подскажи где с поправкой!  :)
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

cheshiki1

я с макросами на ВЫ. Эту строку и я нашел, а вот дальше чет не нахожу. Знал бы подсказал бы.

Wasilic

#7
Понятно. Тогда вот здесь:

           .Range([H17], .Range("H" & x - 1)).AutoFilter Field:=1, Criteria1:="=" _
               & ArrayUnique(i, 1) & "*", Operator:=xlAnd

+30
           .Range([H17], .Range("H" & x - 1)).AutoFilter Field:=1, Criteria1:="=" _
               & ArrayUnique(i, 1) + 30 & "*", Operator:=xlAnd

ЗЫ. Надеюсь Poltava не заругает!  :)
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

Poltava

#8
не заругаю но раз нужны названия листов то их и правим за это отвечает строка
           .Name = ArrayUnique(i, 1) - 30 вот в конце -30 дописал и все работает но правда номера в порядке появления в списке если нужно по возрастанию то нужно массив отсортировать все остальное к названию листов отношения не имеет!
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

ViktorG

Все хорошо. только сейчас супруге (делается для нее) нужно чтобы вместо цифр 11,12 и т.д. в названиях листов стояло наименование района (11-Лесной, 12-Заречный, 13 - запрудный,и т.д.) возможно?

cheshiki1

а от куда это брать? что 11 это именно лесной а не какой нибудь другой.
продумайте все если и огласите за раз, а не каждый день по чуть-чуть.

ViktorG

Так женский ум я то сих пор не всегда понимаю ей сначала одно нужно, а потом другое.
Вытрес из нее последние данные (коды и названия районов): 41-Лесной, 42-Заречный, 43 - Запрудный, 44-Куликовский, 45-Синяковский, 46-Краснопольский.
Всего шесть. Надеюсь больше ничего ей не понадобится.

Poltava

#12
Пара вопросов, ответите на них вечерком переделаю файлик
1) Планируется ли изменять или увеличивать список? Я предлагаю создать отдельно лист соответствий индекса названию отделения это позволит самостоятельно пополнять базу отделений. Можно и в коде прописать, 6 отделений это не много, но стоит ли это делать ведь поленять на листе может почти каждый, а лезть в код vba уже не каждый согласиться?
2) Нужна ли сортировка листов в порядке следования индексов отделений или еще какая. Сейчас порядок листов равен их последовательному появлению в основном списке
3) Так как все же должны называться листы:
    - 11
    - 11-Лесной
    - 11 Лесной
    - 41
    - 41-Лесной
    - 41 Лесной
либо другой вариант? напишите четко шаблон названия!
4) Что должно происходить если лист уже есть в файле (сейчас лист просто удаляеться и на его место записываться новый) Можно допустим перед созданием удалить из книги все листы кроме листа с таблицей чтоб не было старых листов с просроченной информацией, а были только те что присутствуют в основном списке.
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

ViktorG

1) Список отделений увеличивать не планируется как есть 6 отделений так и останется.
2) Сортировка не нужна.
3) Названия листов должны соответствовать названию отделения(т.е. если лицевой счет начинается на 41 значит лист называется "Лесной" и т.д.)
4) В идеале нужно чтобы данные дописывались в имеющийся лист в конец списка, если таковой имеется и если листа нет, то создается.

cheshiki1

#14
Цитата: ViktorG от 08.10.2012, 16:57
3) Названия листов должны соответствовать названию отделения(т.е. если лицевой счет начинается на 41 значит лист называется "Лесной" и т.д.)
вас спрашивают точное название листа, а не как получается. из 3-х вариантов указанных Poltava выберете один.
Poltava
4 вариант 11_Лесной. )))
Цитировать4) В идеале нужно чтобы данные дописывались в имеющийся лист в конец списка, если таковой имеется и если листа нет, то создается.
с этого нужно было начинать. По моему предыдущий код сразу уходит в мусор. Хотя я не макрописец могу ошибаться.