Что нового

[Массивы] Вывод данных столбца двухмерного массива _ArrayOutColumn

IIuOHeP

Новичок
Сообщения
21
Репутация
2
Была задача: Записать в Excel двухмерный массив.
Нашёл функцию
Код:
_ExcelWriteArray
... функция работает хорошо, НО только с одномерными массивами :scratch:.
В результате дум написал следующею функцию для вывода данных двухмерного массива по столбцам:


Код:
#include <Array.au3>
Dim $Array[3][5] = [["Peta", "Ctyj", "Вася", 6, 4],["Ivan", 2, 3, "Beer", 6],["Vfrc", 7, "TT", 6, 8]]

$ArrayColumn = _ArrayOutColumn($Array)
;~ _ArrayDisplay($ArrayColumn)
For $i = 0 To UBound($Array, 2) - 1
;~ 	_ArrayDisplay($ArrayColumn[$i],"Column "&$i)
	ConsoleWrite(_ArrayToString($ArrayColumn[$i], @TAB) & @CRLF)
Next

ConsoleWrite('---------------------'&@CRLF)

$ArrayColumn = _ArrayOutColumn($Array,1)
ConsoleWrite(_ArrayToString($ArrayColumn, @TAB) & @CRLF)



Func _ArrayOutColumn($mArray,$column = -1) ;($Array, Number column)

	If Not IsArray($mArray) Then Return SetError(1)
	If UBound($mArray,0) <> 2 Then Return SetError(2)
	Dim $ArrayResult[UBound($mArray, 2)]
	Dim $ArrayTemp[UBound($mArray, 1)]

	For $WIndex = 0 To UBound($mArray, 2) - 1 Step 1
		For $HIndex = 0 To UBound($mArray, 1) - 1 Step 1
			$ArrayTemp[$HIndex] = $mArray[$HIndex][$WIndex]
		Next
		$ArrayResult[$WIndex] = $ArrayTemp
	Next

	if $column = -1 Then
	Return $ArrayResult
	ElseIf $column >= 0 and $column <= UBound($mArray, 2) Then
	Return $ArrayResult[$column]
	EndIf

EndFunc   ;==>_ArrayInColumn
 
Автор
I

IIuOHeP

Новичок
Сообщения
21
Репутация
2
Код:
_ExcelWriteSheetFromArray()

Звучит глупо :whistle: ,но банально не заметил :-[
Думаю _ArrayOutColumn может пригодится не только в _Excel.
 
Верх