mail mail

Функция 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
Подтвердите, пожалуйста, что вы - человек:
3 + 3 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.