<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--Excelのワークシートを全部使ってみる。1/2
  1  2



Excelのワークシートを全部使ってみる、という、Accessとは何の関係もなさそうな試み・・・。
でもなぜか巷では大評判。「バカなことやる人がいる、暇人だ」と。キー!!余計なお世話よっ


人はなぜAccessを用いるのか・・・。

会社で言われたから?う、うん。そうですね。そう。わたしもたいていそうです。
いや、そういうことじゃなくて・・・。

とあるコンピュータ用語辞典の中の、「データベース管理システム(DBMS)」の解説の中に、「代表的なものに、UNIX系ではOracle、パソコンではMICROSOFT Accessが挙げられる」とありました。AccessはDBMSの代表的存在にまでなっているのです。

前のテーマで、ExcelとAccessの使い分けみたいなお話を書きました。それはそれでわたしの中ではひとつのボーダーラインになってるんですけど、今日はそれ以外に「データサイズ」に注目してみようと思います。
Accessはですね。パソコンソフトには珍しいタイプの「データの管理方法」を取ってるんです。といっても所詮はパソコンソフトで作ったファイルに過ぎませんけどね。でも、「レコード単位の管理(正確にはページ単位だそうですがまあレコード単位と考えちゃってもいいのかも)をするのです。


こんなことは言わずもがなですが、コンピュータの中に入力したものはすべてどこかに「記憶」させておかなければなりません。パソコンの中には大きく分けて2通りの記憶場所があって、ひとつをメモリ(主記憶)、もうひとつをディスク(補助記憶)といいます。この際、フロッピーディスクも後者の方に入りますね。

時代は変わって、パソコンの性能はかなりアップしましたけど、この記憶域の関係は今も昔も変わらないです。で、パソコンの画面に映っているものはすべて「メモリ」に記憶されているものなのです。
メモリとは、横5センチ、縦1センチ、厚さ2ミリほどの、薄いクシのような形をした黒っぽい板です。これがパソコン内のマザーボードにぶっささって認識されて、初めて活動を開始します。こいつの特徴は要するに「読み取り書き込みがすばやい」ってこと。でもって「電源が切れたらリセットされる」ってことです。

画面から文字を入力するとき、入力した文字が画面になかなか反映されないのではぜんぜん仕事にならないですよね。入力したものはずっと画面に表示されていくと思います。

これも、メモリというものの中にどんどんすぱすぱ書き込まれていくから。Wordを起動したり、Excelを起動してウィンドウが開いているのも、メモリの中にWordやExcelのソフトが読み込まれて「お仕事どーんといらっしゃい」状態になるからですね。



で、開いてきたウィンドウの中に表を作ったり罫線引いたり色をつけたり文字の大きさ変えたり・・・そういうこともすべて「メモリ」の中で行われてるわけです。だから、メモリはいっぱいつけておいたほうが、「WordとExcelと一太郎とInternetExplorerとゲームをみんな起動して切り替えながら仕事してもぜんぜんサクサク動くよ〜」なんて感じでご機嫌に利用できるわけです。決して「メモリつければつけるほど処理が速くなる」ってわけじゃなくて、大きなお仕事をどーんと広げても余裕があるって状態なわけですね。

逆に、どれだけパソコンにパワーがあってもメモリが少ないと、なんかいちいち画面のスクロールが遅かったりファイル開くのにえらく時間がかかったりする・・・ってことになりがちです。

で、メモリの中でこまごまと作業をして、このまま電源切ったらメモリの中身はクリアされちゃうので、ころあいを見計らって「電源切っても消えないところ」にメモリの中身を保存するわけです。で、保存先として今最もメジャーなのが「ハードディスク」。
わたしのパソコンでは「C:」と呼ばれてる場所です。「A:」の場合もありますね。

メモリという机の上で超高速処理をして、一段落したところでハードディスクにデータをしまう。しまうときは次に取り出すときのことを考えて名前を付ける。さらに机の上で書き足したり修正したりしたら、上書きの保存をして、最新の状態をディスクに書き残していく。次にディスクから机の上に広げたいときは、付けた名前で呼び出す・・・。と、まあこんな感じでしょうか。

つまり・・・わたし思うんです。
パソコンのファイルというのは、開くと一気に全部メモリに読み込まれて、それではじめて仕事ができるようになるんです。
Excelのワークシートだってそうですよね。書き換えたいのは400行目だけなんだけど・・・ってわかってても、絶対全部画面に開いてから、はじめて400行目を見せてもらえるんです。
だから、よっぽどの理由がない限り、ファイルサイズは小さければ小さいほどいいのです。パソコンソフトで作るファイルってのは・・・。



