IIf関数とIF関数

VBAのIIf関数は、3項演算子では無く関数なので、引数にゼロ除算が入ったりすると、エラーが発生します。たとえば、イミディエイトウィンドウで?IIF(True, 1, 1 / 0)とすると、第3引数も評価されて、ゼロ除算の実行時エラー11が出ます。

いっぽう、Excelのワークシート関数であるIF関数は、VBAのIIf関数と同機能ですが、=IF(FALSE, 1/0, 1/1)のようにしても、1が返ります。そこで数式の検証をすると、IF(FALSE,#N/A,1)となっています。関数全体の結果がエラーになるのでは無く、中で第2引数が該当無しエラーと評価され、結果として、意図通りに1が返ります。

でも、たとえば=SUM(1, 1/0)のようにすると、検証でちゃんと?SUM(1,#DIV/0!)となって、戻り値も0除算のエラーとなります(値のエラーでは無く)。

この挙動を踏まえて、VBAでワークシート関数のほうを使って試せないか、と思いましたが、そもそもWorkSheetFunctionオブジェクトにはIfメソッドは無いのでした。ちゃんちゃん。

ちなみに、私はIIf関数を使うべきで無い的な意見には賛同しません。挙動を知って上手く使えば良いだけの話だからです。たとえば、数値の大小の評価をして、それに応じた文字列を変数に入れる、などシンプルな処理の時に使います。

食鳥肉生食による食中毒リスクに関する情報募集

ご存知のかたがあれば、教えてください。

  • 食鳥肉生食を分母にしたカンピロバクター食中毒リスクの推計→鶏の生肉を食べた場合にカンピロバクターにあたってしまう割合
  • 食鳥肉生食に起因するカンピロバクター食中毒者における、ギラン・バレー症候群の発生リスクの推計→鶏の生肉でカンピロバクターにあたった場合の、ギラン・バレー症候群になってしまう割合
  • 食鳥肉生食に起因するカンピロバクター食中毒者における死亡例あるいは死亡リスクの推計→鶏の生肉を食べたせいで死んでしまった人の例、あるいは死んでしまった人の割合
  • 南九州における独自の生食用食鳥肉処理手順について、その効果(カンピロバクター食中毒リスクの低減)を定量的に示したもの→出来れば、時系列的な関連を検討する(基準を立てた・周知した・改定した。同時に食中毒の件数は減った ※したは、そのままではした事でを意味しない)以外のアプローチ

直接的では無いがいくらか関連しそうなもの、を1つ。

【PDF】食品に起因する疾病の負荷推計に関する研究

DALYで害を評価するのは、検診などの評価をQALYでおこなおうというのと同様の方向でしょう。