Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
AndreA SN
1004 / 108 / 2
Регистрация: 26.08.2011
Сообщений: 975
Записей в блоге: 2
1

Как получить с листа сразу транспонированный массив?

12.09.2015, 13:23. Просмотров 867. Ответов 3
Метки нет (Все метки)

Вопрос в принципе решен. Но, может, есть унифицированный способ?

Получаю данные с листа в массив
Visual Basic
1
idmasss = Range(Cells(str, col_rod), Cells(1, 1)).Value
Но организация данных в этом массиве не соответствует дальнейшим условиям работы с ним, в частости возможности приращения данных по строкам, так как строковая размерность Range соответствует первой размерности массива idmass.
В последующем нужно увеличивать количество строк в массиве функцией ReDim Preserve
Для этого мне приходится создавать новый массив BD и делать вот такую фигню
Visual Basic
1
2
3
4
5
6
ReDim BD(col_rod - 1, UBound(idmasss, 1) - 1)
For i = 0 To UBound(idmasss, 1) - 1 ' строки
    For j = 0 To UBound(idmasss, 2) - 1 ' столбцы
        BD(j, i) = idmasss(i + 1, j + 1)
    Next j
Next i
А может можно обойтись без этого?
Понятно, что это действие - аналог транспонирования. Но сразу хочу предупредить: транспонировать на листе и потом читать в массив данные в моем случае нельзя!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2015, 13:23
Ответы с готовыми решениями:

Как получить имя листа в Excel
Нужно получить имя первого листа в книге (всего в книге предполагается 2 листа) и записать его в...

Как получить данные выделенной области неактивного листа?
Приветствую Вас!!! Есть необходимость при открытии файла переменной «LastRange» (типа Range) ...

Запись данных с формы сразу на два листа
Добрый вечер! Уважаемые форумчане помогите с решением следующей задачи..... В файле,на...

как получить A_I сразу ?
я пытаюсь сделать свой форум... использую mySqli сталкнулся с небольшой проблемой ( вообще это...

Как программно получить фигуру с листа Excel, и текст в ней?
Добрый день! Подскажите пожалуйста, как можно программно получить фигуру (прямоугольник) с листа...

3
Казанский
14905 / 6308 / 1719
Регистрация: 24.09.2011
Сообщений: 9,977
12.09.2015, 13:39 2
Лучший ответ Сообщение было отмечено AndreA SN как решение

Решение

AndreA SN,
Visual Basic
1
idmasss = WorksheetFunction.Transpose(Range(Cells(Str, col_rod), Cells(1, 1)))
Ячейки не должны содержать строк длиннее 256 символов.

Кстати, проходили уже Транспонировать один массив в другой
1
AndreA SN
1004 / 108 / 2
Регистрация: 26.08.2011
Сообщений: 975
Записей в блоге: 2
12.09.2015, 18:27  [ТС] 3
Согласен. Несколько отличается ситуация от того, что хотел получить. При таком получении данных в массив итоговый массив начинается не с нолика, а с единицы. Это в принципе не является проблемой, но бьет наотмашь по стереотипам))). В любом случае, Казанский, в очередной раз спасибо)))
0
AndreA SN
1004 / 108 / 2
Регистрация: 26.08.2011
Сообщений: 975
Записей в блоге: 2
15.12.2015, 23:36  [ТС] 4
а зеркальная ситуация как может быть решена? когда из массива нужно слить инфу в транспонированном виде на лист
0
15.12.2015, 23:36
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2015, 23:36

Как получить сразу все элементы формы?
Ребята, как получить сразу все элементы формы (чекбоксы, селекты, радиобаттоны) и проврить их...

Как отправить веб-запрос и сразу получить ответ?
Привет всем! У меня есть задача отправить свои логин и пароль на сервер и сразу же получить...

Как Получить MainWindowHandle сразу после запуска процесса
как получить MainWindowHandle сразу после запуска процесса? например, Dim a As New Process ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.