わたしのパソコンはPentium2 333MHz、64MBのメモリを搭載してます。HDDは8.1GBついてますが、今のところ6.5GBくらい空いてます。
で、Windows98上のExcel2000でテストしました。
え?何をするかって?ふふふ。ずっと前からやってみたかったんですよ。

Excelのワークシート全部使うの。

まずExcelの仕様をExcelのヘルプで確認してみました。
これ、Excelの仕様ですからね。Accessのじゃないですよ。Excelの仕様です。

内容 使用
開けるブック 使用可能メモリとシステム リソースに依存
ワークシートのサイズ 65,536 行、256 列
列の幅 255 文字
行の高さ 409 ポイント
セルの内容の長さ (文字列) 32,767 文字。セルに表示できるのは 1,024 文字まで。
ブックのシート 使用可能メモリに依存 (既定では 3)
有効桁数 15 桁
処理できる正の最大値 9.99999999999999E307
処理できる負の最小値 -9.99999999999999E307
使用できるワークシート関数 329
計算で使用できる最も古い日付 1900 年 1 月 1 日
入力可能な最大時間 9999:99:99

ふむ。ワークシートのサイズは、Excel97と同じですかね。Excel95では16000行くらいだったと思いますが。。。
問題は「リソースに依存」とか「使用可能メモリに依存」ってとこですね。
つまり、風呂敷みたいなもんだからいっぱい入れられるけど、実際はその風呂敷広げる机の上によりけりね、ってことでしょうか。

さあ、縦65535行、横256列の1枚のシート全セルにデータ入力してみましょう。え?無意味な実験?い、いいじゃないですか。ヒマなんですよ。



ヒマなの。



(よい子はマネしてはいけません)

Excel2000を起動し、ワークシート内に適当な表を作りました。
あ、わたしは普段、スクリーンセイバーも壁紙も使ってません。常駐させてるソフトは某ウィルススキャンソフトくらいなもんです。で、この実験の最中はウィルススキャンのソフトもはずしました。

Excelは、1個のシートに縦に65536行、横に256列のセルを持ってます。で、こういうシートが標準で3枚用意されていて(Sheet1〜Sheet3)、あとは必要に応じて増やすことができるようになってます。増やせるシートの数は・・・そのとき使えるメモリの量による、ってことですね。
パソコンのメモリの中の残量って、ある意味Windowsまかせなので、正確には把握できない部分もありますから、なんか常駐させてるソフトとかあるならはずして、パソコン全体の負荷を軽くしておいた方が賢明でしょう。

列名はA,B,C,D・・・・・・・とアルファベットで表記され、Zの次はAA,AB,AC,AD・・・・・と続いて、IVまで用意されてます。
さて、ここまでデータぶち込みますぞ。



全部のシートに「1」と数字を入力してみてもよかったんですが、それじゃつまらないので、なんかありがちな表を作ってみて、乱数で適当な値をぶちこむプロシージャをまわしました。し、しかし、けっこう時間がかかる・・・。

ようやく24055行 AH列までデータを入れることができました。うひぃ。。。。
値だけじゃなんなので、4ヶ所ほど計算式を入れたり、各セルに書式の設定をしたり罫線を引いたり、ありがちな操作を含めてみました。
あ、これはもしかしたら今も昔も変わらないかもしれないですけど、表計算ソフトって、罫線は引いた回数が少ない方がファイルサイズを小さくできるんですよね。今のExcelとか1-2-3もそうなのかな。ちょこちょこ細かく分けて引くより、まずデータ全部入力して、いっぺんに全体を一回で引いた方がよいのです。線の本数というより、「引き始めから引き終わり」みたいな感じで罫線情報を保存するみたいですね。

ひとつのセルに1000バイト分くらい文字を入れてテストすれば、それこそ「Excelの限界に挑戦」って実験になりそうですが、それじゃ「モービルワンはマイナス40度でも凍りません」みたいになっちゃうんで、もうちょっと身近な表ということで。。。人の名前とか、製品番号とか、数値とか計算式とか、20文字くらいのコメントとか、そんなのをいくつか入力してみました。

