• ベストアンサー

行列転置データのファイル変換方法

200行4000列の数値データの情報処理を行うのですが、 このデータをEXCELファイルとして、4000行200列のデータの形として保管しています。EXCELは255列までしか扱えないので、これを転置することはできません。そこで、例えば、SASやSPSS、SYSTATなどの統計ソフトで処理できるよう、行列を転置して、これらのソフトに読込めるように、ファイル変換をする方法を探しています。  どなたか、教えて!

質問者が選んだベストアンサー

  • ベストアンサー
  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.2

手作業チックな方が、 意外とうまくいきますよ Sub transpose() Dim intFileNo As Integer Dim lngRow As Long Dim lngCol As Long Dim strWork As String intFileNo = FreeFile() Open "outtrans.csv" For Output Access Write As intFileNo For lngCol = 1 To 200 strWork = "" For lngRow = 1 To 4000 strWork = strWork & Cells(lngRow, lngCol).Value If lngRow < 4000 Then strWork = strWork & "," End If Next Print #intFileNo, strWork Next Close #intFileNo End Sub こんなかんじで。 これで読み込めなかったら、 読み込む側の最大行数 以上だったということです。

その他の回答 (1)

noname#11856
noname#11856
回答No.1

CSVに吐き出す。 ただし、メニューから名前を付けて保存などでCSVにしても 行列入れ替えが出来ないので、VBAで出力するようにする。 Dim intFileNo As Integer Dim lngRow As Long Dim lngCol As Long intFileNo = FreeFile() Open "保存ファイル名" For Output Access Write As intFileNo For lngCol = 1 To 200 For lngRow = 1 To 4000 Write #intFileNo, Cells(lngRow, lngCol) Next Write #intFileNo, vbCrLf Next Close #テキストベースで書いただけでテストしてないのでミスあるかも(^-^;

ronyasu
質問者

お礼

色々教えてもらい、助かりました。もう少しうまくいかないのですが、何とかやってみようと思っています。

ronyasu
質問者

補足

決定的な対策のように感じました。 excelのマクロを早速作ってみました。うまく作動 して、outtrans.csvやouttrans.sysのファイルを作成できましたが、うまく、読み込めませんでした? ファイルの属性の指定に、もっと詳細な情報が あるのでしょうか? ---------------- Sub transpose() Dim intFileNo As Integer Dim lngRow As Long Dim lngCol As Long intFileNo = FreeFile() Open "outtrans.csv" For Output Access Write As intFileNo For lngCol = 1 To 200 For lngRow = 1 To 4000 Write #intFileNo, Cells(lngRow, lngCol) Next Write #intFileNo, vbCrLf Next Close End Sub

関連するQ&A