出産前後の痔にはご注意!

Excelにデータを1000行位入力し、中にIF関数とかを入れまくって、それでも、Fileサイズが2500Kb程度だったのですが、ある日、改訂版のFileを作ろうと、自分なりに技巧を凝らして、関数計算を増やしたり(場所により関数に関数を入れたり)、カラフルにしたり、シートの保護をしたり、離れたところに集計欄を付けたりしたとたん、急にFileサイズが10000Kbを越えて、職場のパソコンでは、単独で使うときは問題ないのですが、別のExcelと同時にFileが開かないくらいに、開く時とか、保存する時とかに時間がかかるようになり、使い物にならなくなりました。

私自信、Excelには随分と経験があり、(自称)職場の中のExcel先生なのに理由が分かりません。
いくら関数の量を増やしたといっても、最初の関数の量から考えて4倍にもなるほどには増やしていません。まさか、空白のセルまで全セルを保存するようになってしまった?関数の入れ子はデータを費やす?シートの保護をしない方がいい(シートの保護をしないと他の人に使わせる訳にはいかないのです)?

ご存知の方がいらっしゃったら教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Word や Excel は編集で元へ戻すための情報を保存しています。


そのため編集を繰り返すと結果の情報はさして増えてないのに
ファイルサイズがバカでかくなることがあります。

対症療法として、新しいブックを作り各シートをそちらにコピーして
保存します。その新しいブックのファイルサイズが大きくなければ
以後、新しい方を使います。

この回答への補足

休日の趣味で、何百回も編集を重ねて、関数だけで自前ソフトを目標にやってきました。
10000Kb以上のFileサイズがコピーしただけで、440Kbまで減少しました。
ありがとうございました。

補足日時:2010/11/29 00:30
    • good
    • 9
この回答へのお礼

本当に有意義な情報をいただきましてありがとうございました。
「なるほど」と手を打つような、私にとって盲点でした。

お礼日時:2010/11/27 13:32

シートの使用範囲を見てみましたか



Ctrl+ End でどこにセルが飛ぶでしょうか。

データは1,000行しか入ってないのに、ものすごい下の行まで使用されていることになってて、
非常に重くなった経験が私はあります。

その最終行から、1,001行目までを選択して削除、その上で、ファイルを上書き保存すると、一気に容量が正常に戻ります。


データの加工などをしてる際に、Ctrl + Shift + ↓ などで誤って行きすぎた行まで選択しちゃったりしてることがあります。
そういう意味では、右端の列も不要なところまで使用されてないか見てみましょう。

この回答への補足

実験の結果440Kbが350Kbになりました。

補足日時:2010/11/29 00:26
    • good
    • 10
この回答へのお礼

シートの使用範囲を調べるには、Ctrl+Endですね。
ありがとうございました。試させていただきます。

お礼日時:2010/11/27 18:00

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルファイルの容量が大きくなる要因

バザーの品物を確認するために、エクセルシートで集計作業をしています。


「品目・個数・単価・小計」の行が100行ほど、
さらにそれを合計するという比較的簡単なものですが、日々追加されていくのである程度の区切りごとにシートをコピーして日付ごとに新しく作っていました。

例えば、10月1日のシートをコピーして新たに10月8日分のシートとしてそちらを更新していくという感じです。

1つのエクセルファイルにそのような手順で7シートほど作っていたら、ファイルを開くのが急に重くなってきてしまい、時にはエラーが出て作業が出来なくなりました。

別のエクセルファイルに作り直すことにして今のところ2シートほどのもので作業する分には特にファイルを開くのが遅いということもなくなりました。

ファイルサイズをみると、
 7シートのもの・・・18,903kb
 2シートのもの・・・88kb
と多少シートごとのデータが異なるにしても、重たいほうのファイル(7シートの方)シート枚数の比率をはるかに超えた容量となっていました。
何か要因があるかと思い、2シートの方のファイルでは、文字列と数値を改めて入力しなおし、新たに計算式などは入力しなおして、極力シンプル(強調や網掛けなどを省いた)に作るようにはしています。


