- ベストアンサー
Access 0で除算(並べ替え)
Accessでレポート及びその元になるクエリを作成中なのですが 前年比を並べ替えしようとすると0で除算してしまいます。 これは前年比の計算対象の数値に0が含まれるのが不味いと思い IIFで""にしたのですが今度は抽出条件でデータ型が一致しません。 計算した前年比を降順したいのですが方法は無いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> IIFで""にしたのですが今度は抽出条件でデータ型が一致しません。 IIF関数では、第1引数の結果に関係なく、第2引数と第3引数の演算が行われますので、 第2引数(または第3引数)のエラーの回避には使えません。 (「IIF([前年]=0, "", [今年]/[前年])」とした場合であっても、「[前年]=0」のデータがあると 第3引数がエラーとなるため、式全体としてもエラーが返されます) クエリ内で、エラーを含むフィールドでの結合や並べ替え、絞り込みを行うと「データ型が 一致しません」というエラーメッセージが返されますが、これは、「エラー」というのが、 並べ替えなどのできない、特殊なデータ型のためだと思います。 ですので、「前年データが0のもののクエリ」と「前年データが0にならないもののクエリ」を 作成した上で、これらを合わせた形のユニオンクエリを作成して、これをレポートのレコード ソースにすることを、代替案として提案します。 <イメージ> クエリ1: Select ID, "(前年なし)" As 前年比 From テーブル1; クエリ2: Select ID, [今年]/[前年] As 前年比 From テーブル1; クエリ3: Select * From クエリ1 Union Select * From クエリ2 Order By 前年比 Desc; (データの内容によっては、「Union」の代わりに「Union All」にした方がいいかもしれません)
その他の回答 (2)
#1です。 表示するときにゼロが煩わしいなら、表示書式で「#0.00;-#0.00;-」で、 できませんかね。
エクセルで培った悪しき習慣が出てしまいましたね。 Iif(Nz(前年実績,0)=0,0,本年実績/前年実績) で良いのでは?