大きなデータベースを持っていて、データを含めたプログラムのサイズは、100メガです。VBA(EXCEL2003)で、書かれています。ハイパフォーマンスを狙って、Duo搭載のPC(VISTA)で、EXCEL2007にしたら、互換モードとなり、かえって遅くなってしまいました。
解決策は、
1)もっと速いPC、2)EXCEL2007に、書き換え、3)他の方法(プログラミングテクニック?)、因みに、処理に要する時間は、長いもので、2時間ほどかかります。グラフィック機能は、それほど用いません。
具体的な質問でないので、答えにくいかもしれませんが、何かヒントでも、ご教示いただければ、幸いです。

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

A 回答 (6件)

データベースの世界で100MBは決して大きなサイズとはいえない。


但し、Excelとなるとどれだけのsheetがあり、各sheetでどれだけのレコード数があるか訊きたいところかなぁ。

その2時間掛かる処理というのが、色々なsheetからデータを読み込んでいるような処理なら、データのi/o処理に一番時間が取られているのかもしれない。
ちなみにその処理の最中にHDDのアクセスランプはどうなっていますか?
(必死に点滅を繰り返していますか? それともタマにアクセスしている程度ですか?)

i/o処理に時間が掛かるなら、そのexcelのsheetごとRAMディスクのドライブに移せば、i/o処理は非常に早くなる。
CPU側はその処理に専任で当たれるコアがあれば良いと思うので、2コア以上でクロックが2.5GHz以上のPCを用意。
メモリは、4GBを搭載して内1GBをRAMディスク側に割り振る。
(1GBあれば、そのExcelデータ+Excelのテンポラリファイル作成でも足りるだろうから)
で、処理時間はかなり短縮できるのではないかと。
RAMディスクは電源を切ると内容が消えるが、ソフトによっては電源を落とす前に別の場所に退避しておき、次回電源を入れた際に復元してくれるものもあるから、RAMディスクである事を気にせず使えるかも知れないと思う。

 【RAM Phantom】
  http://www.iodata.jp/prod/memory/list/2004/ramph …
    • good
    • 0
この回答へのお礼

大変参考になりました。100MBのデータは20のSheetsに格納しています。2コア以上のクロックが、2.5GHz以上のPCを用意して、4GBを用いて、そのうち、1GBをRAMディスクに割り当てるわけですね。なるほど勉強になりました。研究してみます。有難うございました。

お礼日時:2009/10/22 16:15

再び、こんにちわ


ani00です。クラウドとかはかなり高いので、無料は厳しいんですよ。
単純に管理者も必要だし、データ領域とかの関係もあるしで。
会社でやっているなら、業務として何人かに手伝ってもらうしかないのですが、個人物だと厳しいでしょう。
なお、細かく、クラウドとかSaasとかに興味ある場合には、
まず、Wikiかぐぐると良いでしょう。
65歳でその向上心はすばらしいですね。
現在の50代や40代後半に見習わせたい次第です。
後は、皆さんにお礼を私も勉強になります。
    • good
    • 0
この回答へのお礼

何度も有難うございます。クラウド・コンピューティングは、費用が高いですか。一般化して個人にまで開放されるといいんですが、そうするとパソコンメーカーやチップメーカーは、困りますね。65歳にもなるとSaasとかWikiといわれるともういけません。目がショボショボして、ダメです。僕などは、化石みたいなもんです。ワイヤード・コンピュータの時からの付き合いですけど。また、ご指導ください。

お礼日時:2009/10/23 17:40

殆どが データなら


ODBCのドライバーをかまして

データだけでも 外部のDBMSに任せた方がいいと思う

MYSQLでもいいし

場合によっては 数十倍くらい性能が上がるかも

これでパフォーマンスが劇的に上がるのもアレなんですが
    • good
    • 0
この回答へのお礼

有難うございます。DBMSやMYSQLとなると本格的になりますね。65歳の僕には、少しハードルが高いような気がします。もっと勉強してみます。

お礼日時:2009/10/23 05:13

こんちわ


たぶんですが、VBAの増えすぎが原因じゃないかな?
と思います。
まず、できるならシートの分割とかで、分けてどうかな?
という問題のような気がします。
これで、マシンをパワーアップしてもイタチゴッコでしかないと思いますから。
んで、個人的には、2をしながら分割できるものは分けるぐらいが、良いんじゃないかな?
と思います。かなり手間でしょうが、頑張って下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。書き換えは、相当な手間がかかりますね。話は、変わりますが、最近話題のクラウド・コンピューティングとかが、一般的になり、個人ユーザにも開放されて、しかもEXCELが動けば、好いんですが・・・

