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

Вход

Регистрация

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

 

= Мир MS Excel/метод Application.Transpose для чего нужен? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » метод Application.Transpose для чего нужен? (Макросы/Sub)
метод Application.Transpose для чего нужен?
jun Дата: Понедельник, 13.12.2021, 17:29 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Добрый вечер!

Повсеместно использую метод Application.Transpose для заполнения комбобоксов и записи массива в столбец.

Возник вопрос, почему, например для записи
[vba]
Код
Combobox1.List = здесь использовать transpose из столбца
или
Cells(1,1).Resize(Ubound(arr),1) = тоже использовать transpose(arr)
[/vba]

Нужно использовать application.transpose.

Всем большое спасибо!


Сообщение отредактировал jun - Понедельник, 13.12.2021, 17:29
 
Ответить
СообщениеДобрый вечер!

Повсеместно использую метод Application.Transpose для заполнения комбобоксов и записи массива в столбец.

Возник вопрос, почему, например для записи
[vba]
Код
Combobox1.List = здесь использовать transpose из столбца
или
Cells(1,1).Resize(Ubound(arr),1) = тоже использовать transpose(arr)
[/vba]

Нужно использовать application.transpose.

Всем большое спасибо!

Автор - jun
Дата добавления - 13.12.2021 в 17:29
bmv98rus Дата: Понедельник, 13.12.2021, 20:16 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Transpose меняет местами измерения массива, то есть строки становятся столбцами и наоборот. Использование совсем не обязательно, все зависит от того что куда присваивается, но чаще применение обязательно для того что массив имеет переменный размер, а без потери данных менять можно только последнее измерение, а типа нужно первое, тогда массив транспонируется для соответствия.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеTranspose меняет местами измерения массива, то есть строки становятся столбцами и наоборот. Использование совсем не обязательно, все зависит от того что куда присваивается, но чаще применение обязательно для того что массив имеет переменный размер, а без потери данных менять можно только последнее измерение, а типа нужно первое, тогда массив транспонируется для соответствия.

Автор - bmv98rus
Дата добавления - 13.12.2021 в 20:16
jun Дата: Вторник, 14.12.2021, 10:10 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Спасибо!
То есть получается в этом случае:
[vba]
Код
Cells(1,1).Resize(Ubound(arr),1) = application.transpose(arr)
[/vba]
мы транспонируем массив из строки в столбец, поэтому и используем, верно?
 
Ответить
СообщениеСпасибо!
То есть получается в этом случае:
[vba]
Код
Cells(1,1).Resize(Ubound(arr),1) = application.transpose(arr)
[/vba]
мы транспонируем массив из строки в столбец, поэтому и используем, верно?

Автор - jun
Дата добавления - 14.12.2021 в 10:10
RAN Дата: Вторник, 14.12.2021, 12:36 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Верно.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 14.12.2021, 12:44
 
Ответить
СообщениеВерно.

Автор - RAN
Дата добавления - 14.12.2021 в 12:36
Alex_ST Дата: Вторник, 14.12.2021, 12:38 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Application.Transpose иногда удобно использовать для объединения нескольких одномерных массивов в один двумерный, который можно "одним движением" выводить на лист.
Вот пример из выложенного мною в топике Dictionary и Collection - это совсем не сложно! файла Dictionary & Collection Objects.XLS.
Несколько одномерных массивов (элементов .Items словаря oDict) объединяются в один двумерный массив, пригодный для прямой выгрузки на лист. Повторное транспонирование применено потому, что после первого транспонирования массив будет не так повёрнут на листе:[vba]
Код
Sub testDictArr0()   ' словарь массивов
   Dim oDict: Set oDict = CreateObject("Scripting.Dictionary")  ' Создаем словарь
   With oDict
      .Add Key:="RUS", Item:=Array("один", "два", "три", "четыре", "пять")
      .Add Key:="ENG", Item:=Array("one", "two", "three", "four", "five")
      .Add Key:="GER", Item:=Array("One", "Zwei", "Drei", "Vier", "Funf")
      ActiveSheet.Cells(1, 1).Resize(.Count, 5).Value = Application.Transpose(Application.Transpose(.Items))
   End With
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 15.12.2021, 07:37
 
Ответить
СообщениеApplication.Transpose иногда удобно использовать для объединения нескольких одномерных массивов в один двумерный, который можно "одним движением" выводить на лист.
Вот пример из выложенного мною в топике Dictionary и Collection - это совсем не сложно! файла Dictionary & Collection Objects.XLS.
Несколько одномерных массивов (элементов .Items словаря oDict) объединяются в один двумерный массив, пригодный для прямой выгрузки на лист. Повторное транспонирование применено потому, что после первого транспонирования массив будет не так повёрнут на листе:[vba]
Код
Sub testDictArr0()   ' словарь массивов
   Dim oDict: Set oDict = CreateObject("Scripting.Dictionary")  ' Создаем словарь
   With oDict
      .Add Key:="RUS", Item:=Array("один", "два", "три", "четыре", "пять")
      .Add Key:="ENG", Item:=Array("one", "two", "three", "four", "five")
      .Add Key:="GER", Item:=Array("One", "Zwei", "Drei", "Vier", "Funf")
      ActiveSheet.Cells(1, 1).Resize(.Count, 5).Value = Application.Transpose(Application.Transpose(.Items))
   End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 14.12.2021 в 12:38
jun Дата: Вторник, 14.12.2021, 12:59 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

bmv98rus, RAN, Alex_ST, спасибо большое!

Alex_ST, очень интересный прием, еще не использовал, возьму на вооружение.

Всем еще раз большое спасибо, разобрался!
 
Ответить
Сообщениеbmv98rus, RAN, Alex_ST, спасибо большое!

Alex_ST, очень интересный прием, еще не использовал, возьму на вооружение.

Всем еще раз большое спасибо, разобрался!

Автор - jun
Дата добавления - 14.12.2021 в 12:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » метод Application.Transpose для чего нужен? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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