4枚のシートからなるファイルがあります。
【シート1】インターフェース(変動要因の数値を入力する)
【シート2】最終的な計算結果を表示する
【シート3】DBその一
【シート4】DBその二
という構造です。
シート1で入力した数値によってシート3を参照し、シート1の次の選択肢が変更され、シート4がそれによって変動し、最終的にシート2に反映されるという構造です。
シート1
 ↓
シート3
 ↓
シート1
 ↓
シート4
 ↓
シート2 がフローチャートで全てのシートに関数があります。
関数及びデータが膨大なためファイル容量が3Mほどあり、
選択肢を変動させるのにとても時間がかかって困っています。

 そこで、
シート4
 ↓
シート2 の部分だけ、自動で計算されずに、
何らかの指令を下してから、
計算されるような制御が可能でしょうか?
(マクロ等で)

可能であればどのような方法をとればよいでしょうか?
よろしくお願いします。

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

A 回答 (4件)

Private Sub Worksheet_Change(ByVal Target As Range)


からシート4を削除するのはOKです。

Sub ボタン1_Click()
にシート4を追加する必要はありません。
Application.Calculate
で全部のシートの再計算を行っています。
    • good
    • 0
この回答へのお礼

 arataさん、109111の際もお世話になりました。
詳しい説明により、
アウトラインが見えて来たおかげで、
思うように仕上げられました。

 ありがとうございました!

お礼日時:2001/07/27 14:04

ご質問は、



シート1
 ↓
シート3
 ↓
シート1
 ↓
シート4

この流れの間は、計算はさせたいが、

シート4
 ↓
シート2 

については、シート2の計算をとめておいて、シート4までが確定したところで、シート2の計算を一気にやらせたいということだと解釈したのですが、間違っていたらごめんなさい。

お話の感じだと、現在は、マクロを使用せず、VLookupなどのデータベース関数などで処理を行っているのだと思います。

また、最終的にシート2の結果を見るときは、ボタンなどを用意して、シート2を選択させるのではなく、ご自分でシート2をクリックして見ているのではないでしょうか?

これを前提条件として、(うまくいくかどうか、詳しい情報がないため、判断できないのですが、)このようにしてみてはいかがでしょうか

1.このブックを開いたら、自動計算しないようにする。
2.シート1の内容が変わったら、シート1、シート3とシート4の計算を実行させる。
3.シート1にボタンを配置し、全ての選択が終わったらこのボタンを押すことにし、このボタンによって、シート2の計算を実行させる。
4.このブックが閉じるときには、自動計算をする状態に戻す。

まず、対象のブックを開いた状態で、ALTキーを押しながらF11キーを押してください。これでVisual Basic Editorが起動します。

左上のプロジェクトエクスプローラーにあるThisworkbookをダブルクリックして、右側のコードウィンドウを開き、下記を記述します。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Calculation = xlCalculationAutomatic
End Sub

Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub

これは、最初のが、ブックが閉じるときに、計算の機能を自動にするもの。あとのが、ブックが開いたときに自動計算を手動にするものです。

次に、左上のプロジェクトエクスプローラーのシート1をダブルクリックして、右のコードウィンドウにシート1のモジュールを開き、下記を記述します。

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("シート1").Calculate
Worksheets("シート3").Calculate
Worksheets("シート1").Calculate
Worksheets("シート4").Calculate
End Sub

計算の順番が、問題になるかもしれません。

Visual Basic Editorを閉じて、ブックのシート1にボタンを貼り付けます。

メニューの[表示]-[ツールバー]-[フォーム]にあるボタンを押して、シート上にボタンを貼り付けます。

ボタンを貼り付けるとマクロの登録のダイアログが開くので、[新規作成]のボタンをクリックします。

Sub ボタン1_Click()

End Sub

こういうのができると思います。これを編集します。

Sub ボタン1_Click()
Application.Cursor = xlWait
Application.ScreenUpdating = False
Application.Calculate
ThisWorkbook.Worksheets("シート2").Select
Application.ScreenUpdating = True
Application.Cursor = xlDefault
End Sub

マウスカーソルを、砂時計にして、計算速度を上げるため、画面表示の更新を止めて、計算を実行、シート2を選択、画面の更新を行い、マウスカーソルを元に戻す。

ということをやっています。

以上で、終わりです。
シート1、シート2、シート3、シート4は実際のシートの名前に修正してください。

