Добрый день, форумчане! Нужна ваша помощь Периодически делаю определенную выгрузку таблиц из системы для того, чтобы в дальнейшем ее использовать для обновления данных другой excel таблицы. Суть вопроса следующая - каждый раз при формировании выгрузки, нужные мне столбцы выгружаются в хаотичном порядке, при этом название столбцов из выгрузки в выгрузку одинаковое. Т.е., например сегодня в выгрузке всего 10 столбцов, но из них мне нужны только столбец 2, 3,5 и 7, а завтра в выгрузке уже 12 столбцов и нужные мне столбцы теперь под номерами 2,5, 8 и 11. Можно ли сделать так, чтобы интересующие меня столбцы через макрос ставить в начало таблицы в нужном мне формате? Ломаю голову, но тк с VBA на Вы, ничего не выходит заранее спасибо!
Добрый день, форумчане! Нужна ваша помощь Периодически делаю определенную выгрузку таблиц из системы для того, чтобы в дальнейшем ее использовать для обновления данных другой excel таблицы. Суть вопроса следующая - каждый раз при формировании выгрузки, нужные мне столбцы выгружаются в хаотичном порядке, при этом название столбцов из выгрузки в выгрузку одинаковое. Т.е., например сегодня в выгрузке всего 10 столбцов, но из них мне нужны только столбец 2, 3,5 и 7, а завтра в выгрузке уже 12 столбцов и нужные мне столбцы теперь под номерами 2,5, 8 и 11. Можно ли сделать так, чтобы интересующие меня столбцы через макрос ставить в начало таблицы в нужном мне формате? Ломаю голову, но тк с VBA на Вы, ничего не выходит заранее спасибо!Artem2292
Вообще столбцы можно сортировать так же, как и строки. Но тут другой случай, одинаково они не становятся, можно просто тупо сперва макросом удалить все лишние столбцы, а оставшиеся отсортировать. А вообще зачем это всё, если и так используете макрос? Сразу макросом и оперируйте с столбцами, найденными по заголовку, их двигать это лишняя работа. P.S. Или вот алгоритм - ищите по строке эти 4 названия, каждому ставите впереди цифру. Можно нумерацию 1-4. Далее сортируете диапазон, получите что-то типа 1.Название 2.№ оборудования 3.Рег.№ 4.Статус Год выпуска Дата покупки оборудование Теперь можно цифры убить, ну или оставить если уже не важно.
Вообще столбцы можно сортировать так же, как и строки. Но тут другой случай, одинаково они не становятся, можно просто тупо сперва макросом удалить все лишние столбцы, а оставшиеся отсортировать. А вообще зачем это всё, если и так используете макрос? Сразу макросом и оперируйте с столбцами, найденными по заголовку, их двигать это лишняя работа. P.S. Или вот алгоритм - ищите по строке эти 4 названия, каждому ставите впереди цифру. Можно нумерацию 1-4. Далее сортируете диапазон, получите что-то типа 1.Название 2.№ оборудования 3.Рег.№ 4.Статус Год выпуска Дата покупки оборудование Теперь можно цифры убить, ну или оставить если уже не важно.Hugo
Hugo, а не подскажете, куда копать?) Вроде нашел похожий макрос в соседней теме http://www.excelworld.ru/forum/10-45675-1 Но как адаптировать для свой задачи - не понимаю..
Копать так: 1. как определить нужный диапазон 2. как пройтись по заголовкам, найти нужные, добавить в название цифры. 3. сортировка столбцов, ну это уже нашли, хотя это можно просто записать рекордером и использовать чуть подправив.
В чём видите проблему?
Копать так: 1. как определить нужный диапазон 2. как пройтись по заголовкам, найти нужные, добавить в название цифры. 3. сортировка столбцов, ну это уже нашли, хотя это можно просто записать рекордером и использовать чуть подправив.
сделать так, чтобы интересующие меня столбцы через макрос ставить в начало таблицы в нужном мне формате?
Для выгрузка1 [vba]
Код
Sub iPereSort() 'запускаем при активном листе Лист1 Dim i As Long Dim iLastRow As Long With Worksheets("Лист2") .Cells.Clear For i = 0 To 9 'перегруппировываем 10 столбцов Range(Cells(1, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)(i)), _ Cells(11, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)(i))).Copy .Cells(1, Array(5, 1, 2, 7, 3, 8, 4, 6, 9, 10)(i)) Next i .Activate End With End Sub
[/vba]
Цитата
сделать так, чтобы интересующие меня столбцы через макрос ставить в начало таблицы в нужном мне формате?
Для выгрузка1 [vba]
Код
Sub iPereSort() 'запускаем при активном листе Лист1 Dim i As Long Dim iLastRow As Long With Worksheets("Лист2") .Cells.Clear For i = 0 To 9 'перегруппировываем 10 столбцов Range(Cells(1, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)(i)), _ Cells(11, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)(i))).Copy .Cells(1, Array(5, 1, 2, 7, 3, 8, 4, 6, 9, 10)(i)) Next i .Activate End With End Sub