Страницы: 1
RSS
Выделить столбцы по их номерам из массива, ВБА
 
Добрый день, имеется массив с номерами столбцов diapazon(). Необходимо их выделить для последующего копирования. До этого делал вручную прописывая
Код
'B = WorksheetFunction.Match("TypUL", [ФЛ_Ф_056!a1:ww1], 0)
'C = WorksheetFunction.Match("LS", [ФЛ_Ф_056!a1:ww1], 0)
'j = WorksheetFunction.Match("VOL_IND", [ФЛ_Ф_056!a1:ww1], 0)
'D = WorksheetFunction.Match("N_SERV", [ФЛ_Ф_056!a1:ww1], 0)
'E = WorksheetFunction.Match("SQUARE", [ФЛ_Ф_056!a1:ww1], 0)

То есть приравнивая каждой переменной свой столбце, а потом с помощью union

Код
Set Source = Union(Columns(A), Columns(B), Columns(C), Columns(D), Columns(E) )

Объединял диапазоны, теперь хочу чтобы они шли из массива

Я думал может циклом получиться наполнить выделение

Код
For j = 1 to 10 
j = diapazon(j) 
Set Source = Union(Columns(j))
next j 
Подскажите пожалуйста, как выделить столбцы по номерам из массива, Спасибо.
Изменено: Kentavrik7 - 19.03.2019 09:38:49
 
А зачем столбцы выделять? Опишите ЗАДАЧУ, а не способ, которым ее пытаетесь решить и приложите файл-пример. Как есть - как надо. Ну не первый день - то уже на форуме!
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Я описал что нужно и как было, Было что выделял столбцы занося каждый теперь автоматизировать.
В файле примере написан макрос который заполняет массив diapazon.
Задача следующая. Имеется набор столбцов, во всех файлах он одинаков, необходимо "облегчить файлы" выбрать только нужные для задачи столбцы.
Работа с макросом:
Пользователь выбирает в форме  нужные столбцы, они заносятся в массив, далее макрос открывает последовательно файлы, по сформированному пути, и по номеру столбов выбранных, копирует ->вставляет в новый файл->сохраняет новый файл (он получился облегченный без лишней информации.
Номера столбцов получилось занести в массив "diapazon()" не получается теперь выделить нужные столбцы
Изменено: Kentavrik7 - 19.03.2019 11:07:05
 
Глубоко не вникал. Может как-то так надо?
Код
        For j = 1 To kolvo
            If Not Source Is Nothing Then
                Set Source = Union(Source, Columns(WorksheetFunction.Match(aData(j), [ФЛ_Ф_056!a2:ww2], 0)))
            Else
                Set Source = Columns(WorksheetFunction.Match(aData(j), [ФЛ_Ф_056!a2:ww2], 0))
            End If
        Next j
        If Not Source Is Nothing Then Source.Select
Согласие есть продукт при полном непротивлении сторон
 
Sanja, выдал ошибку "Невозможно получить свойство Math класса WorkSheetFunction, не знаете в чем причина?
 
Не находит значение aData(j) в диапазоне a2:ww2 листа ФЛ_Ф_056
Может лучше Find использовать и проверять на наличие?
Согласие есть продукт при полном непротивлении сторон
 
Sanja,Странно, все значения которые есть в исходной шапке, точно есть и в файлах. Хм. А как использовать Find?
 
Sanja, Все хорошо, я разобрался, работает копирует, только долго) Ну это уже разговор на другую тему спасибо)
Вопрос такой, навскидку, есть метод более быстрый чем перебор каждого столбца и объединение его в union ?
Изменено: Kentavrik7 - 19.03.2019 11:32:29
 
Цитата
Kentavrik7 написал:
есть метод более быстрый чем перебор каждого столбца и объединение его
метод для решения какой задачи?
Цитата
Задача следующая. Имеется набор столбцов, во всех файлах он одинаков, необходимо "облегчить файлы" выбрать только нужные для задачи столбцы
допустим выбрали Вы столбцы с какой радости ЭТО ОБЛЕГЧИТ файл?
пока что Вы только загрузили Excel дополнительной работой и НИКАК не облегчили файл. задача-то в чем заключается?
Изменено: Ігор Гончаренко - 19.03.2019 12:00:50
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,
Цитата
Ігор Гончаренко написал:
Вы только загрузили Excel дополнительной работой и НИКАК не облегчили файл. задача-то в чем заключается?
Эм,
Цитата
Kentavrik7 написал:
копирует ->вставляет в новый файл->сохраняет новый файл
А читать до конца описание ?
Он вставляет в новый файл, получается файл состоящий только из столбцов которые необходимы для работы, вместо 71 столбца.
Цитата
Ігор Гончаренко написал:
метод для решения какой задачи?
ВЫДЕЛЕНИЯ выбранных Столбцов из массива.
Благодаря Sanja все работает, кроме одного не получается закрыть открытую исходную книгу ругается на:
Код
Workbooks(putin).Close
Про оптимизацию я спросил, может есть опыт или идея, как сделать корректнее или быстрее, мало ли.  
Изменено: Kentavrik7 - 19.03.2019 12:17:53
 
