• ベストアンサー

エクセルの素朴な疑問

シート1にデータ入力をし、シート2・シート3シート4に入力データを多くリンクさせると、ブックを開く時間が長くなったり、データ入力時にカーソルの動きがが遅くなります。何かいい方法を教えてください。(VBAを使った方法でもいいです) 現在の状況 ・データのリンク(=A12等で処理) ・データをリンクさせ関数も多く使用している ・印刷処理として、VBAを使用している ・エクセル2002を使用

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

処理の内容、データ量が不明なので何とも言えませんが、色々見てきた経験です。 重たくなっているシートを見ると(思いつくままに・・・)  (1)今不要な算式が多量に登録されている。      事前に1年365日分の算式を数年分登録しているような例です。  (2)複雑な算式を数千行にわたって登録している。      数値計算を順番に行っていくような場合です。  (3)8桁数値から年月日を求める時など、作り手により処理時間に差が出ます。  (4)関数や書式で解決するのにやたら複雑な手順になっている。  (5)過去の計算結果は不要なのに再計算している。      日単位の処理なのに前日までのデータの再計算をしている。  (6)VlookUpで多量に参照している。  (7)VlookUpが多量にあり、参照元が増減、変更される  (8)配列数式を使えば間単になるが分からないケース  (9)(1)から(6)の組み合わさったケース  (10)その他? 対応策? (1)と (2)入力と出力を分け、計算が必要な時にマクロで算式をコピーしたり、    モジュール内で計算し、値を出力したりすると早くなります。    ユーザー定義関数を使えば速くなるかもしれません。分析ツールには遅い関数もあります。 (3)算式で年月日にしないで事前に年、月、日に分割しておく (4)日付・時刻の計算や文字列操作関数は余り使われていない。    ゼロの表示を算式で行っているのもよく見ます。大体書式で解決します。 (5)表計算だからしかたない?データベースなら前のデータは意識していないですよね。    過去を引きずらないように複数シートに展開する方法もあります。 (6)これはよく見ます。VlookUpは計算が遅い気がします。多量には使わない方がいいでしょう。    多量に使う場合は、計算後、コピーして値にして同じ箇所に貼り付けてしまいます。 (7)参照元を変えるとVlookUpが多量にあると時間がかかるでしょう。余り使いません。    IndexでいいのにVlookUpを使っているのも見ます。 (8)説明しづらいですが、複数条件の計算などが簡単にできることがあります。    知らないと、とんでもない大げさな処理になることもあります。 計算を手動にすると効果があるかもしれません。 見当違いかもしれませんが気が付いたことを書いてみました。 会社ではExcel97、PCは133Mzの古い機種ですが、数千件~数万件の計算でも余りストレスは感じていないですね。(長いときにはコーヒーを飲んだり、煙草を吸ったりしているから?)ご参考に。

m-happy-t
質問者

お礼

今関数等をチェックしていますが、なかなか、原因の箇所がわかりませんが、原因の箇所が特定できたら、また質問しようと思います。そのときはよろしくお願いします。 それと、いつもnishi6さんには、ご回答いただきありがとうございます。 これからもよろしくお願いします。

その他の回答 (1)

  • 4yuzu4
  • ベストアンサー率15% (15/96)
回答No.1

入力時に早ければいいのですね?(私のは2000ですが同じだと思います) 簡単な方法として ツール - オプション - で計算方法のタグをクリック 計算方法を“手動”にします。保存前の再計算はチェックを入れておいたほうがいいでしょう。 これで入力時のイライラはなくなります。 印刷前等に再計算(f9)をさせればOKです。

m-happy-t
質問者

お礼

試してみました(少し良くなりました。) ありがとうございます。

