Функция VBA для транспонирования массива.
- Макросы VBA Excel
- Обработка массивов
|
Как известно, встроенная в 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
|