kk_lee69 发表于 2016-4-7 17:12:27

EXCEL使用transpose($P) 來做行列互換 ,內容太長造成異常[已解决]

本帖最后由 kk_lee69 于 2016-4-18 13:12 编辑

EXCEL 使用 application.transpose($P) 來做行列互換 ,內容太長造成異常

不知有人有無辦法解決


$oExcel = _ExcelBookOpen($FileName,0,True) ;打開EXCEL表

        With $oExcel.ActiveSheet;worksheets("")
                $ProdArray=.range("a1").currentregion.value
                ;$arrt=$oExcel.application.intersect(.range("a1").currentregion,.range("a1").currentregion.offset(1)).value ;第一行不讀取
                       
                ;下面這段為 尋找跟替換 ;檢查 讀取到的檔案是否 有 不應該出現的字
                        For $n=0 To UBound($ProdArray)-1
                                For $i=0 To UBound($ProdArray,2)-1
                                        $ProdArray[$n][$i]=StringReplace($ProdArray[$n][$i],"'","")
                                Next
                        Next
                       
                $ProdArray=.application.transpose($ProdArray) ;行列互換
                ;.parent.close(false) ;讀取完畢後 把頁面關掉的
        EndWith

_ArrayDisplay($ProdArray)

_ExcelBookClose($oExcel, 0, 0)
$oExcel=0

h20040606 发表于 2016-4-7 18:30:42

行列互换是数据结构的基本算法吧。
这是我不知道EXCEL有这个函数的时候自己写的。请参考。
Func _Transpose($aArray)
        Local $i, $j
        If Not IsArray($aArray) Then Return SetError(3, 0, 0)
        Dim $bArray
        For $i = 1 To UBound($aArray, 1)
                For $j = 1 To UBound($aArray, 2)
                        $bArray[$j - 1][$i - 1] = $aArray[$i - 1][$j - 1]
                Next
        Next
        Return $bArray
EndFunc

kk_lee69 发表于 2016-4-8 09:24:58

本帖最后由 kk_lee69 于 2016-4-8 09:47 编辑

回复 2# h20040606

其實那個是 EXCEL 的限制 後來我也是 乾脆 既然讀取的到 就在 AU3 互換行列好了

我比較想了解的是EXCEL 裡面 VBA語法如何解決這個問題
页: [1]
查看完整版本: EXCEL使用transpose($P) 來做行列互換 ,內容太長造成異常[已解决]