いやー、20000行以上使ったの、初めてですよ。わたしゃいつもExcelとか1-2-3って、教えるだけで、名簿とか料金表とかちっちゃいのしか作ったことなかったので。。。あ、24055行 AH列、ええと・・・・A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH で、34列ですかね。この状態でいったん保存してブックを閉じました。で、ファイルサイズをみてみると・・・。14.8MBでした。

でも、まだ、ブックの保存も一瞬で終わるし、画面のスクロールもぜんぜん違和感ないし、これくらいはどうってことないですね。



で、再びそのブックを開いて(開くのも一瞬で開く)、再び入力・・・。行は24055行のままで、EC列・・・えー、133列まで適当な値を入力しました。この時点で保存すると・・・うむ、保存に4分ほど時間がかかる・・・。ウィンドウを閉じるのも少し反応が鈍くなってきました。

ファイルサイズは53MBを超えました。わたしが使ってるパソコンはメモリ搭載64MB。全部使えるわけじゃなくて、Excelとか漢字変換機能とかもメモリの中に読み込まれてますから、多分この数字から察すると、すでにメモリからはみ出してると思われます。

でもすぐ限界が来るわけじゃなくて、はみ出した分はハードディスクの中に一時的にメモリみたいに使えるエリアを間借りしてそこに入れます。でも、ハードディスクの中はメモリみたいに超高速に読み書きができるわけじゃないんで、動きがだんだん鈍くなるんでしょうね。多分。そんな感じだと思います。

え?まだやるのかって?やりますよ。そりゃ。


いいの。ヒマなの。



さあ、ようやく一番右端、IV列(256列目)までデータの入力が終わりました。うおー、感動です。はじめて使いましたよ。一番端っこ・・・。うひゃひゃ。もう、ただアクティブセル移動させるのだってえらい時間か借ります。ファイルの上書き保存に15分くらいかかりました。
・・・こんなことやってて、わたしゃ馬鹿ですねぇ。

もう確実にメモリ容量をオーバーしたファイルサイズですね。まだまだいけるかな・・・。
と、さらに下方向にデータの入力を・・・。最初はていねいにいろいろ考えて値を作ってたんですが、だんだんめんどくさくなってしまいにゃコピー&ペースト攻撃の連続です。当然クリップボードを使いますので、たまに保存して閉じて再度開いて・・・。と、何度か繰り返しました。

え?ええ、そうです。ヒマなんです。ええ・・・。いろいろ・・・。

でもさすがのわたしもだんだんむなしくなってきました。

40000行を超えると、上書き保存に30分ほどかかります。まあ、入力もできるし計算式も答えをちゃんと出しますけど、実用には耐えられないですね・・・こりゃ・・・。でも、データの入力はできますよ。

も、もうちょっとだ・・・。がんばれ・・・。



うほー。ばんざーい。1シート完全制覇!わははは〜!

一番下とか右って、グレーになってるんですね。でも、スクロールバーはまだ動くな・・・。次バージョンではフフフ・・・って意味かな。。。

といっても、まあ、1つのセルに入力している値は対した桁数でもないし、限界点とまでは行かないですけど、まあ、入るもんですね。ただし、保存に40分、そのあとブックを閉じるのに6分ほどかかりました。次、このブックを開くのに55分かかりました。・・・もうへとへと。途中何度か保存したり再起動したりしながらやったので、ほぼ1日がかりになっちゃいました。

で、今の状態が、これ。はっはっ。251MB。いやー、やればできるもんですね。

計算式を含めたのは6列だけで、あとは適当に文字とか数値を3〜4桁ずつ入れただけのセルがほとんどです。でも、こんなになりますね。
当然メモリだけじゃどうしようもないので、パソコンの中は上を下への大騒ぎ状態だと思いますよ。

多分、このシートを2枚3枚とコピーしてシート数を増やしてもイケると思います。が、多分、1枚シートコピーするのに1時間くらいかかるでしょう。あるいは「ディスクがいっぱいです」というメッセージが出て受け付けなくなるか、どちらかだと思います。この場合のディスクというのはハードディスク全体の空き容量のことではなくて、シートをコピーするために一時的に記憶する場所、メモリとハードディスクの一部のことですね。一回こうなっちゃうと、保存もできないし身動き取れない、いったんExcel閉じるより他に道がない、って状態になります。まあ、ファイルが壊れちゃうわけじゃないので、もう一度開いて途中から作業すればよいのですが・・・まあ、でも、この辺が限界じゃないでしょうかねぇ。

くれぐれも真似して同じ実験をしようとなさらないように・・・。何かあってもわたしゃ責任負えませんぞ。