【Excel-VBA】特定の処理をする際に関数を停止する方法

このQ&Aのポイント
  • Excelで特定の処理中に関数を停止する方法について教えてください。入力用Book1~3と集計用Bookがあり、入力用Book1~3は共有されています。集計用Bookの集計シート1で入力シート1を集計したいが、VBAで取り込み処理すると時間がかかってしまうため、取り込み処理中に数式の処理を停止することは可能かどうか知りたいです。
  • Excel-VBAで特定の処理中に関数を停止する方法を教えてください。具体的には、入力用Book1~3と集計用Bookがあり、集計シート1で入力シート1を集計したいですが、VBAで取り込み処理すると時間がかかるため、取り込み処理中に数式の処理を停止できるかどうか知りたいです。
  • Excelで特定の処理中に関数を停止する方法を教えてください。入力用Book1~3と集計用Bookがあり、集計シート1で入力シート1を集計したいですが、VBAで取り込み処理すると時間がかかってしまいます。取り込み処理中に数式の処理を停止する方法があれば教えてください。
回答を見る
  • ベストアンサー

【Excel-VBA】特定の処理をしている間、関数を止める方法について

Excelで実現可能かどうか教えてください。 入力用Book1 ⇒ 入力シート1 入力用Book2 ⇒ 入力シート2 入力用Book3 ⇒ 入力シート3 集計用Book ⇒ 集計シート1、集計シート2、集計シート3、入力シート1、入力シート2、入力シート3 上記の4ファイルがあり、入力用Book1~3はそれぞれ5名ぐらいが 共有してデータを入力しています。 集計用Bookの集計シート1で入力シート1を集計したいので、VBAで 入力シート1~3を集計用Bookに取り込みたいと考えております。 ただ、集計シート1~3にはそれぞれSumproductを多用しており、 VBAで取込処理を行うと10分近くかかってしまいます。 集計シート1~3を削除して取込を行うと10秒ほどで完了します。 取込処理を行う間、各セルに入力している数式の処理を止めることは 可能でしょうか? 入力用シート1~3を扱うメンバーは定期的に変わるため、 全てをVBAで構築するのは躊躇われます。 なんとかsumifやsumproductを使用して、メンテナンス工数を 削減したいので、よろしくお願いいたします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

取り合えず Application.Calculation = xlManual 関数の計算を手動にして、再計算を止める。 VBAでやりたいことを実行 Application.Calculation = xlAutomatic 計算を自動にして計算を実行させる。

crossone
質問者

お礼

hallo-2007様、ご回答ありがとうございます。 おかげさまでやりたいことが実現できました! 本当にありがとうございました。

