• ベストアンサー

Accessのレポートで使う関数を教えて

私は製造会社のOLです。Windows2000/Access2000で課内の一月毎の工数表を作っています。テーブルは[日付(年/月/日)]、[取引先]、[製品名]、[担当者]、[工数(時間)]のフィールドからなっています。レポートで、一つの製品を制作するのに何名が携わっているかを計算させたいのですが、製品名フッターにて「=Count([担当者])」にすると、3日同じ人が同じ製品を製作したとしたら、「3名」となってしまします。それを「1名」と計算させるには、どうすればよいのでしょうか?どうか教えて下さい。

  • pot3
  • お礼率40% (2/5)

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

  • ベストアンサー
  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.5

私もあまり詳しくないので、これよりももっといい方法があるとは思うのですが・・・ クエリーをもう一つ作るのはどうでしょうか。 ひとつのクエリーで全部をやろうとすると難しくなってしまうと思います。 ですから、先に「週報」のテーブルの[製品名]と[担当者]をグループ化したテーブルをクエリーを使って作成し、 そのテーブルをを今作ってるクエリーで呼び出してやればいいのではないでしょうか。 ※デザインビュー 今作ってるクエリーは「選択クエリー」だと思いますが、メニューの「クエリー」というところで、クエリーの種類を選択できます。 そこで「テーブル作成」というのを選んで、適当なテーブル名を付けます。(カレントデータベースにチェックしてください) そして、今度はなかみですが、テーブルの表示で「週報」のテーブルを選び、全てのフィールドをセットしてください。 このとき*は使用せずに、一つずつセットしてください。 そのときに[製品名]が一番左、その次に[担当者]がくるようにしてください。(左から優先されるため) そして集計でグループ化します。そのとき[製品名]と[担当者]以外のものはグループ化以外のものに変えてください。 変えるといっても何にすればよいかわからないと思いますが、担当者が複数あった場合、そのなかのどれを表示するかによります。 例えば[部品コード]を「最大」にした場合は、[担当者]が同じなかで部品コードの番号が一番大きい[担当者]を選ぶようになると思います。 また、[カウント]を選んでレコード件数を返すというようなことも可能です。 わかりにくいかもしれませんけど、これでグループ化はできると思います。 上手くいかなかった場合はまた補足してください。 私もあまり詳しくないので、これよりももっといい方法があるとは思うのですが・・・ クエリーをもう一つ作るのはどうでしょうか。 ひとつのクエリーで全部をやろうとすると難しくなってしまうと思います。 ですから、先に「週報」のテーブルの[製品名]と[担当者]をグループ化したテーブルをクエリーを使って作成し、 そのテーブルをを今作ってるクエリーで呼び出してやればいいのではないでしょうか。 ※デザインビュー 今作ってるクエリーは「選択クエリー」だと思いますが、メニューの「クエリー」というところで、クエリーの種類を選択できます。 そこで「テーブル作成」というのを選んで、適当なテーブル名を付けます。(カレントデータベースにチェックしてください) そして、今度はなかみですが、テーブルの表示で「週報」のテーブルを選び、全てのフィールドをセットしてください。 このとき*は使用せずに、一つずつセットしてください。 そのときに[製品名]が一番左、その次に[担当者]がくるようにしてください。(左から優先されるため) そして集計でグループ化します。そのとき[製品名]と[担当者]以外のものはグループ化以外のものに変えてください。 変えるといっても何にすればよいかわからないと思いますが、担当者が複数あった場合、そのなかのどれを表示するかによります。 例えば[部品コード]を「最大」にした場合は、[担当者]が同じなかで部品コードの番号が一番大きい[担当者]を選ぶようになると思います。 また、[カウント]を選んでレコード件数を返すというようなことも可能です。 わかりにくいかもしれませんけど、これでグループ化はできると思います。 上手くいかなかった場合はまた補足してください。

pot3
質問者

お礼

