- 締切済み
エクセル2003でCSVファイルを開くときに列と行を入れ替える方法はありませんか
エクセル2003を使用しています。 CSV形式のファイルがあるのですが、エクセルで開くと列が256を越えているためにエラーがでて、全てが表示されません。行は256を越えていないので、エクセルで開くときに列と行を入れ替えたいのですが、何か方法はないでしょうか? Windows2000を使用しているためエクセル2007は使えません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
>CSVファイルがカンマ区切りではなくタブ区切りでしたので 説明不足とは思うが、カンマ区切りでなくTAB区切りなら s = Split(a, ",") のところを s = Split(a, vbTab) と訂正すればよい。 これぐらい推測でき無いなら、質問の回答を出してもらっても、仕様が無いのではと思う。 ーー A1に="as" & CHAR(9) & "ffff" と入れて 下記実行しうまくいくこと確認しました。 Sub test01() a = Cells(1, "A") s = Split(a, vbTab) For i = 0 To UBound(s) MsgBox s(i) Next i End Sub
- imogasi
- ベストアンサー率27% (4737/17070)
#2です。 翌日(11/3)になって、同じような質問を見ましたので そちらに対し答えたものですが、VBAでのコードを作ってみたので挙げておきます。 ーー Sub test01() Open "C:\Documents and Settings\xxxx\My Documents\testcsv.csv" For Input As #1 j = 1 While Not EOF(1) Line Input #1, a s = Split(a, ",") For i = 0 To UBound(s) Cells(i + 1, j) = s(i) Next i j = j + 1 Wend Close #1 End Sub ーーー Openの後のファイル名はパスも含めて質問者のケースのものに書き換えるkと。 標準モジュールに貼り付けて、実行。 ーー 例データ CSV ファイル "aaabbb","ss",1 "aa","d",2 "dd","f",3 "ff","g",4 "gh","hh",5 "jjk","jj",6 "sd","k",1 "ss","a",2 結果 エクセルのシート "aaabbb" "aa" "dd" "ff" "gh" "jjk" "sd" "ss" "ss" "d" "f" "g" "hh" "jj" "k" "a" 1 2 3 4 5 6 1 2 ーー 付記 コードの書き方について2,3種類あり、一番旧い形のコードですが、コードの文字数が一番少ないので、上例を挙げておきます。
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルのシートに読み込めれば、ご存知の、編集ー形式を選択して張り付けー行と列を入れ替えるで済みますが、読み込めない以上どうしようもないですね。 ーー (1)フリーのソフトを探す (2)CSVファイルを250列とその右列で分割する(VBA) (3)VBAでCSVレコード(各行)を読んで、データを列方向にセットする(VBA) (4)2007を使えるところを見つける。 (2)、(3)とも10数行で済むプログラムなのですが、VBAの経験が無ければ、できない。(1)もVBAを知っているものには、10数行のプログラムで済むので、それだけを公表するのも、と思ってあまり無いと思う。
- redowl
- ベストアンサー率43% (2140/4926)
似た質問と回答 http://q.hatena.ne.jp/1150805179
お礼
ありがとうございました。 参考にさせていただきます。
お礼
説明不足ですみません、CSVファイルがカンマ区切りではなくタブ区切りでしたので作っていただいたVBAではうまく処理できませんでした。参考にさせていただいて行列入れ替えのVBAをつくってみたいと思います。ありがとうございました。