dポイントプレゼントキャンペーン実施中!

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

 どなたか、教えて!

A 回答 (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

こんなかんじで。

これで読み込めなかったら、
読み込む側の最大行数
以上だったということです。
    • good
    • 0

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

#テキストベースで書いただけでテストしてないのでミスあるかも(^-^;

この回答への補足

決定的な対策のように感じました。
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

補足日時:2003/06/14 10:50
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/20 10:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す