Забирать данные в массив, обрабатывать так, как Вам нужно, выгружать на лист готовый результат
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Для дальнейшей работы мне пока что так и нужно, чтобы я выбрал столбцы которые мне нужны сделал новый файл с этими столбцами (2 или 3) и я уже с этим легким быстрым файлом делал все что душе угодно)
 
так вот задача не выбрать столбцы
а задача
скопировать заданный перечень столбцов из нескольких книг последовательно в один лист новой книги
да, нет?
и третий вариант ответа "по фиг!"
(и отвечать не обязательно)
Изменено: Ігор Гончаренко - 19.03.2019 12:39:21
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Эм, вы собираетесь и дальше гнуть свою линию оправдываю свою невнимательность? Или от выяснения данного вопроса, вы мне предложите уникальное решение увиденной вами задачи? К чему в конечном итоге приведут два ваших сообщения, к реальной помощи или к самоутверждению?
Цитата
Ігор Гончаренко написал:
один лист новой книги
и не в один лист, а каждую книгу в свой новый файл.
Изменено: Kentavrik7 - 19.03.2019 12:51:02
 
Цитата
Kentavrik7 написал: Для дальнейшей работы мне пока что так и нужно
а как быть с этим?
Цитата
Kentavrik7 написал: работает копирует, только долго
вы же сами спросили
Цитата
Kentavrik7 написал: может есть опыт или идея, как сделать корректнее или быстрее
я Вам про массивы и рассказал.
Работа с листом (хоть с отдельными ячейками, хоть со столбцами целиком) практически всегда значительно медленнее, чем работа с теми же данными только в виртуальном массиве. Можно делать туже, нужную Вам, выборку только не с листа, а из массива
Согласие есть продукт при полном непротивлении сторон
 
Sanja,Я услышал. Смотрите файлы довольно таки объемные 71 столбец в длину и около миллиона строк в ширину. Я даже и думать боюсь будет ли это работать быстрее если все данные перенести в массив, а потом по выбору столбца чтобы он создавал новый файл с данными столбцами, или я не так понял?
Проблема которая больше беспокоит почему не закрывается открытая до этого книга по пути "putin" если прописано:
Код
Workbooks(putin).Close
Изменено: Kentavrik7 - 19.03.2019 14:22:37
 
Цитата
Kentavrik7 написал:
К чему в конечном итоге приведут два ваших сообщения, к реальной помощи или к самоутверждению?
если Вы не понимаете для чего я их написал - безусловно не приведут ни к реальной помощи, ни тем более к самоутверждению, тут сработает 3-й вариант эти сообщения не приведут ни к чему.
только мне от этого ни холодно ни жарко, а у Вас решения как не было, так и нет
и пока Вы не поймете что писал я с целью уточнить и понять задачу, соотв. с последующей целью (когда понял задачу) решить ее... то ничего хорошего не получится
15 сообщений в теме и отсутвие решения задачи - это не показатель уровня тупизны местного сообщества и даже не показатель уровня сложности задачи, это показатель способностей автора обьяснить свою задачу

давайте рассмотрим две гипотетических мысли:
1. "пособирались тут уроды и самоутверждаюся за мой счет"
2. "что же я упустил в обьяснениях, что никто не может ответить на мой вопрос?"
Kentavrik7, как Вы думаете, развивая какую из этих мыслей можно быстрее получить желаемый ответ?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
уровня тупизны местного сообщества
Ну вот вы уже начинаете приплетать других людей к нашей милой беседе с какой то стати. Все ваши домыслы это исключительно ваша бурно разыгравшаяся фантазия не более.
Цитата
Ігор Гончаренко написал:
, а у Вас решения как не было, так и нет
Решение, очень точно подсказал и даже выразил в коде Sanja в #4 посте
Цитата
Ігор Гончаренко написал:
15 сообщений в теме и отсутвие решения задачи
Задача решена, дальнейшее развитие лишь поиск возможности оптимизации если она имеется, но и этот вопрос разъяснил уважаемый Sanja.
Цитата
Ігор Гончаренко написал:
это показатель способностей автора обьяснить свою задачу
Завуалированные оскорбления подъехали, я не развивал с вами спор и не оскорблял вас, зачем вы сорите в ответах под моим вопросом?
Цитата
Ігор Гончаренко написал:
давайте рассмотрим две гипотетических мысли:
Если вы предполагаете что можете думать и за себя, и за другого собеседника, зачем диалог который вы завели, поговорите сами с собой.

Прошу модератора удалить сообщения пользователя Ігор Гончаренко и мои ответы к ним, так как это непонятно для каких целей затронутый диалог нравоучений, который не имеет никакого отношения к вопросу описанному в первом посте.
Изменено: Kentavrik7 - 19.03.2019 14:55:18
Страницы: 1
Наверх