大きなデータベースを持っていて、データを含めたプログラムのサイズは、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エクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QPCがダウンしてしまい再起動できません ご教示ください

PCがダウンしてしまい再起動できません ご教示ください

購入後一年ほどネットラジオを付けっぱなしにしてましたら いきなりダウンしてエラー発生 ctrl・alt・delを押すよう指示が出てますが 何度やっても再起動できません BIOS Setup
Utilityの画面は出るのですが…やっぱり故障でしょうか お教えいただければ幸甚です

Aベストアンサー

 追加補足拝見しましたが、その情報だけでは判別出来ません。BIOS設定画面のBootタブにHDDの型式等掲載されているかどうかですが、東芝ということはDynabookでしょうか?
 メーカー製PCですと、リカバリCD/DVDを作成しているか否かですが、指摘情報ですとシリアルATAを利用している様ですので、2.5インチ・シリアルATA式HDDを用意し(HGST製若しくはWestern-Digital製がお勧めです)、リカバリCD/DVDにてリカバリ作業を実施された方が良いかと存じます。なお、HDDの機種により回転数とバッファ値が違いますので、数値の大きいHDDの方がレスポンスが良いので、お勧めです。
 取り外した旧HDDについては、HDD外付けケース・Novac製「NV-HW230US」等を利用しましたら、HDDの保存データの確認及び動作状況が解るかと存じます。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qエクセルのプルダウン三角マークの表示が小さい

検索すると似たような質問は有るのですが、解決に至る内容が見つからず困っています。EXCEL2010のプルダウンの三角マーク(□の中に▽)の表示が小さいので表示を大きくしたいのですが、設定の方法が分かりません、詳しい方宜しくお願い致します。

Aベストアンサー

>解決に至る内容が見つからず

というか、基本的には大きさは変えられないので・・・

よくある対処方法としては画面倍率を上げてフォントを小さくしたりする方法なんですが、見たところ印刷したりしそうですからあまり有効ではないかもしれませんね。
マウスではなくショートカット(Alt+↓キー)とかで対応できませんか?

Qエクセルでプルダウンから項目が未選択だった場合にエラーを表示させる

EXCEL2016を使用しています。

プルダウンから何も項目を選択していない場合に、エラーを表示させたいのですが、上手くいきません。
画像のようにA列はプルダウンから選択必須で、入力忘れなどで未選択である場合にエラーを表示させ、入力を促すようなメッセージを表示させたいと思っています。

VBAに関しては全くわからないため、関数やツールを使用してどうにかしたいのですが方法はあるでしょうか?
よろしくお願い致します。

Aベストアンサー

一案です。条件付き書式で色を付けます。
A~C列を選択
条件付き書式の設定
数式 =AND(COUNTA($A1:$C1)<3,COUNTA($A1:$C1)>0)
塗りつぶしの色を設定
OK

同じ行に空白が 空白があれば塗りつぶしです。

Qエクセル(Excel) 納品書の作り方

商品の納品書(エクセル)をネットでダウンロードして使っていたのですが、使いにくい物で困っています。
私自体、エクセルに関しての知識は無いに等しいです。(簡単な掛け算程度の関数をネットで見て作れた程度です。。)

使いにくいと感じている部分は、分類の表が別のBOOKに作ってあるものが関連付けされているのですが、分類のBOOKが消えてしまったようで、商品番号の確認すら出来なくなってしまったのです。

そこで、下記の質問について教えてください。

1.使いやすい納品書のエクセル(無料)があれば教えてください。
(商品番号を打ち込むと、商品名と単価が出る物が好ましいです。)

2.もし、一から自分で作るとしたら解説してくれているサイトはありますでしょうか?

3.私の使っているエクセルがとても古く2003?とかだと思うのですが、アップデートは出来るのでしょうか?

以上、まとまらない質問で申し訳ありませんが、よろしくご教授お願いいたします。

Aベストアンサー

こんばんは!
(1)Officeのテンプレートからダウンロードしてみてはどうでしょうか?
<1>Excelを立ち上げる
<2>メニュー → ファイル → 新規作成 → 画面左側の「作業ウィンドウ」の検索欄に
「納品書」と入力しOK
これでいくつかの納品書のテンプレートがダウンロードできます。
(「作業ウィンドウ」が表示されない場合は Ctrlキーを押しながらF1キー)

(2)は省略して、(3)に関して・・・
当方もExcel2003を使用しています。
Excelのアップデートは新しいバージョンのOfficeを購入するしか方法はないと思います。

尚、どういうソフトを使用しても商品データ(商品番号・商品名・単価等々)はご自身で作成する必要があります。

そこで一例ですが、↓の画像のようにSheet2に商品データ表を作成しておきます。
Sheet1のB2セルに

=IF($A2="","",VLOOKUP($A2,Sheet2!$A:$C,COLUMN(B1),0))

という数式を入れ隣のC2セルまでオートフィルでコピー!
そのままB2・C2を範囲指定したまま下へずぃ~~~!っとコピー!

E2セルには
=IF(D2="","",C2*D2)
という数式を入れこれもオートフィルでずぃ~~~!っと下へコピーします。

これでSheet1のA列に商品番号を入力・数量を入力
これで画像のような感じになります。

※ ↓の画像はあくまでやり方だけですが、「納品書」のテンプレートをダウンロードしても
同様の方法で可能です。

参考になりますかね?m(_ _)m

こんばんは!
(1)Officeのテンプレートからダウンロードしてみてはどうでしょうか?
<1>Excelを立ち上げる
<2>メニュー → ファイル → 新規作成 → 画面左側の「作業ウィンドウ」の検索欄に
「納品書」と入力しOK
これでいくつかの納品書のテンプレートがダウンロードできます。
(「作業ウィンドウ」が表示されない場合は Ctrlキーを押しながらF1キー)

(2)は省略して、(3)に関して・・・
当方もExcel2003を使用しています。
Excelのアップデートは新しいバージョンのOfficeを購入するしか方法はない...続きを読む

Qexcel エクセルIF関数の作り方を教えて下さい

   A        B       C       D      E
1  発注納期  修正(1)   修正(2)     修正(3)    遅延日数   
2  7/9      7/21     8/4               25
3  6/7      7/28     8/5       7/27     -1 
4  6/22     7/28     8/7       8/9      47


<A列:発注納期)に対して、B・C・Dと修正し、<E列:遅延日数>を計算する式を
E2=IF(B2="","",DAYS360(A2,MAX(B2:D2)))
と入力していましたが、そうすると
E3=58
となります。
列B~列Dのうち一番右側を選択して計算して、
E3=-1
とするためには、どのような式を作れば良いのか教えてください。

Aベストアンサー

IFをネストして、検査順番をD列からやれば良いと思いますよ。

E3=IF(D3<>"",DAYS360(A3,D3),IF(C3<>"",DAYS360(A3,C3),IF(B3<>"",DAYS360(A3,B3),0)))

上記の式だと、
D3が空欄以外の場合はDAYS360(A3,D3)
D3が空欄でC3が空欄以外の場合はDAYS360(A3,C3)
D3とC3が空欄でB3が空欄以外の場合はDAYS360(A3,B3)
D3、C3、B3全部が空欄の場合は、0を表示するという式になっています。

ご参考まで。


人気Q&Aランキング