Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


603 / 13645 ツリー ←次へ | 前へ→

【79418】ユーザー定義関数の中でセルの値を参照する りった 17/10/13(金) 12:18 質問[未読]
【79419】Re:ユーザー定義関数の中でセルの値を参照... マナ 17/10/13(金) 20:25 発言[未読]
【79487】Re:ユーザー定義関数の中でセルの値を参照... りった 17/10/27(金) 13:14 お礼[未読]
【79420】Re:ユーザー定義関数の中でセルの値を参照... γ 17/10/14(土) 7:51 発言[未読]
【79427】Re:ユーザー定義関数の中でセルの値を参照... γ 17/10/19(木) 8:11 発言[未読]
【79485】Re:ユーザー定義関数の中でセルの値を参照... りった 17/10/27(金) 13:10 お礼[未読]
【79424】Re:ユーザー定義関数の中でセルの値を参照... まっつわん 17/10/18(水) 14:05 回答[未読]
【79486】Re:ユーザー定義関数の中でセルの値を参照... りった 17/10/27(金) 13:12 お礼[未読]

【79418】ユーザー定義関数の中でセルの値を参照す...
質問  りった  - 17/10/13(金) 12:18 -

引用なし
パスワード
   ユーザー定義関数の中でセルの値を参照すると(引数にしないと)、セルの値が変わっても再計算されないようです。
多数のセルを参照して値が決まる情報が有り、その情報を各所で使うため引数なしで使いたいのですが、再計算されないのでは困ります。
何かうまい回避策有りますでしょうか?

イメージ:
下記、1.ではなく2.の形で書きたいが、2.にすると販売員役職CD等が変わっても再計算されない。
1.最高値引き率(販売員役職CD,定価,商品カテゴリー,顧客ID)*定価*数量
2.最高値引き率()*定価*数量

(販売員役職CD,定価,・・・は、名前定義したセル)

【79419】Re:ユーザー定義関数の中でセルの値を参...
発言  マナ  - 17/10/13(金) 20:25 -

引用なし
パスワード
   ▼りった さん:

>何かうまい回避策有りますでしょうか?

application.volatile を使うとできますが、
無関係のセルが変更されても再計算されてしまいますので
うまいとは言えないです。

【79420】Re:ユーザー定義関数の中でセルの値を参...
発言  γ  - 17/10/14(土) 7:51 -

引用なし
パスワード
   すでに適切な回答をいただいています。

以下、参考のためのメモです。
(1)
ht tps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q108658705

(2)
ht tps://msdn.microsoft.com/ja-jp/library/office/ff700515(v=office.14).aspx
> 揮発性関数
> 揮発性関数は、参照元が変更されていないように思われる場合でも、再計算のたびに必ず再計算されます。揮発性関数を多用すると、再計算のたびに計算速度が低下しますが、全計算には影響しません。Application.Volatile を関数のコード内で指定すると、ユーザー定義関数を揮発性関数にできます。
>
> Excel の組み込み関数の中でも、RAND()、NOW()、および TODAY() は、言うまでもなく、揮発性関数です。また、OFFSET()、CELL()、INDIRECT()、および INFO() も揮発性関数です。
>
> 以前は揮発性関数として記載されていたが、実は、揮発性関数でないものに、INDEX()、ROWS()、COLUMNS()、および AREAS() があります。
((注)↑は、Excel2010を前提とした記述です)

質問にある、手法2を使いたい理由は何ですか?
記述のための労力節約ですか? コピーペイストすればさほどではないのでは?
式の明瞭性を確保する観点からも本来の1の使い方を私は推奨します。

Application.Volatileは、ユーザー定義関数を揮発性関数にする仕組みですが、
どの程度のセルでこの関数を使うかによりますね。
もしTODAY,NOW,INDIRECT,OFFSETを多用する方であれば、すでに揮発性関数を経験済み。
気にならないのであれば、それを使うのもアリかもしれません。

【79424】Re:ユーザー定義関数の中でセルの値を参...
回答  まっつわん  - 17/10/18(水) 14:05 -

引用なし
パスワード
   すでに適切な回答がありますが、別案です。

セルに名前を付けておられるようですが、
数式にも名前を付けられます。
そちらを使ってみてはいかがでしょうか?

www.eurus.dti.ne.jp/~yoneyama/Excel/name.htm#siki_name

【79427】Re:ユーザー定義関数の中でセルの値を参...
発言  γ  - 17/10/19(木) 8:11 -

引用なし
パスワード
   要望どおりのものがなくても、
返事くらいするのがマナーじゃないですか?

【79485】Re:ユーザー定義関数の中でセルの値を参...
お礼  りった  - 17/10/27(金) 13:10 -

引用なし
パスワード
   済みません。返信見落としてました。
> 質問にある、手法2を使いたい理由は何ですか?
式が変わりうるからです。

【79486】Re:ユーザー定義関数の中でセルの値を参...
お礼  りった  - 17/10/27(金) 13:12 -

引用なし
パスワード
   >数式にも名前を付けられます。
ありがとうございます!!
そんなことが出来るんですね。
完全解決しました。

【79487】Re:ユーザー定義関数の中でセルの値を参...
お礼  りった  - 17/10/27(金) 13:14 -

引用なし
パスワード
   回答ありがとうございます。
自分が今使っているファイルだと、無関係のセルが変更されても再計算されるのはまずそうです。

603 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free