- 締切済み
数字を配列に入れるかセルに入れるかに違いはあるのでしょうか
a(10)の配列に10個の数字を代入するのと cells(i,1)のセル(iは1から10)に数字を入れるのは メモリ上で違うんでしょうか? 配列の場合はメモリ上に確保されるのでしょうけど、 セルの場合はどこに確保されるんでしょうか? メモリにロードされたエクセルの領域に確保されるのでしょうか? どっちが良いとかはありますでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- K-Sogacchi
- ベストアンサー率53% (50/93)
既に ある程度の話は出ていますが、あくまでVBAの範疇という仮定で 話をすると、どちらもExcelの管理下にある領域では ありますね。 ただ、セルに格納するということは、Excelの内部的に文字列に変換していたり いろいろ余計な処理をしている可能性が大ですし、そもそも「画面に表示」という処理は、 一般的にはメモリ内だけで処理するより数段遅いです。 処理内容(処理量)が大した事ないのなら、どちらでもいいでしょうが、 処理量が膨大な場合は、少なくとも処理の「途中で」セルをワーク配列の 代わりに使うような事は基本的にはタブーでしょうね。
- imogasi
- ベストアンサー率27% (4737/17069)
多分建前は、配列はメモリの連続領域に確保されます。長い文字列や要素が多いとそうもいかない場合もあるように思うが。 >メモリ上に確保されるのでしょうけど、はそのとおりでしょう。 しかしコンパイル方式で無いプログラム実行ではメモリの確保にいくばくかの時間がかかるという面もあると思う。要は複雑で、少しの勉強ぐらいでは結論を出せないと言いたい。 エクセルのセルは、>メモリ上に確保されるのでしょうけど、は正しいと思いますが、仕組みは我々には公開されていません。 2007のようにセル数が増えると、実際はそうも行かないのではと思いますが。エクセルの操作処理スピードを上げるためメモリに出来るだけ展開しようとしているとは思われる。 こんな質問のようなことは我々は考える課題ではなく、エクセルでも他に勉強することが沢山あるはずだ。 MSのエクセル直接開発担当者にしかわからないことで、あれこれ言ってもしょうがない。表計算もエクセル以外でも2,3あり、標準的な処理方式は、今では確立していると思うが。それを勉強したかったらこんなところへの質問でなく、もっと専門的な研究をすべきだ。 エクセルのセルという仕掛けがあるのに配列をセルの代わりやセル間 計算に使うのは馬鹿げていると思う。 処理スピードを上げるなら、エクセルなんて考えず、独自にソフトを作ればよい(何でもエクセルという者が質問者には多い)。研究者などそうしてるはず。
- redfox63
- ベストアンサー率71% (1325/1856)
どちらもExcelが管理しているメモリー上に配置されます ただし全然別の領域ですが ・・・ セルの場合にどこにどのように確保されるかは公開されていません 配列については確保の仕方により違います 一般的には確保のされ方は気にしなくてもいいように思います Cell(i,j)などは結構アクセスが遅いですよ 大量のデータを扱うならセル範囲のRangeオブジェクトのValueプロパティでデータだけ配列に引っ張り出してループ処理する方が迅速な処理が出来ます 数個から数十個程度なら Cellsでも大差ないと思います