エクセルシートのメモリ節約方法とは?

このQ&Aのポイント
  • エクセルシート作成時に8000行の大量データをオートフィルでコピーする際にメモリ不足エラーが発生している。セルの書式設定を見直し、無駄なメモリ消費を減らす方法を探している。
  • 特に、セルの内容が1または0しか表示する必要のない場合や小数点以下第2位までの計算しか必要のない場合に、書式を適切に変更することでメモリ消費を減らすことができる。
  • 他にも、巨大なワークシートを作成する方法についても知りたい。
回答を見る
  • ベストアンサー

セルの書式設定でメモリを節約できますか。

 約3メガバイトのエクセルシートを作成しています。 行数が8000行,列が約100列という巨大なものです。 シートの計算式などは単純ですので,オートフィルでコピーしていくのですが,オートフィルで8000行までコピーしようとするとエラーメッセージが出てしまいます。  おそらく,メモリが不足しているのではないかと考えています。  そこで,ワークシートのメモリ消費量を少しでも減らそうと考えています。思い当たるのは,セルの書式設定です。  私は,通常,セルの書式設定では,「標準」を利用しているのですが, セルの内容になっては,1または0しか表示する必要のないセルもあります。 また,数値を計算するにしても,小数点以下第2位までしか,計算させる必要のないセルが大半です。  このようなセルについて,書式を「数値」にして,「小数点以下の桁数」を少なくすれば,メモリの消費量を減らすことができるのでしょうか。  また,上記以外の方法により,巨大なワークシートを作成することができるのでしょうか。以上よろしく教示願います。

  • nelton
  • お礼率60% (296/489)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>書式を「数値」にして,「小数点以下の桁数」を少なくすれば,メモリの消費量を減らすことができるのでしょうか。 書式の種類を増やすと逆にメモリを食いますのでご注意ください。 http://hp.vector.co.jp/authors/VA016119/delxf.html 下記のサポートで「使用可能メモリ」と「システム リソース」に依存となってる項目を減らすよう調整してください。 「ワークシートとブックの仕様と制限」 http://office.microsoft.com/ja-jp/excel/HP100738491041.aspx?pid=CH101030621041

nelton
質問者

お礼

 書式の種類を増やすと逆にメモリを消費するということは意外でした。 大変参考になりました。有難うございます。  また,書式に限らず,「使用可能メモリ」と「システムリソース」に依存する項目を極力減らすということは,結局において,テクニックを使用しない非常にシンプルなワークシートを心がけるということですが,このシンプルイズベストという観点も非常に新鮮に感じます。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

[回答番号:No.1この回答への補足]へのコメント、 》 用済みの数式を値に確定する方法として考えられるのは,計算の済 》 んだセルを値だけ他にセルにコピーするという方法だと思います 違います。それではファイルサイズが増えるだけです。「計算の済んだセルを値だけ」自身の「セルにコピーするという方法」です。それが数式の数を減らすことになります。 論より証拠、実験してみました。 1.範囲 A1:EF1 に数値 1、2、3、…、136 を入力 2.範囲 A2:F8000 の各セルに 1~9 の数値をランダムに入力 3.「簡単な条件式」もない「足し算だけの計算式」=G$1+A2 をセル   G2 に入力 4.セル G2 を右方に(セル EF2 まで)ズズーッとドラッグ&ペース   ト 5.範囲 G2:EF2 を下方に(8000行目まで)ズズーッとドラッグ&ペー   スト 6.このブックを mshr1962A という名前で保存 7.データ範囲内の任意のセルを選択 8.[編集]→[ジャンプ]→[セル選択]を実行 9.“アクティブセル領域”に目玉入れ 10.Ctrl+C をパシーッ 11.[編集]→[形式を選択して貼り付け]を実行 12.“値”に目玉入れ 13.[OK]をクリック 14.このブックを mshr1962B という名前で保存 ブック名   ファイルサイズ mshr1962A   31.9MB mshr1962B   6.5MB ← 5分の1に激減!

nelton
質問者

お礼

 詳しい説明を有難うございます。わざわざ,実験までしていただき恐縮します。  さて,mike_gさんの回答にあります, 9 アクティブセル領域に目玉入れ 10 Ctrl+Cをバシーッ 11 編集→形式を選択して貼り付けを実行 のところですが, この部分で,つまずいてしまいました。  できれば,操作の原理なども含めて教えていただければ幸いです。  加えて,このような操作を行うとした場合,1行データ入力するたびに 手動で 数値に確定するという作業を行うことになると思うのですが, 自動的に行う方法というのはないのでしょうか。  以上,よろしくお願いします。

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

