• ベストアンサー

Access 0で除算(並べ替え)

Accessでレポート及びその元になるクエリを作成中なのですが 前年比を並べ替えしようとすると0で除算してしまいます。 これは前年比の計算対象の数値に0が含まれるのが不味いと思い IIFで""にしたのですが今度は抽出条件でデータ型が一致しません。 計算した前年比を降順したいのですが方法は無いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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)

noname#79209
noname#79209
回答No.2

#1です。 表示するときにゼロが煩わしいなら、表示書式で「#0.00;-#0.00;-」で、 できませんかね。

noname#79209
noname#79209
回答No.1

エクセルで培った悪しき習慣が出てしまいましたね。 Iif(Nz(前年実績,0)=0,0,本年実績/前年実績) で良いのでは?

関連するQ&A