• ベストアンサー

列数が4000を超えるcsvファイルをExcelで読み込むには?

横に4000くらいカンマで区切られたcsvファイルがあります(各々は数値)。Excelで列数の限界は256かと思われますが、それ以上の列数のファイルを扱うことは可能でしょうか?目的は、個別にグラフデータの数値として認識させたいのです。 その他扱えるツールがあるようでしたら、そちらもお教えいただければうれしいです。プログラム等での縦横入れ替えは、この度は除外させてください。 言葉足らず、不適切な表現はお詫び・補足いたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >プログラム等での縦横入れ替えは、この度は除外させてください。 現行の256列で、物理的には、そのままインポートするのは常識的に不可能です。もし、現行の256列にインポートするなら、正規表現付きのテキスト・エディタで、改行コードを入れればよいのでは?それがダメなら新しいExcelを購入すればよいのではありませんか? もう少し基本的な話になるけれども、それは、シーケンシャルファイルなど、コンマ切り(CSV)テキストファイルでも、通常取り扱うCSVでも、似ていて非なるものだと思うのです。いわゆる原始型のデータ・ソースです。もともと、そういうデータを、そのままインポートする機能は、Excelにはありません。VBAを使用不可とするなら、Excelの外部データのインポート機能で、ODBCを利用して、CSVファイルをデータベース用に置き換えてインポートすることは可能かもしれませんが、私はやったことがありません。 また、データベース用のソースを加工するフリーソフトウェアが、「窓の杜」に出ていたと思います。 私は、いままで、どこでも同じ質問が何度もみましたが、みな同じような質問で、ひとつも、Excelで解決したというのをみたことがありません。それは、データの種類が違うからなのです。

sanakazu
質問者

お礼

早々のアドバイスをありがとうございます。 結論としては「そのままでは無理」ということで、テキストエディタを使用して数行ごとでいくつかに小分けし、カンマを改行と置換して行として読み込ませる作業を数回繰り返して事なきを得たようです。 その程度で対処できるボリュームで良かった、と言っておりました。私も当事者も、こちらで後半に回答いただいた内容では少々理解不足な点がありました。今後の対応策として、また研鑽も含めて近日トライしたく思います。 懇切丁寧なアドバイスに感謝いたします。

その他の回答 (1)

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

Excel2007にバージョンアップすれば列数が16,384まで扱えます。

sanakazu
質問者

お礼

早速のアドバイスをありがとうございます。 2007ですか・・・。非常に有意義な情報なのですが、当面購入は無理でしょう。同僚が、いま何とかしたいようなのです。 気づきましたが、アイコンがレベル2(困っています)ですね。レベル3(今すぐ回答)にしたつもりなのですが・・・。