お礼日時:2009/10/22 16:21

まず、高スペックなPCを要するプログラムはよろしくありません。


今でこそ、技術の進歩や製品の低価格化で高スペックなPCが手に入りやすくなりましたが昔のそうではない時代はPCに負荷をかけないプログラミングが心がけられていたと思います。
いくら高スペックのPCが安価に買えるようになったからといってもそういうプログラムはだめだめだと思います。
プログラムに合わせてPCを買い換えてたんじゃキリがありません。
プログラムの見直しが必要と思います。
まず、Excelで100MBというのはド級だと思います。
excelで管理するには無理がきているのであればデータベースソフトの使用も考えるべきでは?

この回答への補足

早速の回答有難うございます。そのとおりと思います。ただ、当方、素人で、長年溜め込んだVBAのソフトが数多くあり、新しく作り変えるのは、骨折りかなと案じています。Excelで100MBと言っても、計算してみると98%が、データでした。データベースをACCSESSという方法があるのかもしれませんが、計算が複雑なので、どうしてもEXCELが主体になります。併用は、煩雑になり諦めた経緯があります。

補足日時:2009/10/22 11:49
    • good
    • 0

こちらのサーバーをベースにしたらどうですか?


http://h20547.www2.hp.com/is-bin/INTERSHOP.enfin …

これをベースに
CPUをクアッドコア インテルXeonX3210
メモリを1st&2ndにフル搭載すればかなり快適に動きます。
このサーバーは結構PC代わりに使用している方も多いですよ。
    • good
    • 0
この回答へのお礼

有難うございます。少し贅沢な気がしますが、クアッドコアをPC代わりにという手もありましたね。検討してみます。

お礼日時:2009/10/22 11:27

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

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

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

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

Qエクセルの処理速度を上げるにはメモリを増設したら良いのですか?

最近、大きなデータを使って自分なりに分析を始めるようになりました。

もちろん、データの量が多くなれば、途中でフリーズみたいに遅くなったり、止まってしまう事が多くなり、そういや昔、メモリを増設することが処理速度の向上なんとかかんとか、と聞いた記憶があったのですが、エクセルの処理速度(計算速度?)を向上させるには、新たにメモリを増設するのが良いのでしょうか。

データ処理用のサーバーなんかもビジネスで提供されているとも聞きますし、メモリとサーバーの違いとかあまり良く分からないため、一番効率よく処理速度が向上できる方法を教えて下さい。

ちなみに、結構自分のPCはメモリの増設ができるタイプのようです。

もし、メモリの実装とかじゃなくて、パソコンの設定や不要なプログラムの排除の方が有効などの知識がありましたら、そちらの方の知識も教えてもらえたらありがたいです。

以上、よろしくお願いいたします。

Aベストアンサー

回答の皆さんが言われている通りです。
メモリスピードと容量はCPUを超えられません。
遅い理由は、ウイルスやデータの膨大・マクロ・再計算のスピード多々。
もしもメモリが足りなくなったら、スワップと言ってHDDをメモリ代わりになるので処理スピードが断然落ちます。
管理ツールの中のパフォマンスモニタを参考にされては如何ですか。
これからもビジネスでずっと使われるのでしたら、この際に高速なPCに乗り換えられたらと思います。

Qエクセル 強化するならcpuかメモりか?

パソコンを買い替えようと思っています
8年前の古いやつなので、Ci3 4G 500G 以上を考えています
エクセルで大量のデータを扱うことがあり
沢山の関数が入力してあるセルを 何千行もコピペして数分固まる
広い範囲のセルを選択して ジャンプでエラーセルを検索しようとして
範囲が広すぎて実行してくれない、などで苦労しています
こういうのをサクサクしてもらうために、更に良いパソコンを選ぶなら
cpuかメモりかどちらを強化すれば良いのでしょう

Aベストアンサー

CPUを優先します。
現行Excelの最大行数は1,048,576行にもなりますが、数千数万程度が相手ならメモリを8GB→16GBにするなどの増量は「サクサク」にはつながりません。"枯渇さえしなければ"という条件付きですが4GBでも512GBでも処理終了までの速度は同じです。