今後の作業では無用にファイルサイズが大きくならないように気をつけたいのですが、ここまでの差が出るのは何が原因なのかよくわからず困っています。

単純に入力データ=ファイルサイズではないとは思うのですが、入力したデータ以外でファイルサイズが重くなる要因というのは何が考えられるでしょうか?
以下のもの、またはそれ以外に影響が大きいと思われるものがあればアドバイスいただけたらと思います。

数式(”sum”、”+”、など)
装飾(フォント、網掛け、太字、罫線、など)
ヘッダー、フッター(シート名、ページ数、日付、など)

よろしくお願いします。

バザーの品物を確認するために、エクセルシートで集計作業をしています。


「品目・個数・単価・小計」の行が100行ほど、
さらにそれを合計するという比較的簡単なものですが、日々追加されていくのである程度の区切りごとにシートをコピーして日付ごとに新しく作っていました。

例えば、10月1日のシートをコピーして新たに10月8日分のシートとしてそちらを更新していくという感じです。

1つのエクセルファイルにそのような手順で7シートほど作っていたら、ファイルを開くのが急に重くなってきてしまい、時に...続きを読む

Aベストアンサー

みえないオブジェクトが大量にあるかもしれません。
各シートごとに下記を試してみてください。

ただし、一括削除すると必要なオブジェクトも消えますので、図や電子印など
使用しているものをあらかじめ把握しておいて下さい。

 1.「編集 → ジャンプ」から「セル選択」ボタン
 2.「オブジェクト」にチェックを入れて「OK」ボタン
 3.シート内の全てのオブジェクトが選択されるので「Delete」キーで削除

参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1110457961

QExcelファイルのサイズがなぜか巨大になる

Excelで、ごく小さな範囲での作表しかしていないのに、
ファイルサイズが巨大になってしまいました。
(どう見ても数十KB程度くらいにしか見えないのですが、
 実際には6MB程度になってしまいます。)
これはなぜなのでしょうか。

大部分を占める空白セルを選択して削除をしてみたのですが、
ファイルサイズは変わりませんでした。

Accessファイルであれば「最適化」とかいうコマンドがあって
無駄なサイズの縮小ができるのは知っているのですが、
Excelファイルで同じようなことはできないものでしょうか。。。


ご回答のほど、よろしくお願いします。

Aベストアンサー

図形(特に未記入のテキストボックス)とか使ってませんか?
セルのコピー時に図形も一緒にコピーされるとそのようになります。
オブジェクトの選択(図形描画ツールバーの白い矢印のボタン)で
範囲を矩形領域で囲んでご確認ください。
不要な図形が一杯貼りついてると思います。

Qエクセル2010 書式が多すぎて追加できない。

計算の量が増えてきたためブックを分けて
マイクロソフトのサポートを読みながらフォントなども統一して
極力書式を増やさないようにしているのですが、
1Sheetしか作っていないのに
書式が多すぎるて追加できません。と出てしまい
他のブックからの文字、数値のコピーが出来ません。
他のブックとフォントなどはそろえています。

参考になるサイトも見つからず困っています。
どうぞよろしくお願い致します。

Aベストアンサー

2007(2010でも同じ?)の場合、制限数は、64000のようですのでこれを超えるケースは、少ないと思いますが???
スタイルが壊れたものがあるのかもしれませんね?
http://www.excel-img.com/system01.html


>参考になるサイトも見つからず困っています。
以下のサイトは、見られたのでしょうか?
http://www.no-dash.com/2009/09/01-2034.html
このサイトでやったやり方の一つの例が
http://blog.tan-w.net/archives/1763

もう一つ下記のソフトがあります。
2007では、使えるようですが、2010では???
http://www.vector.co.jp/soft/win95/business/se411987.html

以上はいずれもバックアップを取った状態で実行のこと。

>他のブックからの文字、数値のコピーが出来ません。
このコピー→貼り付けの場合、「形式を選択して貼り付け」→「値」で張り付かないのしょうか?

