EXCELのデータ容量に関する質問

このQ&Aのポイント
  • EXCEL2003を使っている際に、行の高さの設定をするとデータ量が大きくなることがあります。65536行まで設定すると元のデータ量のままです。
  • この現象は、行ごとに高さ設定をしているためと考えられます。質問者は設定を変更した部分のプログラムを見ることができないと述べています。
  • 容量を小さくしながら行の高さを変更する方法は、設定やプログラムの変更、またはVBAを使用することで可能です。
回答を見る
  • ベストアンサー

EXCELのデータ容量

EXCEL2003を使っています。 書式→行→高さの設定で行の高さを設定をするとき、例えばワークシートの最後の行(65536行)を残して設定すると、データ量が大きくなります。 (例えば約1.5Mとか) 65536行まで設定すると元のようなデータ量のままです。(14Kとか) ・何故でしょうか (多分1行づつ高さ設定しているのではないかと想像するのですが) ・設定変更をした部分のプログラム部分は見れないのでしょうか。 (EXCELのプログラムということになるかもしれません) ・容量を小さくしたまま、行の高さを変更する方法ないでしょうか。 (設定での方法か、プログラムの書き方の変更になるかと思いますが。あるいはVBAで組めば小さいまま設定できるとか・・・) よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>何故でしょうか そこまでのシートが発生するからです。 手順: まっさらのブックを用意する J25セルに123と記入する A1セルを選択する Ctrl+Endを押して「最後のセル」にジャンプする と,J25セルにジャンプします。 エクセルは現在,見た目上A1~IV65536までセルを表示していますが,メモリ上はJ25セル(付近)までしか,シートを「用意」していません。 手順2: 手順1を行った後,全てのセルを選択し,行高さを変更する Ctrl+Endを押して最後のセルにジャンプする 最後のセルが変化していないことを確認する 手順3: 改めてまっさらのブックを用意する J25セルに123と記入する 1行目から65535行までの行高さを変更する A1を選択し,Ctrl+Endを押す 65535行までジャンプする事を確認する。 エクセルは現在,メモリ上も65535行までのシートを「生成」しました。 ブックを保存すると,そこまでのセルの個数分のデータ領域が保存され,ファイル容量は増大します。 >設定変更をした部分のプログラム部分は見れないのでしょうか たとえばネットで「Excel Biff5」などのキーワードで検索してみると,関連する資料が多数ヒットします。 >容量を小さくしたまま、行の高さを変更する方法ないでしょうか。 アナタが既に試したとおり,全部の行の高さを変更するのが最も容量を小さくしたまま行高さを変更する方法です。 またここまでのお話しで明らかなように,必要な範囲だけの行高さを変更するようにしてください。

helpokwave
質問者

お礼

「そこまでのセルの個数分のデータ領域が保存され」るので、メモリ容量が大きくなったためということがよくわかり、すっきりしました。 ありがとうございました。 「BIFF」については、私にはハードルが高すぎるようです。ご紹介ありがとうございました。

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