下記はだいぶ古い資料ですが,今のエクセルでも問題なく適用される基本事項なので参考にしてみてください。 [XL97]メモリを節約するワークシートの作成方法 http://support.microsoft.com/kb/405485/ja そんなに新しい発見は,多分あまり無いと思います。 この中で「書式で節約」の記載もありますが,これで触れられているのは「数式で」たとえば =SUM(C2:C10)&"円"のようにして「50円」などと実データを結果に示す式をずらり並べるよりは,同じ数のセルを書式で「#円」と表示させた方が節約ですと言っています。 #ご相談の着目の出発点が「メモリ不足の疑い」から始まっていますので色々説明が寄せられますが,そもそも「どんな不都合」が起きているのか「具体的な症状」を挙げて改めてご相談を投稿し,どこに着眼すべきかもまた皆さんのアドバイスを求めてみてはいかがでしょう。

nelton
質問者

補足

 非常に親切なアドバイスありがとうございます。  さて,具体的には,作成したワークシートは,ブックに1枚だけです。 列は,EF列まで 行は,8000行のワークシートです。 列のうち,14列は,シートの表を見やすいように色だけつけた列です。 また,6列は,数値のみを入力している列です。 その他の列は,すべて簡単な計算式が入っています。簡単な条件式と足し算だけの計算式がほんどです。 そして,1行目は,見出し行で, 2行目から8000行目までは,すべて同じ数式で,上の行を基準として計算して下の行が計算されていくという形です。つまり,オートフィルで8000行までコピーしたものです。 最終行の計算結果を求めたいものですから,2行目から8000行目までの入力された数値は,すべて8000行の計算結果に影響を及ぼすということになります。  このワークシートは,2行目から定期的に,数値が書き加えられて,最終的には8000行まで計算していくというものです。  とりあえず,メモリをだましだまし,ワークシートを8000行までコピーしていったところ,ワークシートファイルの容量は,11メガバイトになっていました。  このようなワークシートを安定的に運用できるのかということが非常に心配です。  ちなみに,私が使用しているパソコンは,Winodws Vista 32bit メモリ2ギガ,CPUは,コアデュオの2.4GHzです。

noname#204879
noname#204879
回答No.1

用済みの数式は値(アタイ)に確定して、極力数式の数(カズ)を減らすことです。

nelton
質問者

お礼

 早速の回答有難うございます。  さて,用済みの数式を値に確定する方法についですが,何か参考になるホームページ等がありましたら,御教示ください。

nelton
質問者

補足

 用済みの数式を値に確定する方法として考えられるのは, 計算の済んだセルを値だけ他にセルにコピーするという方法だと思います。  しかし,これでは,手動となってしまい,非常に手間がかかります。  最新の計算結果だけを,計算式の入力させていないあるセルに表示させることができれば,非常にありがたいのですが,そのような方法はあるのでしょうか。

