mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Функция VBA для транспонирования массива.

Как известно, встроенная в Excel функция листа Transpose имеет ограничения, вследствии чего её не удаётся применять для транспонирования произвольных массивов.

Вот список ограничений  встроенной функции Transpose:

  • Массив не может содержать элементов, длина которых превышает 255 знаков.
  • Массив не может содержать пустые (Null) значения.
  • Количество элементов не может превышать 5461.

Чтобы избежать этих ограничений, рекомендую использовать пользовательскую функцию TransposeArray:

Sub ПримерИспользования()
    ИсходныйМассив = ActiveSheet.UsedRange.Offset(1).Value
    ТранспонированныйМассив = TransposeArray(ИсходныйМассив)
End Sub

Код самой функции:

Function TransposeArray(ByVal arr As Variant) As Variant
    ' Пользовательская функция для транспонирования массива
    Dim tempArray As Variant
    ReDim tempArray(LBound(arr, 2) To UBound(arr, 2), LBound(arr, 1) To UBound(arr, 1))
    For X = LBound(arr, 2) To UBound(arr, 2)
        For Y = LBound(arr, 1) To UBound(arr, 1)
            tempArray(X, Y) = arr(Y, X)
        Next Y
    Next X
    TransposeArray = tempArray
End Function

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Если бы стандартный метод не имел ограничений, описанных в статье, - я бы только им и пользовался.
А в универсальных решениях, гораздо удобнее применять этот макрос

для факультатива хорошо чтобы разобраться в транспонировании, но есть стандартный метод для транспонирования.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
      _   _____    ___   __  __  _____   _    
| | | ____| / _ \ \ \/ / | ___| | | __
_ | | | _| | | | | \ / | |_ | |/ /
| |_| | | |___ | |_| | / \ | _| | <
\___/ |_____| \__\_\ /_/\_\ |_| |_|\_\
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.