丁寧なご説明どうもありがとうございました。お礼が大変遅くなり申し訳ありません。日常業務におわれていて、インターネット開く時間がなかなか・・・。何度かチャレンジした結果、できました!やったぁ!! クエリーのグループ化の優先順位を変え >[製品名]と[担当者]以外のものはグループ化以外のものに変えてください ここで手間取りましたが、なんとか一つのクエリーで可能となりました。大変勉強になり、ほんとに助かりました。この「教えて!goo」ページにも感謝します。有難うございました。

その他の回答 (4)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

>回答有難うございます。ACCESS初心者なので、 SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; これについては、先にmarmi1516さんが答えてくださいました。m(_ _)m 感謝! #3の答えで完璧かと思いますが、まだ不足でしたら補足をお願いします。 >ごめんなさい。(自分がバカに思えてきた。) いえいえ、こちらこそ説明不足でした。もしぶっきらぼうな回答にお気を悪くなさったとしたら、申し訳ありません。

pot3
質問者

お礼

ほんと、有難うございました。お礼が遅くなり、申し訳ありません。ほんと、これからもっともっと勉強していきたいと思います。有難うございました。

  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.3

私もまだ経験が浅いので偉そうな事言ってもし間違っていたら申し訳ないのですが・・・。 SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; というのはSQL文です。 クエリーを作成する時ってたいていはデザインビューで作成すると思うんですが、SQL文で、このようにSELECT文を書く事もできるんです。左上のほうに、「デザインビュー」「SQL」とかいうボタンがないでしょうか? それで、切り替えが可能です。 ですから、これのSELECT文をSQL表示にして記述し、デザインビューで見ることもできますよ。 クエリーというのは、テーブルのデータを加工するものです。 ですから、使えるようになると本当に便利です。 このSELECT文の意味は「工程表テーブル」の「担当者」というフィールドを「担当者」でグループ化するということです。 SELECT [担当者] ← で抽出するフィールドを指定しています。 FROM 工程表テーブル ← は抽出もとのテーブルです。 GROUP BY [担当者] ← は抽出の条件を指定しています。”GROUP BY ”と言うのはグループ化で、こうすると担当者のフィールドには同じ名前が表示される事はなくなります。担当者が同じものをひとまとめにしてしまったということです。 GROUP BYのほかにもいろいろと抽出条件を指定する方法がありますが・・・ こんな説明で果たしてどのくらい伝わったか分かりませんが・・・・ もし間違っているところなどがありましたらどなたかよろしくお願いします。

pot3
質問者

補足

SQLボタン、ありました!今までデザインビューからしかクエリは作ったことがなかったので、これで解明しました。 しかしそれだと、製品名全部ひっくるめての担当者をグループ化してしまうのです。製品ごとに担当者数を出したいのです。今、出そうとしているレポートは以下のクエリからなっています。 (テーブルは週報、取引先コード、部品コードと3つをリレーションしてます。) SELECT 週報.日付, 週報.担当者, 取引先コード.コード, 週報.取引先, 週報.製品名, 部品番号コード.部品名, 週報.[工数(H)], Year([日付]) AS 年, Month([日付]) AS 月 FROM 部品番号コード INNER JOIN (週報 INNER JOIN 取引先コード ON 週報.取引先 = 取引先コード.取引先) ON 部品番号コード.コード = 週報.部品コード WHERE (((Year([日付]))=[YEAR(西暦)半角で入力してください]) AND ((Month([日付]))=[MONTH 半角で入力してください])) ORDER BY 取引先コード.コード; 上記で理解されることを願いますが、これに SELECT [担当者] FROM 週報 GROUP BY [担当者]; を追加すると、構文エラーがでてしまいます。 なので、デザインビューで担当者のところをグループ化してみると、全部のフィールドがグループ化されてしまいうまくいきません。勉強不足で大変申し訳ないのですが、どうすればよいかを教えていただけませんか?よろしくお願い申しあげます。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; のようなクエリを作っておいて、 レポートから、 =DCount("担当者","クエリ1") みたいな感じで呼び出せば出来ます。 不明点とかあれば、補足してください。

pot3
質問者

補足

回答有難うございます。ACCESS初心者なので、 SELECT [担当者] FROM 工程表テーブル GROUP BY [担当者]; が、よくわからないのです。 クエリにいれる式でしょうか?ごめんなさい。(自分がバカに思えてきた。) 申し訳ないのですが、詳しく説明願えないでしょうか? よろしくお願いいたします。

  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.1

クエリーを使ったやり方ではだめなのですか??

pot3
質問者

補足

会社でしかPC使えないので、補足が遅くなって申し訳ありません。 クエリを使ったやり方が解らなかったのですが、 いい方法ありますか? ACCESS初心者です。3月1日から始動させなくてはならないので、ぜひとも教えて下さい。

関連するQ&A

  • access2000でif式を使いたい

    access初心者ですが教えてください。 住所録を作成していて、ラベルを印刷できるレポートを作成したいと考えています。 会社名フィールドと担当者フィールドがあり、 担当者フィールドに入力がされているときは 御中フィールドに「御中」と表示されるような エクセルでいうIF式は、どうすればいいのでしょうか? クエリで計算させればいいのですよね? よろしくお願いします。

  • Access レポートウィザード

    Windows2003XP(SP2)・Access2003 レポートウィザードでレポートを作成するとレポートフッターのテキストボックスに↓↓↓ =[Page] & "/" & [Pages] & "ページ" と入力され、印刷プレビューに切り替えると↓↓↓ 現在のページ数/総ページ数 ページ が表示されています。 []で囲われているということはどこかにPageというフィールドが あるのでしょうか? あるいはどこでソレを制御しているのでしょうか? どなたかご存知でしたらご教授いただけますと大変助かります。 よろしくお願いいたします。

  • 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を除外して集計しています(現時点で未解決) ここでは、担当者の並び替えを任意に行いたいです。 昇順や降順ではなく、例えばあ・い・う・え・おを、い・う・あ・お・えのように並べたいのです。

  • Access2002の集計レポート?

    商品コード別の集計レポート作成において、デザイビューの「商品コード フッター」部分で「配送の有無(Yes/No型)」のフィールドで「配送有り」をカウントしたいのですが、上手くいきません・・・? =Count(IIf([配送の有無]=Yes,1,0) で表示させると ・Yes との結果です。 ご教示ください。

  • Access2007 集計レポートについて

    Access2007 集計レポートについて質問させて下さい。 営業マンが全部で17名、それぞれのグループが5つに 分かれています。 集計内容は、各17名とそれぞれが所属するグループ5つ、 これが13のブランド別での内容となります。 各担当にはそれぞれ月次での目標数と金額が、 集計時の実績数と実績金額を表示させたいと考えています。 現在の方法はレポートのフッター部分を使用して 上記下記項目を設定し集計しようとしているのですが、 フィールド数が255を超えていますとのメッセージが出てしまい、 先へ進むことができません。 1人の営業のレポートは上記13のブランドに対し 目標と実績が発生しますので26のフィールド?が発生してしまいます。 その26のフィールド×22=572のフィールド?が必要となってしまいます。 目標にかんしては月次での目標テーブルから該当データを持ってくる様に しており、実績が基幹システムからのデータリンクにて集計する形を 取っていますが、最終的に1つのレポートで作成したいと思っています。 今まではExcelで手入力で作成していたのですが、Accessを使用できる 環境があり、合理的に数字の集計ができればと思い作成していたのですが 255の壁にぶち当たってしまいました。 何か良い方法があれば教えて頂きたいと思います。 尚、当方まだ初心者レベルとお考え下さい。 宜しくお願い致します。

  • Access レポートで税込みの値段を表示したい

    Access初心者です。(Access2000を使っています) 見積書をレポート機能で自動作成したいのですが、 以下の操作が上手くできません。 --- 下記のような、レポートを作成したいのですが、 商品一覧が入っているテーブル(商品テーブル)には、「税抜き単価」しか入っていません。 ★の部分は、商品テーブルの「税抜き単価」×「消費税率」をかけたものを表示させたいのですが レポートを表示すると、「#Error」と表示されています。 (詳細)では、計算式は入力できないのでしょうか・・・? (レポート ヘッダー) (ページ ヘッダー) ■内訳 No.  商品名 数量 単価(税込み) 金額 (受注ID ヘッダー) (詳細) 1 りんご   1 \105★ \105 2 みかん   1 \105★ \105 3 ばなな   1 \105★ \105 4 いちご   1 \105★ \105 (受注ID フッター) 合計数 4点       小計   \420 送料   \200 合計   \620 (ページ フッター) (レポート フッター)

  • ACCESSのレポートで実人数と実日数を付加したいのですが

    ACCESSのレポートで実人数と実日数を付加したいのですが デイハウス利用者の利用記録のテーブル[T 利用記録]があります このテーブルに利用日、利用者のフィールドがあります。 レポートフッタ-に利用日及び利用者の重複を除いた実日数と実人数を 印刷することができますか 延べ日数または延べ人数はcount(*)で印刷出来ますが

  • Access2007 集計レポートについて(2)

    Access2007 集計レポートについて、質問内容が不明との事で 再度イメージを添付し説明させて頂きます。 ブランドは全部で8つ、担当は全部で16名、それぞれのグループの 計が5つ、合計覧が1つあります。 各担当には目標と実績があり、目標数値は目標テーブルに入力された 数値を反映させ、実績は基幹システムのDBへリンクし集計させます。 また、1~8までのブランドの合計、当月受注予算、(予算に対しての)増減、 年度累計、(年度累計に対しての)増減も作成したいと思います。 レポート フッターを利用して集計レポートを作成していたのですが、 レコードセットのフィールド数:255を超えています、とのメッセージが 表示され先に進まなくなってしまいました。 そんなに複雑な表ではないと思っていたのですが、壁にぶち当たってしまいました。 この様はレポートの作成はできないのでしょうか? どうかご指導、お願い致します。

  • ACCESSのレポートのついてです

    初心者でお恥ずかしい質問ですが、本当に悩んでいます。 どうか教えてください!! バージョンは2007です。 クエリで 以下の通り表示されているものを レポートで表示する方法についてです。 本社  AAA 本社  BBB 本社  CCC 本社  DDD 本社  EEE ア支店 FFF イ支店 GGG 以下続く ○表示したいレポート1   (担当)本社       (製品名)AAA             BBB             CCC             DDD             EEE ○レポート2   (担当)ア支店       (製品名)FFF             「以下余白」             (空白のセル)             (空白のセル)             (空白のセル)                 ○ 教えてください(1)   1ページに5件の製品名を表示できるをようにしたいです。   5件以下の場合は、空白のセルが表示されるようにしたいです             ○ 教えてください(2)    1~4件の表示の時、「以下余白」の文字を入れたいです 今の状況は、 レポート1  (担当)本社       (製品名)AAA             AAA             AAA             AAA             AAA です。 どうぞご指導ください!お願いします!!

  • ACCESS2000のレポート

    Windows2000&ACCESS2000のレポートで変な現象が出ています。 テーブル:日付と住所とシメイと氏名。日付は日付型、それ以外はすべてテキスト型。 クエリー:上記のフィールドをそのままクエリーに。 表形式のレポートを作成を作成。日付によって抽出条件を変えて例えば、 何月何日の人の一覧表、のように出力しています。 →シメイ のテキストボックスだけ、 プレビューではすべて表示されているのですが、実際に印刷してみると 表示されていないことがあります。 この現象は、レポート単位です。 PCを変えて(ドライバーを変えて)みても同じ現象が起こります。 ご存知の方、おられましたら、よろしくお願いします。

専門家に質問してみよう