前提条件が間違っていたらまるっきり駄目かもしれません。また、計算の順番で間違った答えがでるかもしれませんので、ご注意ください。

この回答への補足

ご丁寧な回答ありがとうございます。
ご指摘のとおり、ひたすらVLOOKUPで引き当てているようなファイルです。
シート2を見るときは、シート1からハイパーリンクでシート2を繋いでみています。
 そして、私の表現が悪かったのですが、
シート4とシート2の計算を止めたかったのです。Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("シート1").Calculate
Worksheets("シート3").Calculate
Worksheets("シート1").Calculate
Worksheets("シート4").Calculate
のシート4の部分を削除して、
Sub ボタン1_Click()
Application.Cursor = xlWait
Application.ScreenUpdating = False
Application.Calculate
ThisWorkbook.Worksheets("シート2").Select
Application.ScreenUpdating = True
Application.Cursor = xlDefault
End Sub
に、シート4も計算するというようなことを、
付け加えればよいのでしょうか。

補足日時:2001/07/25 18:10
    • good
    • 0

それでは 先ほどの補足をさせていただきます。



マクロ等で記述した場合、おのおの実行させる関数(ファンクション)を用意しますよね。 その関数の一番初めでよろしいのではないでしょうか?

例) 
function テスト処理!!

'処理を行っている場合だげ、自動計算を行わない
Application.Calculation = xlManual


    (処理)

'処理が終了するので自動計算を行う
Application.Calculation = xlAutomatic

end function


また、この命令は、セルの自動計算を手動/自動とするものです。 
手動にした場合は、次の自動にする命令がくるまで、ずっと手動になってしまいますのでご注意を・・・・・(また逆も同じ)
    • good
    • 0
この回答へのお礼

 補足をありがとうございました。
参考になりました。ありがとうございます。

お礼日時:2001/07/27 14:00

自動計算を止める物ならば、ありますよ



'計算方法 => 手動
Application.Calculation = xlManual
'計算方法 => 自動
Application.Calculation = xlAutomatic

但し、方法を用いると、全体のセルの自動計算がストップします。

この回答への補足

早速のご対応ありがとうございます。
このコマンド?
は、どこにどのように書き込めばよろしいでしょうか?
マクロやVBAの知識が乏しいもので、
ご教示いただけましたら幸いです。

補足日時:2001/07/25 10:53
    • good
    • 0

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

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

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

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

Q粉砕機のようなミル

大豆やトウモロコシみたいな穀類を粉砕して、鶏用の飼料を自分で作りたいなと思っているのですが、どなたか家庭用の粉砕機を使っておられる方、又は粉砕機についての情報をお持ちの方はいないでしょうか?
電動ミルでもいけそうなんですが、強度的にどうでしょうか?
そんなにしょっちゅう使わないんで出来たら安価な方がいいんです。
よろしくおねがいいたします。

Aベストアンサー

一度に大量に粉砕しないのであれば、こちらが使えると思います。

http://www.i-cg.jp/millser/index.html

http://www.343471.com/TmcPc/frmSyohin5.aspx?syohin=07-09980

http://www.amazon.co.jp/exec/obidos/ASIN/B0002CET4E/503-4562530-2615102


以前、実演販売で見ましたが、大豆をあっという間に粉砕し、きな粉にしていました。モーターを回転させる時間によって、荒引き、細引きに調節出来ます。

また、粉砕すると直ぐに酸化しますので、使用分を毎回少量づつ粉砕することをお奨めします。

QExcel:数値が入力されている最終セルのひとつ前(上)を常に他のシートに自動表示

http://okwave.jp/qa3845762.html
にて、数値が入力されている最終セルを常に他のシートに自動表示させる方法をご教示いただきました。

この関数で自動表示させるセルのひとつ前を同じく自動表示させる方法はないでしょうか?
リンク先の例では、
(Sheet2)A1=MAX(Sheet1!B:B)
という数式でA3に2007/2/28、B3に100、A4に2007/3/31 B4が500、となった場合、Sheet2のA1は500、と表示され、Sheet2のB1は100と表示されるように出来ないか?ということです。

度々判りづらい質問で恐縮ですが、よろしくお願いいたします。

Aベストアンサー

A1=VLOOKUP(MAX($A$3:$A$10),$A$3:$B$10,2,0)
B1=VLOOKUP(LARGE($A$3:$A$10,2),$A$3:$B$10,2,0)
または、
A1=MAX($B$3:$B$10)
B1=LARGE($B$3:$B$10,2)

