
http://support.microsoft.com/default.aspx?scid=k …
は、CELL、INDIRECT、INFO、NOW、OFFSET、RAND、TODAY関数が“揮発性”と言っています。
NOW、RAND、TODAY関数は、[再計算]する(TODAY関数の場合は日付が変わる)度にその返り値が変わるので“揮発性”であろうことは理解できます。
ところで、OFFSET関数の場合は[再計算]ではその返り値は変わらないけど、どのようにして当該関数が“揮発性”であることを納得できますか?
マクロは使わないことが前提として、ご回答ください。
ちなみに、
http://www.civil-design.net/free/data/excel/func …
は、AREAS、CELL、COLUMNS、INDEX、INDIRECT、NOW、OFFSET、RAND、ROWS、TODAY関数が“揮発性”と言っています。OFFSETに似た INDEX関数も!(コレ、正しいですか?)
No.3ベストアンサー
- 回答日時:
んーーー
もしかするとこういう言い方も出来ると思いますが,誤解から来た「納得」を納得して貰う方法は提示できません。
>関数の返り値が前と異なっているので、「なるほど揮発性だわい」と得心が行きます。
あなたが着目した,関数の「計算結果が変わる」のは,単に計算の結果に過ぎません。
たとえば「外部ブックを参照している数式」は,外部ブックの参照元データに応じて「ブックを開く都度,計算結果が変わります」が,別にだからといってこれが「揮発性だ」という事にはなりません。
「揮発関数か否か」は,当該の関数が「再計算の必要があってもなくてもいつも再計算される」か,「必要なときだけ再計算され,必要ないときは黙って以前の計算結果を保持している」かという,エクセルの内部事情(設計)の問題です。
ある関数がいま再計算されたのかされなかったかは,ワークシートを眺めているだけでは確認する手段はありません。マクロを使えばある程度可能ですが。
ただし,機能を考えて見ればINDIRECTやOFFSET関数が「揮発性である必然性」は,ある程度理解することはできます。
たとえば,不揮発性関数の例として
=INDEX(B:B,3)
について見てみると,この関数は関数が引数として受け取っている「B:B」のセル範囲に「変化が起きた」(B列のセルに記入・削除された,B列のセルにある数式に再計算が走った)ときに,それらをトリガーとして再計算されます。
B列に変化が無く,代わりに隣のC列で何かしても,この関数は再計算されません。自分の再計算チェーン(参照元)に連ならないセルが変化しても,何もする必要が無いので,何もしないということです。
一方揮発性関数である
A1セルにC2と記入しておいて =INDIRECT(A1)
とか
=OFFSET(A1,2,2)
は機能として,この式ではC2セルやC3セルの値を(再計算して)返す事が求められています。
しかし,これらの関数が調べて値を返すべきセルC2やC3は,引数として受け取っているセルとは全く無関係なセルです。(あるいはINDIRECT("C4")のように書かれたら,そもそもセルを引数で受け取っていません)
従ってこれらの関数は,通常の再計算チェーンによる再計算ルール(不揮発関数の再計算のシクミ)から離れ,とにかくブックの中で「再計算すべきトリガ」が発生したら念のため必ず再計算され,いつでも最新のC2やC3の値を表示します。これが「揮発性である」ということです。
No.4
- 回答日時:
新規ブックのシート見出しをクリックして コードの表示
Private Sub Worksheet_Calculate()
Cells(1, 10) = Cells(1, 10) + 1
End Sub
で 通常の計算が実行されると J1セルが+1される
揮発性は 一気に増える([F9]で再計算もしてみるとよいでしょう)
上記の場合はJ1セルは計算対象にしないような数式にしてください
VBAにあまり精通していないので、正解かどうかは判断できかねますm(_ _)m
No.2
- 回答日時:
Googleで「エクセル関数 揮発性」で照会。
沢山きじがあって、拾い読みすればおおよそのことは判るだろう。難しいことを聞いている割には質問の前に、WEB照会をしたのかな。
http://q.hatena.ne.jp/1137503207
http://www.relief.jp/itnote/archives/001519.php
http://www.civil-design.net/free/data/excel/func …
など。
上記3番目で>INDEX, AREAS, COLUMNS, ROWS関数について、訂正している。
ー
#1で回答されているように、テストとして、新しい白紙のブックに、その関数1種けを、1箇所(セル)だけ利用し、名前をつけて保存し、改めてそのブックを開き、何もせず(セル選択さえしてはダメ)、保存すると、「変更しますか」が出るか出ないいかで、確認できるでしょう。
(またVBAでユーザー定義関数など入れていないようにしないと(Volatileなど入れているとテストにならないおそれあり)
ーー
過去にここの質問に答えているレベルでは、TODAY、NOW、RAND(BETWEEN)ぐらいは、考えておく必要があるが、その他は、自動再計算しても、差し障るような場面は考えにくい(むしろありがたい)。神経質になる必要は無いのではと思う。揮発性の概念は、一般の他言語を含めて関数一般の考察のもので、エクセル関数には、それを当てはめたに過ぎないのではと想像する。
>変更してないのに保存確認メッセージが表示される」、などの解明・説明に役立つぐらいでは。
No.1
- 回答日時:
INDEX関数は揮発性関数ではありません。
>どのようにして当該関数が“揮発性”であることを納得できますか?
簡易な検査方法としては,
実施例:
新しいブックを用意する
A1セルに
=TODAY()
のように揮発性関数(若しくは調べたい関数)を記入する
ブックを保存し,閉じる
改めてブックを開き,何もせずただ閉じる
その際に「保存しますか」を聞いてくれば,それは揮発性関数です。
この回答への補足
》 改めてブックを開き,何もせずただ閉じる
》 その際に「保存しますか」を聞いてくれば,それは揮発性関数です。
その方法は承知していました。
=NOW() や =RAND() もそうですが、これらは「改めてブックを開」いたときには当該関数の返り値が前と異なっているので、「なるほど揮発性だわい」と得心が行きます。
しかし、OFFSET関数の場合は、「改めてブックを開」いても変化が見えないので「何処が揮発性なの?」と思うのです。
「MSが(説明や警告メッセージ等で)そう言っているから」でなく、「なるほど揮発性じゃわい」と“実感”できる方法をお尋ねした次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- 発達障害・ダウン症・自閉症 発達障害の人はIT関係で才能を発揮するみたいなニュースをよく聞きますが、本当ですか?ASDやADHD 7 2022/09/20 13:33
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
このQ&Aを見た人はこんなQ&Aも見ています
-
「それ、メッセージ花火でわざわざ伝えること?」
「それ、メッセージ花火でわざわざ伝えること?」というメッセージを教えて下さい
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
準・究極の選択
「年収1000万円で一生カレーライス」か「年収180万円で毎日何でも食べ放題」
-
INDIRECT関数の代替方法は?
Excel(エクセル)
-
揮発性関数の語源・由来は何ですか?
Excel(エクセル)
-
特定のシートのみ再計算させない方法は?
Excel(エクセル)
-
-
4
【Excel】 SUMPRODUCT関数の高速化
Excel(エクセル)
-
5
SUMIFに変わる(代用)数式を教えてください
Windows 7
-
6
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
7
エクセルファイルをオープンしたときの再計算について
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
10
多量のSUMIF式を軽くしたい
Access(アクセス)
-
11
”ギリギリ” を丁寧に言うには
日本語
-
12
Excelで、条件と一致する最後のセルを検索したい
Excel(エクセル)
-
13
自分の左隣のセル
Excel(エクセル)
-
14
ファイルを開いた時、セルをクリックした時など何をするにも再計算が始まって何分か止まってしまいます。
Excel(エクセル)
-
15
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数式の計算結果により表示され...
-
Excel 関数? 文字列に...
-
AかBに入力があった時Cに反映、...
-
ヘッダー
-
IF関数で、時間を条件にしたい...
-
EXCELの関数に関する質問です
-
エクセルで、時間の計算をした...
-
Excelの文字入力にタイムラグが...
-
エクセル・計算式をテキストデ...
-
エクセルで比率を計算
-
エクセルで同じ計算式を入れて...
-
エクセルの使い方 1日=7時間45...
-
エクセルで 足し算や割り算の...
-
計算結果が「0」のセルだけを「...
-
IF関数で出した数値をSUM関数で...
-
エクセルで足し算と掛算を混ぜ...
-
エクセルでの時間計算(2時間30...
-
多項式の計算
-
エクセル 1万時間を越える際の...
-
Excelの計算式内の文字列の一括...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ヘッダー
-
Excel 関数? 文字列に...
-
数式の計算結果により表示され...
-
AかBに入力があった時Cに反映、...
-
エクセルで、時間の計算をした...
-
IF関数で、時間を条件にしたい...
-
EXCELの関数に関する質問です
-
エクセル・計算式をテキストデ...
-
Excelの文字入力にタイムラグが...
-
エクセルの使い方 1日=7時間45...
-
エクセルでの時間計算(2時間30...
-
TEXTCALCの使い方
-
IF関数で出した数値をSUM関数で...
-
エクセル 月数を0.5ヶ月単位で...
-
エクセル 1万時間を越える際の...
-
エクセルで 足し算や割り算の...
-
エクセルで足し算と掛算を混ぜ...
-
sum 範囲を横に可変したいです...
-
エクセルで数値を50単位で切...
-
計算結果が「0」のセルだけを「...
おすすめ情報