推測になりますが、すべての行に同じ設定をする場合は、その書式条件のみ付加されたファイルサイズになるので、ファイルサイズがほとんど変わらないが、1行のみ残して書式を設定すると、すべての行の書式データを取得する必要があるためご質問のような現象になると考えられます。 対処法は、いったんすべての行の高さを同じ大きさに設定した後で、特定の行(例示のパターンなら65536行目だけの行の高さを変更してみてください。

helpokwave
質問者

お礼

早速のご回答ありがとうございました。 推測としては私も同じだったのですが、それを確認する方法はないものかと思ったもので。対処法も、試してみた結果からそういうことになるのですが、与えられたEXCELだったので、原因を知りたいと思った次第です。

関連するQ&A

  • Excelにデータをエクスポートする

    Access2003のクエリをExcel2003へデータエクスポートするのに、一行目の項目名を同じものにしておくと、既存の名前を付けたExcelブックの既存の名前を付けたワークシートにデータを書き込むことができていました。日々増えて行くAccessデータを抽出してExcelで利用するのに使っていました。 同じことをAccess2010からExcel2010へのエクスポートで実行すると、Excelブックが上書きされて、Excelブック内の他の既存ワークシートがなくなり、エクスポートされたデータのワークシートのみになってしまいます。 2003のときはエクスポートしてそのまま使えたのに、2010では手間が増えてしまいました。2010でも同じように、既存のワークシートに書き込むことをできないものなのでしょうか?

  • VBAのデータ抽出(間引き)について

    VBAのデータ抽出(間引き)について 当方VBA初心者なのですが、 VBA(EXCEL2007)を使用してグラフ作成をしようと思っています。 元データの書式は以下の通りでデータ行は30秒間隔で 一カ月分(8万行)あります。 2010/08/01 01:00:34     1112.83 2010/08/01 01:01:04     1110.43 2010/08/01 01:01:34     1111.87 2010/08/01 01:02:04     1112.23 2010/08/01 01:02:34     1112.43 2010/08/01 01:03:04     1112.03 2010/08/01 01:03:34     1110.83 2010/08/01 01:04:04     1112.43 2010/08/01 01:04:34     1110.63 ・・・ データ量が多すぎるので間引きしようと思っています。 間引き(抽出)条件は以下の様に考えています。 10行毎(5分毎)に値の最大値の行を抽出して別シートへコピー。 VBAマクロで処理するにはどの様な コードで実現可能でしょうか? 教えて頂きたく。よろしくお願いします。

  • Excel2007で書式と入力規則を固定したい。

    Excel2007で書式と入力規則を固定したい。 Excel2007でシートに書式や入力規則を設定して、 単純に行の削除で上にシフトをするとセルの値が 消えて、行をつめてくれるのですが、書式や入力規制 までもがつめられてしまいます。 値だけをつめて、書式や入力規制は残したままにしたいのですが、 何か方法はありませんか? やろうと思えば、その行の値を消してから、 行より下のセルをコピーして値のみ貼り付ける ということもできるのですが、頻繁にする作業なので、 もっとスマートにできるようにしたいです。 そんな操作方法があれば、お願いいたします。 もしくは、VBAで実現するならそのプログラムのヒントでも いただけたらありがたいです。 よろしくお願いいたします。

  • エクセルで行の高さ

    WINDOWS XP(Home Premium)でExcel2003を使用しています。 300行のデータに対し、エクセルで行の高さの自動調整をしました。 しかし、高さが一部不充分であり、印刷されると不備が多々あります。 行の高さを  「メニュー・書式(O)→行(R)→自動調整(A)」でおこなわれる高さの 1.2倍~1.5倍くらいの高さにしたいのですが良い方法はありませんか? おそらくマクロやVBAを使えば可能なんだろうなとは思いながら、 コマンドのことやプログラムを組み立てる知識が無いので、 VBAにこれを貼り付けろ、という提案を頂けたらすごく助かります。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • Excel VBAで他のExcelファイルのデータ取得

    Excel初心者です。 Excel VBAで他のExcelファイルのワークシートのデータを取得するのにはどうしたらいいのでしょうか。 よろしくお願いします。

  • データコピー貼り付けの仕方

    excel2010を使っています、VBA勉強中の初心者です教えてください。 随時データ量の変化するsheet1があります。 sheet1 A2からデータの入ってる最終行、R列までをコピーし、 sheet2 A列:R列まで、最終行に貼り付けをしたいのでご教授ください sheet1, sheet2ともに行1にタイトルがあります

  • エクセルデータのリンク貼付(?)

    ワークシート1は、データ入力用に使用し、月単位で初期化しています。 ワークシート2は、年間データ用に使用し、ワークシート1で入力したデータをすべて保持しています。 ワークシート1と2の形式・内容等は同じです ワークシート2は、使用上必ずデータの1行目(B6:H6)を表示させております。 行数が最終的には5000~7000行位になりますので、貼付位置を確定するのに大変な為、A列にオートフィルタで、入力済は1を未入力行は0を表示させ、A列が0の行を先頭に表示出来るようにしています。 今は、ワークシート1で入力したデータをワークシート2へ貼り付けていますが、このような設定で、下記のようにしたいのですが、ご指導のほどよろしくお願いいたします。 ワークシート1の入力したデータを、自動的にワークシート2の未入力行の先頭行に(値だけでも可)表示する。   ワークシート1     ワークシート2 (B6:H29)入力済  (B6:H29)入力済(表示済) 30行目入力 (B30:H30)    150行目へ  (B150:H150) 31行目入力 (B31:H31)    150行目へ  (B151:H151)

  • データの取り込みでやってみましたが・・・

    Excel側の[データ][外部データの取り込み][Accessデータベース]でやってみました。 既存のExcel2010ワークシートに設定された書式他をそのまま反映させるよう、 項目名を参照しながら同じ項目列に書き込んでくれることを期待しましたが、 結果は列の挿入でした。 別のシートを用意してそこに書き込み、目視で項目名を参照しながら既存ワークシートに値複写。 という以前と比べるとなんとも情けない作業をしています。 尚、話は戻りますが、 「Excel にデータをエクスポートする」Access Office.com http://office.microsoft.com/ja-jp/access-help/HA101819737.aspx に、 「データは必ず、新しいワークシートに追加されます。既存のワークシートや指定範囲にデータを付加することはできません。」 と残念なお知らせを見つけました。 「既存のワークシートや指定範囲にデータを付加する」機能は削除した! ということでしょうか?

  • VBAでExcelデータの加工方法について

    Excel VBAにて、データ加工するプログラムをご教授ください。 環境はWindows7 Pro Excel2010 添付データのsheet1をsheet2の状態にするロジックです。 ・sheet1、sheet2は別シート ・sheet1の列は最終行までという形 何行あるかは不明で連続したデータが入っている。

  • EXCEL2000 データの抽出方法

    EXCEL2000で、ワークシートに4行おきにデータ(数値)が入っています。 行は400行ほどあります。 これを、別シートに行を空けずに(1行ずつ)参照させたいのですが、 効率の良い方法をご存じの方、ご教授下さい。

専門家に質問してみよう