関連するQ&A

  • Excelで、あるシートだけ非表示にしたいのですが?

    Excelで、入力用シートと印刷用シートの2枚を作って、入力用はデータや計算データを入力して、それを印刷用シートに結果だけ飛ばしています。たまに、お客さんにExclデータで提出して下さいといわれますが、入力シートは見せたくありません。 最近、VBAを勉強し始めて、非表示にする方法は見つけましたが、(使用しているのは、ワークシートの「visibie=false」です。)更にブックの保護をかけてマクロを変更出来なくしています。が、これで確実に見れなくなっているのかが良く分かりません。こんな方法で良いのか、もう少し効率の良い方法があるのか、御手数ですが教えて頂きたいのですが。

  • エクセル2007を使用しています。

    エクセル2007を使用しています。 VBAを利用して作成する帳票が数百枚有ります。 データシートの他に、別シート(帳票)があります。 データシートのIDを順番に帳票シートに入れ、vlookupで参照して印刷。 これを繰り返す処理で印刷をしております。 今後、別のブックを作成して、1枚のシートに上から順番に帳票を貼り付けていこうかと考えています。 全ての帳票が縦に並んだシートを新しいブックに作成してから印刷処理に入る予定。 (データや帳票が有るブックではなく、新しいブックに全帳票を保存させるのが目的です。) 1枚の帳票は55行程度です。(横は50列程度) 200枚分貼り付けると縦に11000行(横は50列程度)を使用するデータになります。 この処理をする場合の方法についての御相談です。 別ブックのシートに直接1つずつ帳票を貼り付け処理をするのがよいのでしょうか? それともデータや帳票の有るブックに、一時的なシートを作成して、 一時的シートを完成させてから別ブックのシートに移した方が良いのでしょうか? いずれにせよ「切り取り」と「貼り付け」が結構な数になりそうです。 少しでも処理時間が短く、スムーズな方法にしたいので教えて下さい!

  • Excelのリンクを解除したい。

    Excelにて、別のブックから一覧表のデータがあるシートを 新ブックに丸々移動させてきたのですが、 そのシートが別のブック内の別シートにリンクしていたようで、 新ブックの表の入力が完了し保存して、再度開いたときに 『他のデータソースへリンクしています。 更新しますか。』 というメッセージが出てきます。 取り合えず更新せずに、リンクしているセルがどれなのか 1つずつ矢印で送りながら探していったところ、 いくつかは見つけて関数を書き換えたのですが まだ、『更新しますか』のメッセージが出ます。 しかし、それ以上はリンクしたセルを見つけられませんでした。 そのリンクしたセルを探し出し、 関数を書き換えて、メッセージを出なくしたいのですが 何か良い方法はないでしょうか?

  • ユーザーフォームでチェックしたシートを保存する方法

    「台帳」というExcelのブックに「リスト」「印刷用1」「印刷用2」「印刷用3」…というように複数のシートがあります。「印刷用1」…はVLOOKUP関数を用いて「リスト」に入力したデータを参照しています。 現在ユーザーフォームを用いてチェックを入れたシートを出力できるようになっているのですが、このユーザーフォームを利用してチェックを入れたシートをリンクを外した状態で1つのブックとして保存させる方法はないでしょうか? 詳しく言うと、例えば「印刷用1」「印刷用3」をコピーして新しいブック(ファイル)を作成し、シート名はそのまま維持してファイル名は「A1」セル(全シート共通です)の内容に、加えてVLOOKUP関数で取得しているデータはリンクを外してテキストに変換し、現在のフォルダに保存するという作業をVBAを使用して自動化させたいのです。(上司の要望です) もともとあるユーザーフォームは前任者が作成したもので、当方はVBAは用語もろくにわからない全くの初心者ですので、詳しい解説も添えていただけると勉強にもなり非常に助かります。 よろしくお願いいたします。

  • エクセル2010VBA での質問です。

    VBAはやったことないので全く初心者です。 町内の諸費用をエクセルで管理しています。 年度が変わる度、当番も変わってデータを引き継いで管理するのですが、最初に連続印刷のVBAを作ってくれた人がもういないので、今まで、前年度のものをコピーし、中のデータを書き換えて使っていたようなのですが・・・ どのような設定がされているか把握するために質問させて頂きます。 エクセルを開き、マクロで作ってある印刷ボタン?を押すと、Sheet1にあるデータベース約100人分 (B列に100人分の名前・2行目にいくつかの項目・各項目の下に金額)が別のSheetにある個人請求書に連続印刷されるというものですが、添付していますVBAの内容を把握したい事が一つ目です。 年度が変わるごとにそのシートをコピーして中のデータを書き換えて使っているのですが、問題は有りますでしょうか?(二つ目です) 添付しております、ファイルのVBAを自分はわからないのですが、このBOOKを開いた時に ”このブックには、ほかのデータソースへのリンクが含まれています。 ・リンクを更新するとエクセルは最新のデータを取り込もうとします。 ・リンクを更新しないと、以前の情報が使用されます。 注意:データリンクは許可なく機密情報にアクセスして共有するのに使用される可能性があります。また、その他の問題を起こす可能性のある操作に使用される場合があります。このブックの作成元が信頼できない場合にはリンクを更新しないでください。   更新する・更新しない・ヘルプ ” というメッセージが出てきますが、このBOOKが入っているフォルダ以外のデータも参照されているのでしょうか?(三つ目) 情報が少なくて済みません。 宜しくお願い致します。

  • Excel VBA 2つのブック間での関数操作

    はじめまして。 以下のような処理ができるかどうか教えて下さい。 <環境> Windows XP Excel2002 SP-1 <内容> 2つのブックが用意されているとします。 【ブックA】  マスタと集計表が含まれる。  ユーザーはシート変更の権限、およびVBA変更権限を持たないため、  一切の変更はできない。 【ブックB】  一括印刷専用機能が含まれる。 処理としては、 (1)ブックBを起動させ、ブックBのSheet1にある「処理実行」ボタンを押下。 (2)(1)を実行すると、印刷部数を入力するInputBox表示。 (3)(2)で数値入力後、それをパラメータとして保持。 (4)ブックAを起動させ、その中に含まれる、   処理を実行するための関数を呼び出す。 ブックBより処理実行をかけ、ブックAに含まれる関数を遠隔で 実行できないかということです。 もしよい方法があったら教えて下さい。お願いします。

  • エクセル:シート指定の関数処理

    エクセルで以下の関数処理が可能か教えてください。 1つのブックの複数のシートに日付で名前付けし、そのデータを取りまとめのシートに例えば「='10-28-04'!AD124」のようにリンクさせています。 日々のシートのフォーマット(データの並び方)は一緒ですので、取りまとめのシートに日付を入力し、A1,A2に日付(シリアル値)B1に「='10-28-04'!AD124」と入力してあると、B2は「='10-29-04'!AD124」となるのですが、現在はB1をB2にコピー後、いちいちマニュアルで変えています。(8を9に、AD124は125になるので5を4に) これをA列のシリアル値を使用して関数処理できれば大変楽になるのですが、良い方法があれば教えてください。 TEXTとCONCATENATEを組み合わせてやってみたのですが、うまくいきませんでした。

  • 同一フォルダ内で、エクセルを自動リンクさせる方法

    同一フォルダ内で、エクセルを自動リンクさせる方法を教えて下さい。 デスクトップ>書類>データ の順にフォルダを作成し、 「データ」フォルダの中に、Excelのブックを複数作っています。 「データ」フォルダ内に、 Book1、Book2、Book3、Book4があるとして、 Book1の情報を更新すれば、Book2、Book3、Book4も関数を介して全て変わるようにしたいです。 [BOOK1.xls]で、他のBookに反映するようにしたところ、 Book1の情報を読み込むために、ルート(デスクトップ¥書類¥データ)まで遡るため、 処理に時間がかかります。 同じフォルダ内のため、「データ」フォルダを基点に、自動リンクを指定できないものでしょうか。 条件: それぞれのBookには、複数のシートを作成しているため、同じBook内に全て入れることが出来ません。 WIndows XPでExcel 2000を使用しています。 軽く処理出来るようにしたいので、 他にやり方があれば、どのような方法でも構いませんので教えて頂けると助かります。 何卒、宜しくお願い致します。

  • エクセルの保護についてお伺いいたします。

    エクセルの保護についてお伺いいたします。 シートA1からA5は入力用として使うため、ロックを外してシートを保護しました。しかしA1のセルをクリックしてドラッグすると下の方に移動ができてしまいます。ここに入力したデータはC1からC5の横方向へ順番にリンクさせて、VBAでarray関数の配列として使いたいと思っています。間違えてA1セルを移動させてしまうとデータの配列順も変わるため困っています。セルの移動ができないようにする保護の方法はないでしょうか。エクセルまたはVBAどちらでも構いませんのであればよろしくご教授お願いいたします。

  • エクセルで入力したデータを別ブックに反映させたい

    エクセルのVBAで私がやりたいことは次の通りです。書類(申請書など)を受け付けてエクセルに入力し、ナンバーを取っています。イメージとしてA列にナンバー(1から連番です)B列に書類の名前、C列に受付日、D列に担当者、E列に処理状況といった感じです。担当者は10人なので、現在は関数で担当者別の同じ体裁の別ブックにデータが移行するように組んであります。(元のするブックを読み取り専用で開き、各担当者のブックを開いてデータが来るようにしています。)今は各担当者のブックに入力した処理状況は元のブックに反映させることができません。これを、それぞれのブックの処理状況に入力すると元のブックにも反映するようなシステムは作れるでしょうか。繰り返しますが元のブックと各担当者のブックは全く同じ体裁です。各担当者が同時に作業をできるように別ブックにしています。VBAを使うのでしょうか?それとも関数だけでできるのでしょうか?当方VBAは全くの初心者ですが、問題が解決できるのならぜひ覚えたいと思っています。現在の関数のやり方だとブックを開くのにかなり時間がかかるし、とにかく両方のブックを開かないとデータが来ないのが不便です。 なお各担当者のエクセルのバージョンはバラバラで2003から2010まであります。よい方法があれば教えてください。 このコーナーへの質問も初めてなので要領が悪い点はご容赦ください。

専門家に質問してみよう