Q粉砕機について。。。教えて下さい

宜しくお願いします。

現在、粉砕機の購入を検討しています。

ホームセンターに行きますと3~5万円位で売っています。

落ち葉、枯れ木、などを細かくしたり それを腐葉土にして畑、ガーディニングに使用したいと思っています。

粉砕機を実際に使っている方粉砕機を使って良い点、意外な点、不便な点など感想を教えて下さい

Aベストアンサー

使われる破砕機がどの程度のもか分かりませんので、はっきりとは申し上げられませんが、3万~5万程度のものであれば、草程度のもですね。
大きくても小枝程度でしょう。破砕する草木の大きさは別に考えることにして利点・欠点は、
1.剪定した時などにも大きなゴミが出ないので、ゴミ処理が楽。
2.腐葉土になるまでには約半年掛かるので、保管する場所が必要。
3.腐葉土にせずに、破砕したままでバークチップとして花壇などに撒けば、雑草が生えにくく、乾燥しにくく水持が良くなる。
4.破砕機を保管する場所が必要。
5.回転する部分が多いので、結構手入れが大変。

出来れば15万円程度出費されるともう少し程度の良いものが購入できます。

QExcel:数値が入力されている最終セルのひとつ前(上)を常に他のシートに自動表示

http://okwave.jp/qa3850667.html
にて質問したのですが、このときは下のセル(新しいデータ)の数値が上のセル(古いデータ)の数値を下回ることがなかったのでこれでよかったのですが、今回は数値の大小が順不同です。

整理して説明しますと、以下の通りです。

Sheet1のD2に「0」、D3に「151」、D4に「121」、D5に「89」という数値が入力されているとします。
このとき、Sheet3のF21に「121」を表示させたいのです。
当然、Sheet1のD6に新たに何らかの数値が追加されればSheet3のF21には「89」が表示されなくてはなりません。
ちなみにD列への入力は制限なしです(何行目まで入力するかは未定)。

http://okwave.jp/qa3850667.html
で御教示いただいた数式ですと、「151」が表示されてしまいます。
色々自力で調べてみたのですが、どうしても解らず質問させていただきました。

よろしくお願い致します。

Aベストアンサー

=INDEX(Sheet1!D:D,SUMPRODUCT(LARGE((Sheet1!D1:D100<>"")*(ROW(Sheet1!D1:D100)),2)))
または、
=INDEX(Sheet1!D:D,SUMPRODUCT(LARGE((Sheet1!D:D<>"")*(ROW(Sheet1!D:D)),2)))

Q手動のハイローチェアってどう使う?

電動または手動のハイローチェアの購入またはレンタルを考えていますが、手動のほうの使い方がいまいちわかりません。手動なのに「1分間55分の揺れ」とか書いてあったりして。手動でもずっと手でゆらしておくんじゃなく、一度ゆらしたら何分かは揺れ続けてくれるものなんでしょうか。どのへんを持ってどうやって揺らすんでしょう・・・

電動/手動でよかったこと悪かったこと、いつ頃からいつ頃まで使ったか、などお使いになった感想などを教えていただけると嬉しいです。

Aベストアンサー

揺らす回数については↓の方々と同じくです。
うちの子は、ほとんどぐずらない子で、実はあまり揺らしたことがありません^^;なので、心から手動にして良かったと思いました。
もちろん、たまにぐずった時に揺らすとピタリ!と泣き止みました。
サブベット代わりに、とても重宝しました!
あとベビーバスを卒業してからは、お風呂に一緒に入るようになったんですが、お風呂上りに、タオルを一面に引いたハイローチェアにわが子を乗せてくるみ、その間に私は体をささっと拭いて入浴は旦那なしで乗り切りました。

それから、揺れが嫌いな子もいる・・・かもしれませんが、これは産まれてしばらくするとなじめない子もいるようですが、すぐに慣らしてしまえば
大丈夫な気がします。

QExcel:数値が入力されている最終セルのひとつ前(上)を常に他のシートに自動表示のYouyouさんへ

◆数値でしたね
◆数値、文字列、空白が混在した場合、最終の数値のセルのひとつ前(上)の数値を抽出します
★たとえば下の場合「89」になります
   D
1
2  0
3  151
4  121
5  89
6
7  ppp
8  oiu
9  457

Aベストアンサー

これは質問ですか?

Q動画のサイズを手動で変える方法を教えてください

すみません。
動画のファイル形式(aviやmp4)を
手動で変えることはできませんが、

動画サイズは手動で変える方法ありますか?
pcでgom playerを通せば、
簡単に動画のサイズを手動で変えることができますが、
psp(勿論MP4形式にして)でみる場合は、
サイズは手動で変えられません。

だから、動画サイズのためだけで、
動画変換ソフト使うと時間がかなりかかります。

だから、pcで手動でサイズを変更し、
pspにいれたいのですが、
できないのでしょうか?

そしたら、かなり楽なんですけど。

Aベストアンサー

>pcでgom playerを通せば、
簡単に動画のサイズを手動で変えることができますが、

解像度のことでしょうか?
GOMでは変更できません。
小さく(大きく)表示しているにすぎません。

**変換ソフトは必ず必要になりますよ。

QExcel:数値が入力されている最終セルを常に他のシートに自動表示

解りづらいかもしれませんが・・・。

複写機の検針用にexcelで集計および請求書を作成しようと思っています。

sheet1のA1に訪問日、B1に訪問時のカウント数、C1に使用カウント数、D1に控除カウント数、E1に請求カウント数、F1に請求金額と項目名を表示
A2に2007/1/31、B2に50、C2に0、D2に0、E2に0、F2に0
A3に2007/2/28、B3に100、C3に数式[B3-B2]、D3に5、E3に[C3-D3]、F3に[E3*5]という風に毎月累積していきます。

これをsheet2のA1にB列の訪問時のカウント数の最新数値を常に表示させたいのですが、どういう方法がありますか?

例のままですと最新月日が2007/2/28ですので、sheet2のA1の数値は「100」ですが、これが2007/3/31のB列の数値が「500」になったら、sheet2のA1も「500」になって欲しいのですが、そういうことは可能ですか?
可能なら、方法を御教示下さい。

Aベストアンサー

#1です。

#1では一般論としていろいろ書きましたけど、
状況に特化して考えるなら、[訪問時カウント数]が減ることはない、という前提で、
単に、

 =MAX(Sheet1!B:B)

とすれば良いかも。^^;

Q手動両面印刷の方法

 手動で両面印刷をする場合、まず奇数ページを印刷し、手で反転させて偶数ページを印刷するというやり方で、どんなプリンタでもできるのでしょうか?

 単純なことを質問してしまいますが、今、使っているエプソンのインクジェットプリンタ(自動両面印刷機能なし)には、ドライバのプロパティのところに「両面印刷」という項目があって、手動で両面印刷する場合に自動的に奇数、偶数を割り振って、図で指示してくれたりアシストしてくれるのですが、今度、購入を検討しているキャノンのモノクロレーザープリンタ(自動両面印刷機能なし)には、ドライバに手動両面印刷の項目はなく、自分で奇数、偶数を別に印刷しなければなりません。
 このような、手動両面印刷のアシスト機能?がないプリンタでも、それほど気を使わず簡単に手動両面印刷できるものなのでしょうか?紙の向きや印刷の方向で混乱したりしないでしょうか?
 それとも、手動両面印刷するなら、最初からそのアシスト機能がある機種を使ったほうがよいのでしょうか?
 よろしくお願いいたします。

Aベストアンサー

>それほど気を使わず簡単に手動両面印刷できるものなのでしょうか?
できないことはありませんが……

>紙の向きや印刷の方向で混乱したりしないでしょうか?
慣れるまでは大変です。

>最初からそのアシスト機能がある機種を使ったほうがよいのでしょうか?
もちろん。
それよりも両面印刷ユニット付きをお勧めしますが。

Qエクセルで、6桁の数値から、大きな位の数値から4桁を取り除き、残る数値を表したい。

初心者です。

エクセルのセルに6桁と7桁の数値が
不規則に並んでA列に入っています。

6桁でも7桁の数値でも、大きな位の数値から4桁を取り除き、
1の位と10の位の2桁の数値、7桁では、3桁の数値に
B列に入れたいのですが、数式を使って出きることですか?

例)846529 の場合には 29、
2576846 の場合には846.が欲しい。

よろしくお願いします。

Aベストアンサー

A1に値が入っていたとして、他のセルに

=VALUE(RIGHT(A1,LEN(A1)-4))

を入れてください。
もし、文字列で良いのであれば、VALUEは入らないので、

=RIGHT(A1,LEN(A1)-4)

で良いですね。
4文字以下の時はどうしますか?


人気Q&Aランキング

おすすめ情報