Всем доброго времени. Столкнулся с таким вопросом, как загрузить в переменную массива данные из несмежных столбцов екселя. Пробовал различные варианты: загружал циклами - долго (данные большие), Union - вещь хорошая, но таблицы разные и столбцы каждый раз нужны разные, не получилось. Пока временно написал макрос, который переносит нужные столбцы на темповый лист, там уж через объект Рандж грузит в массив. Но на мой взгляд не совсем хорошее решение. Если у кого-то есть идеи поделитесь, БУДУ ОЧЕНЬ ПРИЗНАТЕЛЕН!
Загрузка несмежных столбцов Excel в переменную массива VBA, Как загрузить?
24.11.2017 20:09:11
|
|
|
|
24.11.2017 20:13:56
Как вариант - массив массивов?
|
|
|
|
24.11.2017 20:15:57
МММ ... стесняюсь спросить... а можно для особо одаренных на пальцах ...??
|
|||
|
|
24.11.2017 20:21:21
Согласие есть продукт при полном непротивлении сторон
|
|||
|
|
24.11.2017 20:23:50
Да была идея ... однако по некоторым причинам ограничен в применении каких либо инструментов кроме штатного екселя ((
|
|
|
|
24.11.2017 20:33:28
|
|||
|
|
24.11.2017 20:47:39
Что касается темы, да мне грубо говоря, нужно два (3,4 и т.д.) несмежных столбца загнать в один массив. С Union это получается, но если номера столбцов каждый раз разные, то универсальную процедуру под Union написать не могу.
|
|
|
|
24.11.2017 20:53:31
Хммм, странно, а у меня вот с Union в один массив несмежные столбцы не получилось загнать. А что до определения диапазонов для Union, так это можно через диалоговые окна запрашивать.
Кому решение нужно - тот пример и рисует.
|
|
|
|
24.11.2017 20:59:48
Пытливый - Union (Column(1),Column(3),Column(10)).Select
а потом Section в массив. У меня вопрос в том как вот эти колумны через переменные в юнион загнать ... наверное нельзя т.к. функция будет переменную как текст воспринимать. |
|
|
|
24.11.2017 21:06:50
так текст-то можно преобразовать в целое, например:
А?
Кому решение нужно - тот пример и рисует.
|
|||
|
|
24.11.2017 21:07:08
Ладно наверно тема закрыта. Спасибо всем откликнувшимся.
|
|
|
|
24.11.2017 21:08:18
Согласие есть продукт при полном непротивлении сторон
|
|||||
|
|
24.11.2017 21:15:53
|
|||
|
|
24.11.2017 21:15:57
|
|
|
|
24.11.2017 22:27:37
И что, нельзя на листе выделить диапазон, который при появлении начальства очищается, а при первых пожеланиях босса в ячейки лихоадочно вносятся номера или имена столбцов? А потом этот диапазон скармливается макросу обработки.
|
|
|
|
25.11.2017 00:24:54
HotShot, есть функции листа, которые умеют синтезировать массив из несмежных столбцов. Например ЕСЛИ и ВЫБОР (может, и другие есть).
Заполните диапазон А1:Е11 чем-нибудь и попробуйте пройти по шагам (F8), наблюдая за переменной в окне Locals
Можно также провести предварительную обработку массивов функциями листа, например
Можно еще мой ник добавить |
|||||
|
|
25.11.2017 13:23:53
Доброе время суток.
Алексей, большое спасибо. Вариант
|
|||
|
|
25.11.2017 14:17:29
Поэкспериментировал с различными переменными в строке для Evalute - все отработало.
Казанский, спасибо Заметил, что если диапазон предварительно обработан (Intersect()), то в массив добавляется не Error 2042, а 0
Изменено:
Согласие есть продукт при полном непротивлении сторон
|
|||
|
|
16.01.2018 14:23:44
Господа! Может немного не в тему, но оставлю здесь ссылки по Evaluate - лично мне очень понравились и были полезными!
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|
|
|
16.01.2018 15:54:14
Jack Famous, ИМХО мы на этом форуме продвинулись дальше внешних источников
1. Универсальность - в [1] нигде не упоминается стиль ссылок R1C1, а ведь некоторые предпочитают использовать такой стиль ссылок в Excel, и все приведенные в статье коды работать не будут; 2. Простота - заставить формулу работать как формулу массива с помощью INDEX(...,) проще, чем с помощью IF(ROW(2:99),...), т.к. не нужно вычислять и подставлять еще один фрагмент строки; 3. Удобство - чтобы не запутаться в нагромождении знаков & и " при подстановке адресов в формулу, мы используем Replace. |
|
|
|
16.01.2018 15:58:52
Казанский, ну я-то этого не знал)))) спасибо, что разъяснили - когда-нибудь и до Evaluate доберусь и разберу подробненько
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|
|
|
21.02.2020 12:51:36
Почему работает макрос test1, а второй выдаёт "type mismatch". Они идентичны, кроме столбца с условием. IF(TTL[fasad]=""V"", 1,0) - работает IF(TTL[fasad]=""V"", ""YES"",""NO"") - не работает В чём может быть проблема?
Изменено: |
|||
|
|
25.02.2020 14:01:37
Нет знатоков или проблема не имеет решения?
|
|
|
|
25.02.2020 14:19:27
|
|
|
|
25.02.2020 14:26:06
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|||
|
|
25.02.2020 14:54:12
Огромное человеческое гранд мерси!!! Вот истину говорят: "Век живи, век учись, но найдутся те, кто умнее"! |
||||
|
|
|||