• ベストアンサー

Access 0で除算(並べ替え)

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

  • sskj
  • お礼率24% (75/303)

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

  • ベストアンサー
  • 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

  • アクセスでレポートを作成しましたが、前年比の計算で0割りでエラーがでて

    アクセスでレポートを作成しましたが、前年比の計算で0割りでエラーがでてしまいます。 ボックスで=IIf([前期売上の合計]=0,Null,[前期売上の合計]/[前々期売上の合計]*100)と してみましたが駄目でした。NULLが聞いていないようですがなぜでしょか? 解決方法を教えてください。 (クエリで先に前年比を出さないと駄目ですかね?)

  • アクセス クエリ

    アクセス クエリの抽出について教えて下さい。例えば、1つのクエリの中に数値のフィールドが5つ作成してあり、それぞれ違うフィールドの抽出条件をしています。それぞれの条件を入れてしまうと5つのフィールド条件全てに合ったものしか抽出できません。 5つのフィールドのうち、どれでも1つ一致したら抽出できるようにしたいのですが良い方法を教えて下さい。宜しくお願いします。

  • Accessの使い方についてご質問。

    Windows7、Access2010を使って、データベースの作成をしています。 レポートから、別のレポートへ行く方法について質問です。VBAを使わず、Accessの機能ですませたいです。 テーブルから、パラメーターを使って特定のデータを抽出する、クエリを作成・レポートにしました。 現状は、あるレポートに設置したボタンをクリックすると、前記したパラメータ―クエリが発動、ユーザーに条件を入力させます。入力・OKボタンを押すと、レコードを抽出、条件に合ったデータのみが表示されたレポートへ行く仕組みです。 使う相手に入力させる手間をかけさせず、レポートからレポートへ行く方法を探しています。行く先のレポートは、条件分岐や抽出によって、特定のレコードのみ表示させたいのですが、今のところ、パラメータークエリをレポート化、ボタンにそのクエリを埋め込んで、クリックするとそのクエリが発動して、条件をユーザーに入力させ、一致したレコードのみが表示されたレポートに行く仕組みしか方法が分かりません。パラメーターにわざわざ入力させずにすむ、良い方法がありましたら、ご教授をお願いします。 理想としては、ボタンを設置してあるレポートに、抽出対象となるレコードが一覧で並んでいますので、それをクリックしてジャンプできるか、それらのレコード横にボタンを用意して、そのボタンを押すことで、レポートに行くことができればいいのですが。 宜しくお願い致します。

  • ACCESSのクエリ:抽出条件で型が一致しません

    ACCESSでクエリを作ったのですが 実行すると、 「抽出条件で型が一致しません」のエラーが出ます 問題となっているヶ所は テーブルのフィールド定義がバイナリーになっています そして、クエリで   フィールド   テーブル   並べ替え   表示   抽出条件   または となっていますが、 この抽出条件に、1、を入れました テキスト型なら、"1" 数値系型なら、1、でいいのか、と思ったのですが バイナリ型は別の表現があるのでしょうか よろしくお願いします

  • ACCESS 除算での小数点切上げ方法

    こんにちは。 ACCESSを使った入力フォームにて、除算の自動計算を考えております。 テキストボックスAに入力された数値÷テキストボックスBに入力された数値  の結果をテキストボックスCに小数点切り上げで計算するにはどうしたらいいでしょうか? ご回答よろしくお願いします。

  • アクセスのクエリの並び替えについて

    売上の前年比の表を作っています。 店名 今年度  前年度  前年比:[今年度] / [前年度] というクエリを作っています。 今年度と前年度はいくつかのデータを合計した値が入っています。 *例えば今年度は4月から8月までの合計売上です。 このクエリを前年比の高い順に並べ替えたいのですが、 前年比の並べ替えを降順にして実行しようとすると、 『指定されたフィールド'[今年度]'がSQLステートメントの FROM句にある複数のテーブルを参照しました』 というメッセージが出てしまいうまく行きません。 このクエリでは並べ替えをせずに、別のクエリをつくり、 前年比を式ではない状態で並べ替えてあげればうまく行くのですが、 あまりにも無駄な作業だと思うので・・・。 どなたか解消方法を教えてください。 よろしくお願い致します。

  • アクセス エラーを数値「0」に変換するには

    こんばんは。 テーブル1のフィールド1を、テキスト型にし 1 2 3 あ と入力しました。 クエリを作成し、 SELECT CLng([テーブル1]![フィールド1]) AS 数値に変換 FROM テーブル1; とした場合、 「あ」の部分が数値に変換できないため、「#エラー」となります。 このままだと、並べ替えをしようとすると 「抽出条件でデータ型が一致しません。(Error 3464)」 となるため、「#エラー」を0へ変換したいのですが、 やり方がわかりません。 IIFなどを使うのでしょうか? ご教授よろしくお願い致します。

  • Accessクエリでの並べ替えについて

    Accessクエリでの並べ替えについて Accessのクエリで並べ替えを行う場合、デザインビューで行うほかに、結果であるデータシートビュー でも並べ替えを行うことができますが、この2つの違い(使い分け)を教えてください。 データシートはクエリの表示のみで、作成したフォームやレポートには反映しないと思っていたの ですが、並べ替え後にクエリを保存すると、クエリプロパティに並べ替えの条件が保存されるため、 その後作成したフォームやレポートに反映されました。 デザイン側で行うのと、データシート側で行うものの使い分けはどのようになるのでしょうか??

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • ACCESSにて前年同日実績を確認するフォーム

    たびたびわからないときに閲覧させて頂いております。 今回、どうしてもわからないことがあり 皆さまのお知恵を拝借させて頂ければと思い 質問を書き込みさせて頂きます。 ACCESS2016にて フォーム上にてコンボボックスにて年月を選択すると その月の当年と前年をレポートのリストとして出力して確認する。 というのを作ろうとしております。 そこで前年実績を抽出するクエリ・当年実績を抽出するクエリを作り それらを合体させてリスト化するクエリを作成。 フォームの詳細へと合体するクエリを「帳票リスト」にて流し込む形を考えているのですが うまくできません。 2つのクエリを連結させた段階で 帳票リストが機能しなくなり、リストを生成することができません。 よろしくお願いいたします。

専門家に質問してみよう