このトラブルは多いようなので是非、解決された場合は、どんな方法で解決されたのかを記述されるように・・・
他の方の参考になります。

2007(2010でも同じ?)の場合、制限数は、64000のようですのでこれを超えるケースは、少ないと思いますが???
スタイルが壊れたものがあるのかもしれませんね?
http://www.excel-img.com/system01.html


>参考になるサイトも見つからず困っています。
以下のサイトは、見られたのでしょうか?
http://www.no-dash.com/2009/09/01-2034.html
このサイトでやったやり方の一つの例が
http://blog.tan-w.net/archives/1763

もう一つ下記のソフトがあります。
2007では、使えるようですが、2010では???
http:/...続きを読む

QExcel)軽いデーターのはずなのに、メチャメチャ重い!

こんにちは。
会社の共有フォルダーに「見積り書」というエクセルファイルがあります。
従業員はそれを各PCにダウンロードして、それぞれが見積りを作ります。
ある日をきっかけにめちゃめちゃこの見積りが重くなりました。
このたった1枚の見積りなのにサイズは4MB。写真、画像、マクロ、一切ありません。
それならまだ許せるのですが、、開くのにかーーーーなり時間かかります。5分以上はかかります。

「誰が触った!」「どう触った!」など調べるより新しく作り直そうと試みました。

なんとか10分ほど待って開きました。
そして7列x20行ほどのセルを囲んで「Ctrl」+「C」を押してコピーして、その新しいエクセルに貼付けようと試みました。
ところがコピーした段階でまた「応答無し」なります。
この症状は1人を除く従業員全員、しかもこの見積りだけです。あとはスイスイ開きます。
どれかのセルにゴミのようなデーターが入ってしまってるのでしょうか。
何が原因でしょうか?考えられるものを挙げていただけましたら幸甚です。

Aベストアンサー

コメントでも大量に入力されたのでしょうか。コメントの付いたセルはセルの右上に赤い三角マークが付くので見た目で分かります。コメントってテキストだから容量は大きくならないと思っていたんですけど、入れると凄く大きくなるんです。びっくりしました。

入力されている数式や書式を諦められるなら、他のbookからその問題のbookを参照してはいかがでしょう。値だけを参照するだけですので不要なものは一切付いてきません。
問題のファイル(Book)をBook1とした場合、Book2のA1セルに
=[Book1]Seet1!A1
と入力して必要な範囲までコピーします。
そののちに、Book2のseet全体をコピーして、「形式を選択して貼り付け」から「値」を選んで同じ範囲に上書き貼り付けすると良いです。
あとは正常に開ける人のパソコンの画面を見ながら数式や書式を設定してみてください。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVBAを何回も作り直して、容量が増えた

VBAを使って、シートにデータを書き込むことをさせていたのですが、
VBAの修正、データを消去して書き込み、を何度も繰り返してしたら、
容量が12MBになりました。
データの量や、VBAのコードの量は、たいしたことはありません。
ACCESSの最適化?のような、
何か容量を軽くする方法はあるのでしょうか。

Aベストアンサー

こんばんは。

VBAの場合は、設定によりますが、コードの中間言語が保存され、修正されたあとに再び上書きされずに保存されるので、サイズが膨らんできます。

ツール--オプションで、コンパイルの方法を、順次コンパイルに換えてあげればよいのではないかと思います。ヘルプに出ていますが、その都度、コンパイルされますから、マクロのスピードは落ちます。そういう場合、「バックグラウンド・コンパイル」にしておくようにします。

それで、変化しないのでしたら、VBAプロジェクトを全て、テキストファイルとして、エクスポートして、マクロなしで保存します。そして、再び、再インポートして配置します。(そのようなツールがあります。私は使ったことがありません。)

http://www.vector.co.jp/soft/win95/business/se421185.html
RefreshExcel
Excel ファイルをすっきり、スリムにしよう
Excel ファイルを再構成してファイルサイズを縮小します

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング