• 締切済み

アクセス 計算結果にマイナスがついてしまう

[検査実施日],[曜日],[医師],[検査]・・・フィールドがあります。 〔例〕A医師、日曜日、月曜日・・・と曜日ごとの合計を出したいのですが、うまくいきません。曜日はWEEKDAY関数で出しています。 医師ID  医師名 10  A医師 20  B医師 30  C医師 40  D医師 ・   ・ ・   ・ ・   ・ =Sum(IIf([曜日]=1,[医師]=10,0))とういうように作成したのですが、計算結果が”-”マイナス表記で出てきてしまいます。 アクセス初心者なものでまだよく分かりません。初歩的なことかもしれませんが、どなたかお教えくださいませ。宜しくお願いします。

みんなの回答

noname#140971
noname#140971
回答No.2

補足:演算子について A=10 この場合、=は代入演算子で算術演算子。 A==10・・・・等しい A!=10・・・・等しくない JavaScriptやC言語では、等値演算子はこのように書きます。 [イミディエイト] ? (20=20) True ? (20<>20) False だが、VBAでは、このように演算子の書き方が違います。 代入演算子の=が式で用いられると等値演算子の==に変身。 まあ、明示的な等値演算子ではないので判りにくいといえば判りにくいですね。 ここら辺りの理解の問題かと思います。

mimimimiko
質問者

お礼

ありがとうございました! いろいろ勉強し直してみます!

noname#140971
noname#140971
回答No.1

Private Sub CommandButton1_Click()   Dim A As Integer   Dim B As Integer   Dim C As Integer      A = 1   B = 0   C = IIf(A = 1, B = 10, 0)   Debug.Print C   B = 10   C = IIf(A = 1, B = 10, 0)   Debug.Print C End Sub [イミディエイト] 0 -1 つまり、[B=10]という論理式の値は、B=10以外であれば0、そうでなければ-1。 こういうことだと思います。 ※エクセルしかないのでエクセルでテスト。 ※アクセスのフォームで試されても同じ結果が得られる筈です。

mimimimiko
質問者

お礼

どうもありがとうございました! VBAがんばってみます!