対して、
>沢山の関数が入力してあるセルを 何千行もコピペして数分固まる
関数だけでなく書式も含めたコピーになるとこの処理時間はCPUの能力も多分に影響を与えます。
また、最近のExcelならマルチコアCPUにGPU、64bitにまでも対応して処理の効率化を図るようになりましたから、それらのハードウェアを増強した方がより快適に使えるはずです。

よって、ご質問内の選択肢に限るならCPUにお金をかけることをおすすめします。

ただ、Excel以外の操作、特にWindowsエクスプローラ上でのコピーや移動や削除を考えると、HDDをSSDに替えることがもっとも時間というリソースを効率よく利用できるようになると思います。
順位を付けるならSSD>CPU>GPU>メモリだと思います。

CPUを優先します。
現行Excelの最大行数は1,048,576行にもなりますが、数千数万程度が相手ならメモリを8GB→16GBにするなどの増量は「サクサク」にはつながりません。"枯渇さえしなければ"という条件付きですが4GBでも512GBでも処理終了までの速度は同じです。

対して、
>沢山の関数が入力してあるセルを 何千行もコピペして数分固まる
関数だけでなく書式も含めたコピーになるとこの処理時間はCPUの能力も多分に影響を与えます。
また、最近のExcelならマルチコアCPUにGPU、64bitにまでも対応して処理の効率化を...続きを読む

Qエクセルでメモリ不足のエラーが出ます

エクセルで2つのファイルを開くと「メモリ不足」のエラーが表示されます。

エクセルで作業をするためにファイル(1.86MBのファイル)を開け、続けて別のファイル(1.80MBのファイル)を開くと「メモリ不足」のエラーが表示されます。2つのファイルのシート数は両方とも75シートです。

教えて!gooに登録されている過去の質問を参考にさせていただきましたが解決しませんでした。
ちなみに参考にした回答は次の通りです。
1.そのファイルを別名保存してファイルが開けるか?
2.そのファイル内のシートの倍率を確認。100%以外のシートがある場合は100%に修正してから別名保存してファイルが開けるか?

当方のパソコン環境は次の通りになっています。
OSはWindowsXP HomeEdition SP2
メモリは512MB
ソフトのバージョンはExcel2000
対象ファイルのサイズは(A)1.86MBおよび(B)1.80MB
対象ファイルのシート数は両方75

みなさま、宜しくお願いいたします。

Aベストアンサー

こんにちは。

>対象ファイルのシート数は両方75

まず、ここがネックですね。

ここで、そのシートの限界値を実験してくれた方がいましたが、空の状態では、百は越えるのですが、何かを入れた状態では、1つのブックで、せいぜい40程度ではなかったか、と記憶しています。それが、二つになった時に、果たしてどうかは、そのときの実験にはありませんが、Excelアプリケーション(全体)として、芳しくないはずです。

また、ぎっしりと配列数式が詰まっていたり、外部参照式が多く入った状態では、解決の見通しが立ちません。配列数式は、Excel2000では、6,000個は使えないはずです。何が、配列数式かは、にわかには区別つかないこともあります。INDEX関数やLOOKUP関数も配列数式に変わることがあります。

また、Excel2000は、公開されていない、メモリ制限があります。「使用可能なメモリ」とヘルプにはありますが、何が使用可能かは、書かれていません。

Excelの使うメモリは、物理的なメモリとは違いますので、その周辺をいじっても、直らないことが多いです。おそらく、それぞれの機能のメモリの割り振りがありますので、トータルの数ではないはずです。#1さんのおっしゃっている「Excel2002/2003/2007等が使えるなら」は、その点で、Excel2002になった時に、内部的な制限がなくなったことを、以前掲示板で知りました。

コントロールツールや画像オブジェクト、プリンタ・ドライバ、アドインなどもExcel用として割り当てられたメモリを使います。

ある程度は、[システム]-[詳細設定]-[パフォーマンス] の値を増やせば直る可能性がありますが、先ほどのメモリの割り振りからすると、Excelのハングの可能性が高いです。

なお、他のブックで同様の問題は出ているとすれば、個人用マクロブックや*.xlbファイルを削除して、Excelの設定をリセットすることによって改善することもあります。

私がお勧めする方法は、ひとつは、データベースファイルにすることと、他は、VBAマクロの効用です。ブックからブックへという作業自体を全て、VBAにさせてしまうことで、メモリ負担を減らします。残念ながら、今のままでは、解決する望みは少ないと思います。

こんにちは。

>対象ファイルのシート数は両方75

まず、ここがネックですね。

ここで、そのシートの限界値を実験してくれた方がいましたが、空の状態では、百は越えるのですが、何かを入れた状態では、1つのブックで、せいぜい40程度ではなかったか、と記憶しています。それが、二つになった時に、果たしてどうかは、そのときの実験にはありませんが、Excelアプリケーション(全体)として、芳しくないはずです。

また、ぎっしりと配列数式が詰まっていたり、外部参照式が多く入った状態では、解決の見...続きを読む

Qエクセルの早いパソコン

エクセルでマクロを組んだのですが、巨大なデータベースのため、処理に数日かかってしまいます。(2年ほど前に買ったdell)パソコンの購入を検討していますが、エクセルの処理能力は何が重要なのでしょうか?CPU、メモリ・・・ パソコンはあまり分からなくってすいません。お勧めの機種なんかも教えてください。

Aベストアンサー

> 今4日程度かかっているものを少でも縮めたいと思っています。
高性能なコンピューター上で動作させることで2日で終わると仮定しましょう。
あなたはそれで満足するでしょうか?きっとしないと思います。
最初は満足するかもしれませんが、後に不満に変わるでしょう。
私なら、処理する為だけで2日間中PCつけっぱというのは嫌気がさします。
夜間処理という風に考えても終わっていないわけですから。
2年ほど前のPCでも4日かかるのなら、今のPCでも1日じゃ絶対終わらないと思います。

> データ量がエクセルのシート全部使っても4シート分あります。すべて関
> 連し合っていて、一つの変数を変えるとすべての再計算が必要となり、答
> えが出ます。それぞれに計算式が入っています。
『一つの変数を変えると』という意味が分かりませんが、
再計算するということはExcelの再計算機能に頼ってるということですよね?
再計算しない作りにしたらどうなるのでしょうか?
また、AccessなのかSQLServerなのか分かりませんが、データベースは最適に正規化が行われているでしょうか?
データベース(SQL)で導き出せる値をデータベース(SQL)だけで
完結できる作りにしたらどうなるのでしょうか?
再計算された結果出力された全ての情報が1つの実行タイミングで全て必要となるのでしょうか?
処理するタイミング(段階)を分けて負荷の軽減を図ることは出来ないのでしょうか?

> 今4日程度かかっているものを少でも縮めたいと思っています。
高性能なコンピューター上で動作させることで2日で終わると仮定しましょう。
あなたはそれで満足するでしょうか?きっとしないと思います。
最初は満足するかもしれませんが、後に不満に変わるでしょう。
私なら、処理する為だけで2日間中PCつけっぱというのは嫌気がさします。
夜間処理という風に考えても終わっていないわけですから。
2年ほど前のPCでも4日かかるのなら、今のPCでも1日じゃ絶対終わらないと思います。

> データ量がエク...続きを読む

QExcelファイルの限界は何MBまで?

今Excelで家計簿をつけているのですが、日に日にファイルの容量が増えていってます(当たり前ですが)。
そこで心配になったのですが、(1)Excelのファイルは何MBまでとか容量ってあるのでしょうか?また、(2)Excel2002と2007ファイルでは容量の限界も違うのでしょうか?一つめの質問だけでもいいのでよろしくお願いします。

Aベストアンサー

特別な容量の制限はありませんが、パソコンのメモリ(エクセルが利用出来る分)に読み込めるサイズが限界になるでしょう。

ただし、何らかの値が入っている場合と、計算式が多数入っている場合では処理の重さも変わってくるので、処理の限界が見えるかもしれません。

基本的にエクセルファイルは壊れやすいと言われているので、ある程度になったらバックアップなり分割するなどの対策が必要でしょう。


>(2)Excel2002と2007ファイルでは容量の限界も違うのでしょうか?

2007からはワークシートサイズが変わっているので、2003までのエクセルとは限界も違うかも知れませんが・・・・。

家計簿程度でファイルサイズが問題になるほど肥大する事はないので、心配はいりませんよ。

QExcelのメモリ(配列)の上限は2Gではないのか

こんにちは、
現在ExcelのVBAで大量に配列を必要なマクロを作成しています。

その為、計算量が増えるとどうしても、
メモリ不足というエラーが発生してしまい困っています。

そこで、現在使っているExcelがどれだけの配列とメモリを使用できるのか
下記コードを使用してテストしてみました。

そうすると、下記のような値の時メモリ不足というエラーが発生してマクロが終了しました
(下図参照)
・メモリ(プライベートワーキングセット)  :1249716 K (約1G?)
・String型配列数(各要素"01,02,03,04,05,06") :約28000000(2800万個)