関連するQ&A

  • エクセルオートフィルで書式を変更しないやり方

    エクセルのオートフィルで、元の書式を変更しないで、数値や数式だけをコピーするやり方はありますか? 複雑な罫線や、セルのところどころに色をつけた表の場合、上からフィルすると元のセルの書式に全部なってしまうので、いちいち直すのがとても面倒です。 オートフィルでなくても、書式を変更しないで一気に何行分もの数式をコピーできればいいのですが。お願いします。

  • セルの書式設定

    VBAで時刻の列を別シートにCOPYしたところ、 セルの書式設定まではコピーされず、 ハチャメチャな数字が表示されてしまいました。 セルの書式設定もコピーできないでしょうか? Sheets("Sheet3").Columns(1).Value = Sheets("Sheet1").Columns(1).Value でやってます。

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

  • セルの書式設定で12,345.6人と12,345人の両立は?

    エクセル2000です。 セルの表示の書式設定で、例えば計算結果が 12345なら12,345人 12345.6なら12,345.6人 12345.67なら12,345.67人 と表示し、セルは数値のままにしておきたいのです。 セルの書式設定で、G/標準"人" とすると、整数と小数点についてはそのようになりますが、桁区切りのカンマは出せません。 カンマを出すために、#,###.##"人"とすると、整数値の場合、12,345.人と、不要な小数点がでてしまいます。 どうしたらよいのでしょう?

  • EXCEL2007でセルの書式が勝手に変わっている

    会社でエクセル2007を使用していますが 保存したファイルを再度開くと、保存時に書式が標準であったセルや 数値であったセルが、全て日付に変わってしまいます。 特に変わった操作はしていないと思うのですが・・・ 保存形式は2007のxlsxです。 A列からBA列までの53列X1500行の表で 関数はSUMなどの合計(10列x1000行、書式は会計)と、 商品名表示の参照関数(1列X1000行、書式は標準)と 売上月の振分に配列関数(12列X1500行、書式は会計) 程度入力してあり、 他は入力規則でリストから選ぶ列(書式は標準、数値) のみのシート内容です。 そのシートが合計9シート有り、他にリスト用のシートと 9シート分の集計シートが1シートの構成です。 ファイルサイズは約7MBです。 説明できる内容はこの位になってしまいますが 何か原因が判ればご教示お願いしたいと思います。 よろしくお願いいたします。

  • 複数セルに対しての条件付書式設定

    条件付書式を設定する場合、一つのセルを選択して、「セルの値が」「~より大きい」という風に設定し、あとはコピーをすると列全体に条件付書式が設定されますよね。 これは一つのセルを指定して設定した場合、うまくいくんですけど、例えば、それぞれの列に対して条件付書式を設定したい場合、「1列目は小数点なしの設定」、「2列目は小数点第2位まで表示する設定」、「3列目はパーセンテージ表示」という風に各列ごとによっていろんな書式が設定されていた場合、1列目に条件付書式を設定したものの、2列目以降は書式のコピーではうまくいきません。 とても大きな表の場合1列ずつ条件付書式を設定していくことはとても大変なのです。 なにかいい方法はありませんか?

  • エクセルでセルの書式設定が表示されないことがある

    エクセル2002で,書式->セルででるはずの,書式設定画面がでません。無反応です。 同じシート内でも,書式設定も値の入力していないセルでは,設定画面はでます。 入力しているセルには,条件付き書式で色を偶数行・奇数行で変えています。また,折り返して表示にしてしています。 また,いつでも起こるというわけではなく,だたし一度起こると,元には帰りません。 新しいシートに,シート全体を値のみコピーして,書式設定を改めてやると,治ったのですが,また同じ症状がでてきました。

  • EXCEL2007でセルの書式設定ができません。

    いつも対象のセルを選んでから、右クリックでセルの書式設定を選び、罫線やフォントの種類を変更しているのですが、今作っているブックでは右クリックをしてもセルの書式設定が選べません。 このブックは、仕事で使っているもので、様式が決まっており、ある人が作ったシートに私が文字を入力していくようになっているものです。 きっとこのブックを作った人が何か指定をして私が勝手に罫線なんかを変更できないようにしているのだと思うのですが、他のワークシートからデーターをコピーして貼り付けて使おうと思っているので、変更したいんです。 コピーして使おうと思っているワークシートは罫線とかフォントが違うので、変更しないといけないんです。 初歩の質問かもしれませんが、どうしたらいいか教えてください。

  • セルの書式数について

    Excel2002で、複数ブックからシートをコピーしてきて、ひとつのプックまとめているのですが、途中で「セルの書式が多すぎるため、書式を追加できません。」というメッセージが出てシートをコピーできなくなりました。 調べてみると、セルの書式の組み合わせの上限が約4000であるということがわかりました。 しかし、どのシートがどのくらいのセル書式を消費しているのか不明なため、適切な対応ができません。あるひとつのブックが現在どのくらいのセル書式を使用しているのか知る方法はありませんでしょうか。 ==>(理由)特定のひとつのブックだけ極端に多くの書式が使用されているとすると、そのブック(コピー元)のみをチューニングすればよいと思うため。つまりどのブックをチューニングすれば良いかを知りたいのです。 よろしくお願いいたします。

  • エクセル数値の書式設定について

    エクセルの書式設定は、例えば少数点以下を表示する場合ツールバーの桁数変更とセルの書式設定のユーザー定義やそうでない0.0などのものがあります。違いはあるのでしょうか。又違いがある場合それによって オートフィル等の検索時に影響は出ますか。又、数値計算で合計を出す等の計算上は関係ないのでしょうか。

専門家に質問してみよう