MyTetra Share
Делитесь знаниями!
Функция VBA для транспонирования массива
31.12.2017
15:13
Текстовые метки: vba,array,Transpose,Обработка массивов
Раздел: VBA - Array

Функция 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
  • 19272 просмотра
Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования