Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
再計算の回避について
投稿日時: 26/05/12 17:52:57
投稿者: どなどな

いつも参考にさせていただいています。
長文となりますが、お付き合いください。
 
今まで繰り返し使っていた表で、先月までは値コピーをしても
再計算が走らなかったのですが、先週値コピーをしたら再計算が走り
想定よりも時間がかかってしまいました。
 
自分が思いつくのは計算方法を手動にすることしか思いつかず
再計算が走らないような方法等なにかありましたらアドバイスいただけませんでしょうか。
 
 
流れとしましては以下のような感じです。
毎月2つの基幹システムから出力した受注値、売上値をピボットテーブルで集計し
各部門に展開表を配布しています。
 
自分がやっている手順ですが
 @2つの基幹システムから出力した受注値、売上値をそれぞれピボットで集計
 A集計結果を別ファイルの展開表(基)に値コピー
   展開表(基)の構成  計6シート
    ・1シートに下表が14部門分と本店計・支店計・全社計(sumif関数で集計)の3集計分
    ・累計別(1Q、2Q累計、3Q累計、年間)で4シート
    ・2つの基幹システムの集計結果の値コピー用に2シート
     (下表の区分の1・2は2つの基幹システムの意味です)
 B値コピーした数値を各累計シートの下表の当月集計値列に入力してあるxlookup関数で転記
 C各部門へ配布用にxlookup関数無しverの展開表を作成し配布
 
こんな感じです。
で、再計算が走るのはAの値コピー時です。
下表の構成は変更できないので、可能であればそれ以外でアドバイスいただけると嬉しいです。
よろしくお願いします。
 
 
 

部門	大事業	中事業	小分類	区分	事業計画	先月集計値	当月集計値	
					受注	売上	受注	売上	受注	売上
営業部	A事業	a事業	あ	1						
			い	1						
			う	1						
				2						
			う 計							
		a事業 計	1						
				2						
			計							
		b事業	か	1						
			き	1						
				2						
			き 計							
		b事業 計	1						
				2						
			計							
	A事業 計		1						
				2						
			計							
	Y事業	y事業		1
				2
			計	
		z事業		1
				2
			計	
	Y事業 計		1
				2
			計				
営業部 計			1						
				2						
			計							

回答
投稿日時: 26/05/12 23:16:42
投稿者: simple

(1) Aの値コピーでは基本的には計算は発生しないと思います。
(2) Bで値コピーしたセルを参照する計算式があるなら、その計算は発生します。
 
(1)の箇所はCalculateイベントプロシージャが起動するかどうかで確認はできます。
 
ただし、(これ以下が重要です)、
ワークシートに揮発性関数(INDIRECT 、 OFFSET 、 TODAY 、 NOW などですね)があると、
どれかのセルが変更(値コピーされてセルの値が変更されることを含む)されると、
その揮発性関数が変更されたセルを参照していなくても、ワークシートのどれかのセルが変更されたら、
それらの揮発性関数が再計算されます。(それが揮発性関数の特性です。)
 
ですから対応策は揮発性関数を使わないようにすることでしょうか。
(現実的に可能かどうかはものによるのでないでしょうか。私はそのあたりよく知りません)
 
# どのくらいの計算時間なんでしょうか、コーヒーでも飲んで休憩するとか、別の仕事をするとか
# 割り切るのも一つの方法かも知れません。

回答
投稿日時: 26/05/13 05:11:24
投稿者: んなっと

ピボットテーブルの新機能の自動更新が関係しているかもしれません。
オフにしてみてください。
リボンの[ピボットテーブル分析]→[自動更新]

投稿日時: 26/05/13 10:15:10
投稿者: どなどな

simpleさん、んなっとさん
 
ご回答ありがとうございます。
原因分かりました。
INDIRECT関数が影響してました。
試しに該当箇所を削除して値コピーしても再計算走りませんでした。
 
質問した箇所以外のセルでINDIRECT関数を使っていまして
値コピーの際にINDIRECT関数を使っているセルには全く影響しない箇所だったため
手順の説明からすっかり抜け落ちてました。
 
指摘されてみて、そうだよなー、揮発性関数は再計算するっていうよなーと思いつつ
今まで値コピーの時に再計算が走ることが無かったので
今回の再計算の原因になってるとは全く思いついてませんでした。
 
INDIRECT関数のところは、一旦新たに別ファイルに移してみて
今後どうするか考えてみようと思います。
 
お付き合いいただき、ありがとうございました。