関連するQ&A

  • Excel2010特定シートでの数式入力が不可です

    区域別にブックがいくつかあり、各ブックの1枚目に基本データを入れています。 基本データを参照して特定データを別シートにてカウントしています。 ブック1に入力した数式をブック2へコピーし、置換にて参照先を変更するやりかたで他のブックは問題ないのですが、特定のブック(3ツ)でそのやりかたが通用しません。 =COUNTIFS('東京ベース'!$bb5:$bb5000,"a",'東京ベース'!$b5:$b5000,2013)と改めて入力してみると、確定後に数式の一部が変わってしまいます。 数式タブから新たに入力すると、検索条件を"a"としているのに確定すると勝手に"A"となってしまいます。データのシートのaをいくつかAに変更してみたのですがカウントしません。 ひとつのブックに10枚のシートがあり、数式が入り乱れているのですが特に問題なしです。該当のシートにも他のセルに集計や参照の数式を入れていますが機能しています。 自分としては何をチェックしてみたらよいのかわからないためアドバイスをよろしくお願いします。

  • 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に含まれる関数を遠隔で 実行できないかということです。 もしよい方法があったら教えて下さい。お願いします。

  • SUMIF関数と同じ集計をVBAで行いたい

    今はSUMIF関数で複数シートデータの集計をしていますが、 データ数が膨大なため処理に多大な時間が掛かっています。 VBAで同じ様な処理がしたく、ご教授の程よろしくお願いします。 Sheetは1~12まであり、同じレイアウトです。 行数は、Sheetごとに異なります。 集計結果Sheetに、品名ごとの収入計と支出計を集計したい。 Sheet1    A    B    C    D 1 月日  品名   収入 支出 2 5/10  りんご  30000  20000 3 5/15  さかな  20000  30000  4 5/20  きのこ  50000  20000 5 5/25  さかな  30000  10000 6 5/30  おかし  15000  10000 7 5/30  おかし  20000  20000 5 5/10  りんご  40000  20000 Sheet2    A    B    C    D 1 月日  品名   収入 支出 2 6/13  きのこ  10000  30000 3 6/25  さかな  20000  20000 4 6/30  おかし  55000  30000 5 6/10  りんご  20000  10000 6 6/15  さかな  10000  10000 集計結果Sheet    A    B    C 1 品名   収入  支出 2 きのこ 3 さかな  4 おかし  5 りんご 

  • VBAでSUMIF関数を繰り返す

    VBA初心者です。よろしくお願いします。 Book1のSheet1のA2の値を検索条件とし、Book2のsheet1のA列を検索し、条件に合った行のC列の合計値を取得するとします。出力先はBOOK1のA2と同じ行、C2です。 これだけであれば、sumif関数で処理できるのですが、 Book1のA列の最終行までこの処理を繰り返さなければなりません。 また、毎月、Book1,2ともに最終行が変化します。 上記を簡単に書くと以下になります。 ■Book1のsheet1    A   B   C 1  101  リンゴ (ここにBook2の合計値を出力したい) 2  202  レモン (ここにBook2の合計値を出力したい) 3  510   柿   (ここにBook2の合計値を出力したい) ■Book2のsheet1    A   B    C 1  202  レモン  10 2  202  レモン  30 3  101  リンゴ  200 4  707  ブドウ  50 5  101  リンゴ  70 6  510   柿   100 上記処理をsumif関数、forを使って作成してますが、どうもうまくいきません。 申し訳ございませんがよろしくお願いします。 環境は、Windows7、Office2010 です。

  • 【再質問】SUMIF関数と同じ集計をVBAで行いたい

    恐縮なのですが、今一度質問させてください。 今はSUMIF関数で複数シートデータの集計をしていますが、 データ数が膨大なため処理に多大な時間が掛かっています。 VBAで同じ様な処理がしたく、ご教授の程よろしくお願いします。 Sheetは1~12まであり、同じレイアウトです。 行数は、Sheetごとに異なります。 集計結果Sheetに、品名ごとの月集計をしたい。 Sheet1    A    B    C    D 1 月日  品名   収入 支出 2 5/10  りんご  30000  20000 3 5/15  さかな  20000  30000  4 5/20  きのこ  50000  20000 5 5/25  さかな  30000  10000 6 5/30  おかし  15000  10000 7 5/30  おかし  20000  20000 5 5/10  りんご  40000  20000 Sheet2    A    B    C    D 1 月日  品名   収入 支出 2 6/13  きのこ  10000  30000 3 6/25  さかな  20000  20000 4 6/30  おかし  55000  30000 5 6/10  りんご  20000  10000 6 6/15  さかな  10000  10000 集計結果Sheet    A    B    C    D 1 品名   4月   5月   6月 2 きのこ  3 さかな  4 おかし  5 りんご  例)きのこ 4月の収入-支出を、B2セルに入力したい。 シートは4月・5月と、月別に分かれています。

  • VBAで複数のブックを開かずに処理する方法

    いつもお世話になっていますm(_ _)m 過去ログやVBAに関するサイトで調べたのですが 分らないので、教えて頂きたいです。 同じフォルダ内にある複数ブックの特定シートから 開かずに値を参照して、開いてるブックの「出力」という シートに書き出しするプログラムを作成しています。 複数のブックにある特定シートは「見積」 と言う名前の物がありフォルダ内のブックの数は不特定です。 シートから参照する値はほぼ同じなのですが、 3つのフォーマット(取得する項目などが違う等)で値が 入力されているので条件分岐で処理を分ける必要があります。 別ブックを開かずに、ここまで複雑に参照する事は 可能なのでしょうか?自分なりに色々調べたのですが FormulaR1C1で参照可能までは部分までは 調べたのですが、いざ組んでみるとエラーが出て 条件分岐にすら至らない状態です。 繰り返し処理で一つづつブックを開いて参照しながら やるべきかと思い、Workbook Openで組んでみましたが 別のブック扱いなので、やはりエラーが出て悩んでます。 自分としては、どちらの処理でも構わないと思っています。 乱文で分りづらいかと思いますので、追ってソースなど 付け加えさせていただきたいと思います。 現文章で、なにか助言いただける方がいましたら どうぞ宜しくお願いしますm(_ _)m

  • ● Excel VBAでの計算処理

    ● Excel VBAでの計算処理 超初心者です。いろいろ研究したのですが、よくわかりません。 VBAに詳しい方、是非をお教えください。VBAでやりたいことは以下のことです。 (1)あるブックのSheet1、A列の項目の特定のキーワード(例えば”数量”)を検索条件にしてデータを検索し、その行の複数の列(例えばAA列からCC列)の数値データに-1を掛けて正の数をすべて負の数にする。 (2)上記(1)の結果を別のブックの”計算結果”というシートに抽出する。 (3)元のブックには”数量”のほかさまざまなキーワードが設定されたデータが混在しています。また、計算の対象となる列のはじまりと終わりは特定できる。しかし、もとのブックの行数(データ件数)は特定できないとします。 イメージとしては、 元のブックにあるデータ) A列  B列  C列  ・・・・・ AA列 ・・・・ CC列 数量                5000     2376 数量                1234     9932 金額                30000    2099 結果が抽出されたブックのイメージ(結果は別のブックに抽出される) A列  B列  C列  ・・・・・ AA列 ・・・・ CC列 数量                -5000     -2376 数量                -1234     -9932

  • EXCELで複数のブックの特定のセルの合計を求める方法は?

    EXCELの関数,数式で質問です。 <例題>異なる様式の表(数値)で構成された3つのシート(a,b,c)をもつブックが,同じ型式で50個(50ブック)ある。各ブックの特定のシートの特定の数値セル(1~50ブックのbシートのA5セル)の合計を求める数式を示しなさい。 ※この回答の1つは「=1ブックのbのA5+2ブックのbのA5+3ブックのbのA5+4ブックのbのA5+…+50ブックのbのA5」だと思うのです。しかし,いちいち各ブックの対象シート(b)の対象セル(A5)をクリックして数式を完成させるのは大変です。さらに,求めたい特定の数値セルが「bのA5」だけでなく「aのB3」や「cのR6」など,3つ,4つと増えるとすると,同様の数式を入力するのに大変な労力を要します。何か簡単な集計方法(関数,数式)はあるでしょうか。ややこしい質問ですみません。どうぞ御教示ください。

  • excel vbaの関数の使い方

    excel VBAでsumproduct関数を使いたいがでますのですがどうしても実行できません 何が原因でしょうか、どなたか教えてください。 ------------------------------------------------- 下記コードは実行できます。 Worksheets("集計").Range("j4").Value = WorksheetFunction.Sum(Worksheets("日常").Range("h4:h13")) 下記コードは型が違うとのコメントがでます。 Worksheets("集計").Range("j4").Value = WorksheetFunction.SumProduct((Worksheets("日常").Range("c4:c13") >= j2) * Worksheets("日常").Range("c4:c13") <= k2) * Worksheets("日常").Range("d4:d13") = l2 * Worksheets("日常").Range("f4:f13") = m2 * Worksheets("日常").Range("h4:h13") --------------------------------------------------------------------- ワークシートは、日常、集計、の二つがあります。 「日常」には、C4:H13にデータがあります。 c列に年月日、d列にコード番号、e列に購入箇所、f列にコード番号、g列に商品、h列に金額 が入力されています。 「集計」には、j2に開始日、k2に終了日、l2にd列のコード番号、m2にf列のコード番号、 が入力されています。 環境は、windows10 使用しています。 ----------------------------------------------------------- 以上の状況ですがvba でsumproduct関数を使いたいのですが実「実行」できません,たかどなたか教えて頂けませんか。

  • Excel関数

    Excel2003を使用しております。 図の左側、A~C列のような、 処理件数・処理者・日付の項目を入力するシートがあります。 別のシートに、E~I列のような、 日ごとに処理者別に処理件数を返したいのですが、 黄色網掛け部分にどういう関数(数式)を入ればよいのでしょうか? 適した関数を教えて頂きたく、何卒宜しくお願い致します。

専門家に質問してみよう