関連するQ&A

  • csvファイルのデータ列数を取得したいのですがうまくいきません。

    csvファイルのデータ列数を取得したいのですがうまくいきません。 VB2010、StreamReaderでファイルを読み込み、 以下のコードで列数を取得してみたのですが、 数値変数の「列数」に7が入ります。 実際は3列しかありません。 SR.ReadLine()で読み込んだデータ右端部にいらないカンマがいくつか並んでいました。 列数 = UBound(Split(SR.ReadLine(), ",")) どう修正したらよいでしょうか。 また、csvファイルのデータ列数を簡単に取得する方法はないでしょうか? 教えてください。 お手数をおかけしますがよろしくお願いします。

  • csvファイルを列数ごとに分割するExcelマクロ

    csvファイルを列数ごとに分割するExcelマクロが書けずに困っています。 これがないため作業が遅くなり困っています。 横に長い(列数が多い)csvファイルを指定した列数ごとに分割して複数のcsvファイルに分けたいのですができません。 行数ごとに分割して複数のcsvファイルに分けるExcelマクロは調べると複数出てくるのですが... 何かいい方法はないでしょうか? 以下がコードです。 https://yu-syan.sakura.ne.jp/?p=87 たぶんLine Input # ステートメントで行数ごとに読込している部分を列数ごとに読込すればできると思うのですがその動作をするステートメントが無いため困っています。 http://officetanaka.net/excel/vba/statement/LineInput.htm 以下がcsvファイルです。 https://drive.google.com/file/d/1W0O4R10ibNVRnzDzeZ9AKSRT9gueS3GZ/view?usp=drive_link #VBA #Excel #マクロ #csv #データ処理

  • CSVをExcelに変換したい

    お世話になります。 CSVファイルをExcelファイルに変換する場合、CSVファイルをExcelで開いて拡張子を「xls」もしくは「xlsx」を指定して保存すればよいかと思いますが、PCにExcelがインストールされてない環境の場合、Excelに変換することは不可能でしょうか。 今回、Accessにてツールを作成し、CSV(カンマ区切り)のデータを読み込もうとしておりますが、そのデータの中には単語の中にカンマが含まれているものがある為、普通にCSVをインポートしようとすると、ズレてしまいます。 なので、インポートする前準備としていったんExcelに変換したいと考えているのですが。。そのPCにExcelがインストールされてないと、やはり変換することは出来ないでしょうか。 もしくは、カンマ区切りのCSVファイルをタブ区切りに変換したりすることは出来ますでしょうか。 ご教授の程、宜しくお願い致します。

  • CSVデータ集計プログラムをおしえてください

    エクセルでは対応し切れないCSVファイル数値測定データ(65500個以上)があります。ある程度狭い範囲の値の数値が不規則にカンマ区切りで連続していてグラフにすると横に波のようにいくつもの山と谷が連続するかんじです。この数値郡に下限値を自由に変えられるようして設定し下限ラインから上に出た山毎の最大値を拾い出す。というプログラムをVBAで作りたいのですが、うまく出来ません。今はCSVデータをVBで開き、新たなファイルへ移せるところまで出来たのですが。その後が複雑すぎてわかりません。データが100万位になるのでVB単体で作ってます。助けてください(;o;)

  • タブ区切りtxtファイルをCSVファイルにしたい

    数値データの入ったタブ区切りのテキストファイルが約80個あり、 それらを全てCSVファイルにしたいです。 テキストファイルのデータ形式は以下のようになっています。 339.54 1091.50 339.92 1091.50 340.30 1091.50 340.68 1057.60 341.06 1028.22 これがあと数百行あります。 コマンドプロンプトでCSVにリネームすると、数値が詰まってしまい、困っています。 例えば上のデータ例であれば、 339.541091.50 のように表示されたCSVファイルになってしまいます。 339.54, 1091.50 のようなカンマ区切りのCSVファイルとして出力する方法はないでしょうか? VBAの知識が少しだけあるので、それを使った方がいい場合は教えて頂けると幸いです。 よろしくお願い申し上げます。

  • csvファイルが保存すると数値が変更される

    CSVファイルについてですが、商品コードが14桁あるのですが、保存してから あらためて開くと数値が変更しています。 なにか解決方法はないでしょうか。 例  変更前 30000000414781 変更後 30000000000000 商品コードのためカンマなどはつけることができません。 ファイル形式はcsvでしか読み込みできない仕様です。 どなたかわかる方がいましたら、よろしくお願いいたします。

  • CSVファイルのエクセル取込(VBA)で小数三位が消える!?

    エクセルにCSVファイルから読み取りをするVBAで下記のように記述しています。 Sub CSV読取り Dim FName As Variant FName = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv") Open FName For Input As #1 For i = 1 To 400 Input #1, Columni ThisWorkbook.Sheets("CSV取得").Cells(i, "E").Value = Columni Next i Close #1 End Sub これでほとんどのデータ(数値や文字列の400件)をうまく読み取るのですが、どういう訳かデータが小数点以下第三位まである数値の場合、エクセルに取り込まれた段階で小数点以下第二位までに四捨五入されてしまうようです。 そのうえ、エクセルのセルの表示形式がそこだけ通貨(¥マーク付き)になっています。 なぜでしょうか? またどうしたら正しく小数3位まで読み取れるのでしょうか? CSVファイルをエクセル単純にエクセルで開けばちゃんと小数三位まであるのですが、データが横一列にカンマ区切り400件あるので256列しかないエクセルではすべてとりこめません。(だから上記のマクロで縦に変換してとりこんでいるのですが) 非常に困っています。

  • csvファイルの読み込みで失敗します

    以下のようなソースでカンマ区切りのテキストファイルであるcsvファイルの行数、列数、要素数を取得するプログラムを作っているのですが、終わりのメモリ解放であるdelete []strのところでプログラムが落ちてしまいます。範囲外のメモリにアクセスしてしまっているのかと思いますが、ミスを特定できないので、教えてください。 読み込むcsvファイルには以下のような小数の値が入っています。 0.23960810421811729043, 11.753428210139766463, …(省略) , 3.8736893050771881164 int main( int argc, char **argv ) { int csvRowNum, csvColNum, csvElemNum; GetCSVDataNum ( "C:\\Data.csv", csvRowNum, csvColNum, csvElemNum ); return 0; } // csvファイルから行数、列数、要素数を取得する int GetCSVDataNum ( char *csv_name, int &rowNum, int &colNum, int &elemNum ) { FILE *fp; fp = fopen( csv_name, "r" ); if( fp == NULL ){ printf( "ファイルオープンエラー\n" ); exit(1); } // ファイルサイズの取得 int fsize; fseek( fp, 0L, SEEK_END ); fsize = ftell( fp ); // ファイルシーク位置を先頭に戻す fseek( fp, 0L, SEEK_SET ); // ファイルサイズに合わせて文字列領域確保 char *str; str = new char[fsize]; char buf[10000]; // ファイルから1行ずつテキストデータを読み込み、 // 連結してbufに格納する str[0] = '\0'; while ( fgets( buf, sizeof(buf), fp ) != NULL ) { strncat( str, buf, strlen(buf) ); } int countSep = 0; // '(カンマ)の数のカウント int cols = 0; // 各行の列数をカウント int countNL = 0; // 改行の数をカウント // 要素数、行数、列数の取得 for ( int i = 0; i < (int)strlen(str); i++ ) { switch( str[i]){ case ',': countSep++; cols++; break; case '\n': countNL++; cols++; // 各行で列数が異なるときは、最も大きい列数とする colNum = (colNum > cols ) ? colNum: cols; cols = 0; break; default: break; } } rowNum = countNL; elemNum = countSep + countNL; // strの解放で落ちる delete[] str; fclose( fp ); return 0; }

  • EXCEL- VBA(CSVファイル→インポート)

    A列~F列になる複数(100個以上)のCSVファイルをエクセルファイルにインポートして更に個別にエクセルファイルとして保存したいのですが VBAでできるのでしょうか? 記憶マクロでやったらどうにもうまくいきません。 エクセルのVBAについては ほとんど知識ゼロなので困っております。 大変厚かましくありますが どなた様かご教授お願いできたらと思います!! 【元のファイルの状態】   ◆ファイル名「*.CSV」*は文字数それぞれ違います。   <例:tanaka.xls だったり 09福島.xls>  ◆入っているドライブ   TEXT;C:\Documents and Settings\AA_B\デスクトップ\練習  ◆A~F列にデータが入っている 【やりたいこと】    (1)A~F列はカンマ区切りで全て文字列としたい  (2)元のファイル名でエクセルとして保存したい「*.XLS」

  • CSVダウンロードファイルをEXCELで表示する

    CSVファイルをダウンロードすると、ダイアログボックスが表示され、「開く」「保存」「キャンセル」の3つのボタンが表示されます。 「保存」してからEXCELで開くとカンマで区切られたデータが、各セルに1つづつ入った形で表示されますが、「開く」ボタンを押すと、EXCELが起動して、一番左側のセルに「"XXXX","xxxxx","AAA"」のように表示されます。 保存してから開いたときと同じように「XXXX」「xxxx」「AAA」が各セルに入って表示するにはどのように設定をすればいいのでしょうか。 現在の設定は、エクスプローラの「ツール」>「フォルダオプション」>「ファイルの種類」から、拡張子CSVのときはEXCELで開く設定をしています。 よろしくご教授ください。

専門家に質問してみよう