Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Array Transpose - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Array Transpose (Макросы/Sub)
Array Transpose
thrasher Дата: Воскресенье, 23.04.2017, 21:09 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем привет.
Прошу вашей помощи, уважаемые форумчане, т.к сам пока не могу справиться. Начал изучать массивы и работу с ними и возник вопрос, возможно ли повернуть массив так, как обозначено на вкладке result_example. Результат2 - это был бы идеальный вариант.
Но пока почему то в моем макросе, значения проставляются только по Яблокам. Подскажите пожалуйста, где ошибся и как реализовать подобные варианты.
Заранее спасибо.

[spoiler][vba]
Код

Sub TEST()

Dim Arr() As Variant
Dim i As Integer, j As Integer, k As Integer, l As Integer

'Define last Row
Last_Row = Sheets("TEST").Range("A" & Rows.Count).End(xlUp).Row
'Define last Column
Last_Column = Sheets("TEST").Cells(1, Columns.Count).End(xlToLeft).Column
'Redim array
ReDim Arr(1 To Last_Row, 1 To Last_Column)

Sheets("TEST").Select
'Заполняем массив данными со вкладки
For i = 1 To Last_Row
    For j = 1 To Last_Column
         Arr(i, j) = Cells(i, j).Value
    Next j
Next i

Sheets("1").Select
For k = LBound(Arr) To UBound(Arr) 'Заполняем столбцы
    For l = LBound(Arr) To UBound(Arr) 'Заполняем строки
        
        Sheets("1").Cells(l, k).Value = Application.Transpose(Arr(l, k))
        
    Next l
Next k

End Sub

[/vba]
К сообщению приложен файл: Test.xlsm (16.0 Kb)
 
Ответить
СообщениеВсем привет.
Прошу вашей помощи, уважаемые форумчане, т.к сам пока не могу справиться. Начал изучать массивы и работу с ними и возник вопрос, возможно ли повернуть массив так, как обозначено на вкладке result_example. Результат2 - это был бы идеальный вариант.
Но пока почему то в моем макросе, значения проставляются только по Яблокам. Подскажите пожалуйста, где ошибся и как реализовать подобные варианты.
Заранее спасибо.

[spoiler][vba]
Код

Sub TEST()

Dim Arr() As Variant
Dim i As Integer, j As Integer, k As Integer, l As Integer

'Define last Row
Last_Row = Sheets("TEST").Range("A" & Rows.Count).End(xlUp).Row
'Define last Column
Last_Column = Sheets("TEST").Cells(1, Columns.Count).End(xlToLeft).Column
'Redim array
ReDim Arr(1 To Last_Row, 1 To Last_Column)

Sheets("TEST").Select
'Заполняем массив данными со вкладки
For i = 1 To Last_Row
    For j = 1 To Last_Column
         Arr(i, j) = Cells(i, j).Value
    Next j
Next i

Sheets("1").Select
For k = LBound(Arr) To UBound(Arr) 'Заполняем столбцы
    For l = LBound(Arr) To UBound(Arr) 'Заполняем строки
        
        Sheets("1").Cells(l, k).Value = Application.Transpose(Arr(l, k))
        
    Next l
Next k

End Sub

[/vba]

Автор - thrasher
Дата добавления - 23.04.2017 в 21:09
nilem Дата: Понедельник, 24.04.2017, 06:49 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
thrasher, привет
попробуйте:


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеthrasher, привет
попробуйте:

Автор - nilem
Дата добавления - 24.04.2017 в 06:49
Rioran Дата: Понедельник, 24.04.2017, 12:02 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
thrasher, здравствуйте.

Код от nilem как всегда хорош и оптимален, рекомендую использовать его. Из интереса привожу менее производительный подход - хотел проверить, насколько по-другому будут смотреться те же действия через метод "Transpose".

К сообщению приложен файл: Rio_Unpivot.xlsm (23.7 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеthrasher, здравствуйте.

Код от nilem как всегда хорош и оптимален, рекомендую использовать его. Из интереса привожу менее производительный подход - хотел проверить, насколько по-другому будут смотреться те же действия через метод "Transpose".


Автор - Rioran
Дата добавления - 24.04.2017 в 12:02
thrasher Дата: Понедельник, 24.04.2017, 12:36 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
nilem, здравствуйте, большое спасибо за ответ.
Но у меня в итоге заполняется именами только столбец E.
 
Ответить
Сообщениеnilem, здравствуйте, большое спасибо за ответ.
Но у меня в итоге заполняется именами только столбец E.

Автор - thrasher
Дата добавления - 24.04.2017 в 12:36
nilem Дата: Понедельник, 24.04.2017, 12:50 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Вот в файле, пробуйте
К сообщению приложен файл: _Test.xlsm (17.9 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеВот в файле, пробуйте

Автор - nilem
Дата добавления - 24.04.2017 в 12:50
thrasher Дата: Понедельник, 24.04.2017, 19:33 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
nilem, спасибо.
Почему то в моем файле код работает некорректно. Тянется только первый столбец, не понимаю как такое возможно.
В Вашем файле все работает. Еще раз спасибо. hands


Сообщение отредактировал thrasher - Понедельник, 24.04.2017, 19:45
 
Ответить
Сообщениеnilem, спасибо.
Почему то в моем файле код работает некорректно. Тянется только первый столбец, не понимаю как такое возможно.
В Вашем файле все работает. Еще раз спасибо. hands

Автор - thrasher
Дата добавления - 24.04.2017 в 19:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Array Transpose (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!