私の知識では、32bitアプリケーションのメモリの上限は2Gだと聞いています。
ですが、実際にはその半分しか使われていません。
そこで質問となるのですが

・32bitアプリケーションの上限が2Gと言われているのはプラベートワーキングセットの値のことではないのか?

・32bit版Excelを使用して、これ以上のメモリ(配列)を使用することは可能か

・可能であれば、その方法はどんな方法か?

以上のことについてお聞きしたいと思っております。
上のどれか一つでもいいです。知っていることがあれば教えてください。

補足となりますが、テストしたPCの簡単な環境を下に記載して置きます。
どのPCでも上記結果とほぼ変わりはありませんでした。

PC1
Windows7 32bit メモリ 4G Excel2013(32bit)

PC2
Windows7 64bit メモリ 8G Excel2010(32bit)

以下は使用したプログラムコードです

---------------------------------------------------------------


Public Sub 配列上限取得計算()
On Error GoTo ErrEnd
Dim i As Long
Const kankaku As Long = 1000000


Dim Moji As String
Moji = "01,02,03,04"

Dim ans() As String
ReDim ans(1 To kankaku) As String
i = 1
Do
If i Mod kankaku = 0 Then
ReDim Preserve ans(1 To i + kankaku) As String
End If

ans(i) = Moji
i = i + 1
Loop
Erase ans
Exit Sub
ErrEnd:
MsgBox Err.Description & vbCrLf & "これ以上の配列を設定できません。" & vbCrLf & "上限は" & i & "です。"
Erase ans
Err.Clear

End Sub

こんにちは、
現在ExcelのVBAで大量に配列を必要なマクロを作成しています。

その為、計算量が増えるとどうしても、
メモリ不足というエラーが発生してしまい困っています。

そこで、現在使っているExcelがどれだけの配列とメモリを使用できるのか
下記コードを使用してテストしてみました。

そうすると、下記のような値の時メモリ不足というエラーが発生してマクロが終了しました
(下図参照)
・メモリ(プライベートワーキングセット)  :1249716 K (約1G?)
・String型配列数(各要素"01,02,03,04,05...続きを読む

Aベストアンサー

#2の回答者です。
>何百万どころか数千万単位で必要です。
>やっていることは、50個あるサンプルで複数の実験を行います。

そういう理由で、配列を使うという所に疑問を感じます。

>50個あるうち6個の組み合わせを考えた場合、
>15890700(1589万700個)通りの文字列を一度配列に格納し、それから各条件に合うかどうか各要素ごとに確認していく作業をしています

時々、ここの掲示板でも、年に一度ぐらい、似たような話は出会いますが、果たして一覧を配列の中にすべて収める必要があるのでしょうか?その都度、組み合わせていって、必要なものを取り出せば済む話だと思うのです。まさか、出来上がってみなければ分からないというような話ではないと思います。もちろん、人間の判断を要するものだとしても、1500万件もの量を、個人でこなしきれるものではないとは思います。

何十年と、こうした掲示板を見ている私でも、組み合わせをすべて配列に入れるという話は、初めてです。もちろん、#1の人の書いた、配列の分散という方法もあるはずだとは思うのですが、今度は、本体のExcel側が果たして要求に応えるか分かりません。

ただし、Excelのアドインの"Solver"の開発元の会社のツールで、組み合わせを解決するという話は聞いたことがあります。ただ、10数万円もするアプリですので、容易には手が出ません。その代わり、VB6時代で、いくつかのアルゴリズムは公開されているはずです。

#1のお礼欄
>64bitOfficeはまだ一般的でなく、また、32bitOfficeと同時にインストールはできなかったと記憶しております。

64bit Officeは、現在の最新バージョン(2013)でも、Microsoft 側は、使用をお勧めしていません。

#2の回答者です。
>何百万どころか数千万単位で必要です。
>やっていることは、50個あるサンプルで複数の実験を行います。

そういう理由で、配列を使うという所に疑問を感じます。

>50個あるうち6個の組み合わせを考えた場合、
>15890700(1589万700個)通りの文字列を一度配列に格納し、それから各条件に合うかどうか各要素ごとに確認していく作業をしています

時々、ここの掲示板でも、年に一度ぐらい、似たような話は出会いますが、果たして一覧を配列の中にすべて収める必要があるのでしょうか?その都度、組...続きを読む


人気Q&Aランキング