関連するQ&A

  • エクセル 祝日の関数を教えてください

    条件付き設定で土、日、祝日に色を付けたカレンダーを作っています。 曜日の色の付け方はいろいろあるようですが、今回は 土曜日・・・=WEEKDAY($A1)=7 日曜日・・・=WEEKDAY($A1)=1 =WEEKDAY($A1)=の後に、土曜日は「7」、 日曜日は「1」で作りました。 そこで質問ですが、祝日の場合には「=」の後の数字をいくつで設定するのでしょうか? よろしくお願いします。

  • ACCESS IIF関数 複数条件の設定について

     選択クエリにおいて、あるフィールド「 X」 のレコード数値が     0<[X]<=50   であれば A    50<[X]<=100  であれば B    100<[X]<=150  であれば C  と表記させるフィールド「Y」を追加したいと考えています。  この場合、Yのフィールド設定で指定する数式についてご教授願います。  一応、   IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")   としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。  何卒よろしくお願いいたします。

  • accessレポートの除外表示、実人数、並べ替え

    ご覧いただき、ありがとうございます。 Access2010を使用している初心者です。レポート2枚を作成しています。 3点、お聞きしたいことがあります。 お分かりになる部分だけでも結構ですので、どなたかご教授いただけますでしょうか? ********* (1) グループ化で特定のレコードを除外して表示 レポート名:レポート2 / レコードソース:テーブルI 使用するフィールド:依頼者ID、曜日、項目名 --- 曜日 ヘッダー ---   [曜日] --- 項目名 ヘッダー ---   ★[項目名]       <[項目名]A-Dの各件数> =Count([項目名])  --- レポート フッター ---   E             <[項目名]がEの件数> =Sum(IIf([項目名]="E",1,0))   ひと月の項目名と件数を下方向に並べます。 この時、項目名A,B,C,Dがあり、Eを除外して表示したいです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ また、そのレポート内の下部で、グループ化せずにEの集計も行いたいのです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ … ★の式を、=iif([項目名]<>"E",null ,[項目名]) としたら循環参照となってしまいます。 … テーブルIから作ったA-DおよびEのみの選択クエリ、またはテーブルIとEのみの選択クエリに分けて、レコードソースに追加し、参照先を分けようとしましたが、「指定されたフィールド '[項目名]' が SQLステートメントのfrom句にある複数のテーブルを参照しました」とエラーが出ます。 ********* (2) 実人数のカウント レポート名:レポート2 / レコードソース:テーブルI 使用するフィールド:担当者名、依頼者名、会員、項目名 --- レポート ヘッダー --- <「項目名」A-Dの総件数>  =Count([担当者])-Sum(IIf([項目名]="E",1,0)) ★<「項目名」A-Dの依頼者実人数>  <A-Dで「会員」フィールドが null の総件数>  =Sum(IIf([依頼者名]<>"" And [会員]="",1,0))-Sum(IIf([項目名]="E" And [会員]="",1,0)) ★<A-Dで「会員」フィールドが null の依頼者実人数> <A-Dで「会員」フィールドが 1 の総件数>  =Sum(IIf([依頼者名]<>"" And [会員]="1",1,0))-Sum(IIf([項目名]="E" And [会員]="1",1,0)) ★<A-Dで「会員」フィールドが 1 の総件数> ひと月の項目名をフィールド「会員」で分けて集計します。 実人数はクロス集計クエリを参照して、手入力すれば解決しますが、できれば自動的に行いたいです。 ********* (3) グループ内での任意の並べ替え レポート名:レポート2 / レコードソース:テーブルI / 使用するフィールド:担当者名、依頼者名、会員 --- 担当者 ヘッダー --- <A-Dでの担当者>  ★[担当者]           --- 依頼者名 ヘッダー --- --- 項目名 ヘッダー --- <A-Dでの依頼者>  [依頼者名]       [項目名]         <各依頼者、各項目名の件数> --- 担当者 フッター ---  <担当者ごとの総件数> =Count([担当者])-Sum(IIf([項目名]="E",1,0)) レポート1の問題を踏まえ、一応、項目名Eを除外して集計しています(現時点で未解決) ここでは、担当者の並び替えを任意に行いたいです。 昇順や降順ではなく、例えばあ・い・う・え・おを、い・う・あ・お・えのように並べたいのです。

  • ACCESS2003 レポート表記時の改行について

    当方バリバリの初心者で、的外れな質問かも知れませんがどなたか教えてください。 フィールドA~Dの4つのフィールドをレポートに表記する際に、 (1)データが空でないときだけフィールド名と共にデータを表記する。 (2)各フィールドがそれぞれ改行された状態で並ぶ。 (3)空のフィールドがあったらその分は行を詰める。 つまりABDにデータがあってCが空の場合、レポートを下記のように表記したいと思っています。 ・フィールド名A: データA ・フィールド名B: データB ・フィールド名D: データD 考え方としてはレポート上にテキストボックスを作って、『=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA],Null) & IIf(IsNull([フィールドB])=False,”フィールド名B:” & [フィールドB],Null) ~』 という形で単純に繋いで処理したいのですが、そうすると改行が入りません。 モジュール(vbNewLine)を作らずに、何か簡単にテキストボックス上で処理する方法はありませんでしょうか。

  • クエリで曜日表示

    クエリにて曜日を出す式を入力する場合はどうすればいいでしょうか? クエリのデータとして年(2006などの4桁) 月 は別にフォームより入力しその該当するデータを抽出するようになっておりますので クエリのデータとして1日曜日~31日曜日というような感じで表記したいのですが weekdayを使うとシリアル値を入力することになると思うのですが持っているデータが2006 7 といったデータなのでそれは使えないと思うのですが曜日だけデータを取ることはできますでしょうか??

  • accessで指定期間の曜日カウントしたい

    access2000を使用しています。 table1にID,start,endというフィールドがあって 1|2009/04/01|2009/04/30 2|2009/03/16|2009/04/15 といった具合にstart,endには日付が入っています。 startからendまでの期間、日曜日が何回あるかを表示させるクエリはどのようにすればできるでしょうか。 ID|start|end|日曜日の回数 と表示させたいです。 weekday関数でstart,endのそれぞれの曜日は取得できています。 datediff関数でstartからendまで何日あるかは計算できています。 そこから先、どのようにカウントすればよいでしょうか。 特に上記2つの関数を使用しなくてもカウントできるようであればそれでもよいです。宜しくお願いします。

  • アクセスについて

     *テーブルB    *テーブルA      店番←------販売店番号       店名       商品番号                 販売金額    *テーブルC             商品番号----→商品番号            詳細       商品名            販売日      手数料 リレションシップをしております。 クエリA 店名-商品番号-販売金額-商品名-詳細-手数料金額-販売日 といったクエリをつくりました。 ---------OKウェーブさんからの回答--------------- 「商品」テーブルに 店名 - 商品 - 金額 A店 - 宝石 - 1000 B店 - 時計 - 2000 A店 - 宝石 - 3000 B店 - バック - 4000 ・・・ と格納されているとします で、これらを集計する為に使用するものは、選択クエリ(集計)を使用します 下記にクエリのSQL文を記述します SELECT 商品.店名, Sum(IIf([商品名]="宝石",[金額],0)) AS 宝石合計, Sum(IIf([商品名]="その他",[金額],0)) AS その他合計, Sum(商品.金額) AS 合計, Sum(IIf([商品名]="バック",[金額],IIf([商品名]="時計",[金額],0))) AS 合計A, Sum(IIf([商品名]="その他",[金額],IIf([商品名]="宝石",[金額],0))) AS 合計B FROM 商品 GROUP BY 商品.店名 ORDER BY 商品.店名; ------------------------------------------------- どこの画面でSQL文を記述すえばよろしいのでしょうか。 どこかわかりやすいHPはないでしょうか お願いします。

  • 繰り返しフィールドへのリレーション

    顧客台帳 ●氏名● ●利用曜日●   A氏    月曜  B氏    月曜  C氏    火曜      ↓  ○月○日 月曜日  A氏(繰り返しフィールド)  B氏(繰り返しフィールド) と言う上記の台帳から、曜日によって氏名が表示されるレイアウトを作りたいのですが、繰り返しフィールドにリレーションをすると、一番上のセルにしか表示されません。どうしたらよいのか教えてください。

  • Excelのデータで表を見やすいように「テーブル」化しました。

    Excelのデータで表を見やすいように「テーブル」化しました。 そこで例えば1ヶ月間の買ったものと金額が表になってる場合、月曜日に買ったものの値段の合計を調べたいと思うのですが、SUM関数を使って合計金額を出そうとし、その曜日でフィルタをかけて月曜のだけを表示した状態で合計を求めるのですが、SUM関数で表をドラッグ?すると合計金額の中に別の曜日の金額も入ってしまいます。 例えば =SUM(A1:A100)だけど月曜日なのはA1~A20とA85~A100 月曜だけを求めたいのに、A1~A100すべての合計金額が出てしまう 解決策を誰か教えてくださいお願いします。

  • エクセル2007条件付き書式について

    条件付き書式の項目が全部で4つになってしまい、互換性の関係上3つに落としたいのが主旨です。 現在土or日と表記された場合に背景色が変わるようになっておりますが、 土曜と日曜とで別々の設定にしております。 =WEEKDAY($A6)=1 日曜 =WEEKDAY($A6)=7 土曜 一つの条件に表現できればご教授願いたいのですが。