Accessの演算フィールド(計算フィールド)は、テーブルに保存されている値をクエリ上で加工・計算して新しい列として表示する機能です。単価と数量から合計金額を求めたり、姓と名を連結して氏名列を作ったり、受注日から今日までの日数を算出したりといった処理が、テーブル本体を変更せずにクエリだけで実現できます。
実務での活用場面は非常に広く、売上レポートの「税込金額」列・顧客台帳の「氏名(姓名結合)」列・契約管理の「残余日数」列など、テーブルに保存されたデータから派生する情報のほぼすべてを演算フィールドで賄えます。テーブルに不要な列を増やさずに必要な計算結果だけを取り出せるため、データベース設計の正規化の観点からも推奨される手法です。
本記事では演算フィールドの基本構文・式ビルダーの使い方・加算/文字列連結/日付差分など実務で頻出の計算パターン・IIf関数やFormat関数との組み合わせを体系的に解説します。MOS Access試験対策としても必須の操作なので、最後のチェックリストまで確認してください。
演算フィールドとは何か
演算フィールドは、クエリのデザインビューの「フィールド」行に自分で式を入力して追加する列です。テーブルに実際に保存されている列(バウンドフィールド)とは異なり、クエリを実行するたびに式が評価されて結果が返されます。テーブルに書き込まれるわけではないので、元データを誤って書き換える心配がありません。
よく混同されるのが「テーブルの計算フィールド」との違いです。テーブルのデザインビューでデータ型を「計算型」にするとテーブル自体に式を持たせることができますが、複雑な関数や他テーブルの参照には対応していないため、実務ではクエリの演算フィールドを使うのが一般的です。
基本構文「フィールド名: 計算式」
演算フィールドを記述するときは、クエリのデザインビューの「フィールド」行に次の形式で入力します。
表示するフィールド名: 計算式
コロン(:)の左側が列の見出し(エイリアス)、右側が実際の計算式です。フィールド名を省略すると「式1」「式2」という自動生成の名前が付きますが、レポートやフォームで参照するときに分かりにくくなるため、必ず意味のある名前を付けてください。テーブルのフィールド名は角括弧([ ])で囲むのが原則です。スペースや特殊文字を含む名前のフィールドは角括弧なしでは構文エラーになります。
| 構文の種類 | 記述例 | 備考 |
|---|---|---|
| 数値計算 | 合計金額: [単価]*[数量] | フィールド名は必ず角括弧で囲む |
| 文字列連結 | 氏名: [姓] & “ ” & [名] | & 演算子で文字列をつなぐ |
| 日付関数 | 経過日数: DateDiff(“d”,[受注日],Date()) | “d” は日単位の差分 |
| 条件分岐 | 区分: IIf([合計金額]>=10000,”高額”,”通常”) | IIf(大文字I・小文字i・大文字I・小文字f) |
デザインビューでの作成手順
演算フィールドはクエリのデザインビューから追加します。操作手順は次のとおりです。
| 手順 | 操作 | 補足 |
|---|---|---|
| ① クエリを開く | ナビゲーションウィンドウで既存クエリを右クリック→「デザインビュー」 | 新規作成の場合は「作成」タブ→「クエリデザイン」 |
| ② 空の列を選択 | 既存フィールドの右隣にある空白の「フィールド」セルをクリック | 列を選んでDeleteキーで削除してから入力してもよい |
| ③ 式を入力 | フィールドセルに「フィールド名: 計算式」を直接入力する | Shift+F2でズームボックスを開くと長い式が入力しやすい |
| ④ 式ビルダーを使う場合 | フィールドセルを右クリック→「ビルド」またはリボンの「式ビルダー」ボタン | 関数一覧から選択して正確な構文を確認できる |
| ⑤ 結果を確認 | 「表示」ボタンでデータシートビューに切り替えて計算結果を目視確認 | エラーが出た場合はデザインビューに戻って式を修正 |
| ⑥ 保存 | Ctrl+S でクエリを上書き保存 | 名前を付けて保存する場合は「名前を付けて保存」を選択 |
式ビルダーの活用
関数の引数の書き方に迷ったときは式ビルダーを使います。フィールドセルを右クリックして「ビルド」を選択すると、式ビルダーウィンドウが開きます。左ペインで「組み込み関数」→「日付/時刻」などとカテゴリを選ぶと中央ペインに関数一覧が、右ペインに引数のヒントが表示されます。目的の関数をダブルクリックすると式入力エリアに雛形が挿入されるので、引数の部分を書き換えるだけで正確な構文が完成します。
よく使う計算パターン
実務でよく登場する演算フィールドのパターンをまとめます。
| パターン | 演算フィールドの記述例 | 説明 |
|---|---|---|
| 合計金額(単価×数量) | 合計金額: [単価]*[数量] | 最も基本的な乗算パターン |
| 消費税込み金額 | 税込金額: [単価]*[数量]*1.1 | Round関数と組み合わせると端数処理もできる |
| 割引後金額 | 割引後: [単価]*(1-[割引率]) | [割引率]が0.1なら10%引きになる |
| 構成比(%) | 構成比: [個人売上]/[部門売上]*100 | 分母がゼロになる場合はIIfでゼロ除算を防ぐ |
| 経過日数 | 経過日数: DateDiff(“d”,[受注日],Date()) | Date() は本日の日付を返す |
| 残余日数 | 残余日数: DateDiff(“d”,Date(),[契約終了日]) | マイナスになれば期限超過 |
文字列連結(& 演算子)で列を組み合わせる
姓と名が別フィールドに保存されているとき、クエリの演算フィールドで結合して一列として表示できます。文字列の結合には& 演算子を使います。
氏名: [姓] & " " & [名]
上記の例では姓と名の間に全角スペースを挟んでいます。文字列リテラルはダブルクォート(” “)で囲みます。Nullが含まれるフィールドを連結すると結果もNullになる場合があります。Nz関数でNull値を空文字に変換しておくと安全です。
氏名: Nz([姓],"") & " " & Nz([名],"")
住所の連結(都道府県・市区町村・番地)や、「商品コード-サイズ-カラー」のようなコード体系の組み立てにも同じパターンを応用できます。
DateDiff関数で日付の差分を求める
2つの日付の差を計算するにはDateDiff関数を使います。構文は次のとおりです。
DateDiff(単位, 開始日, 終了日)
| 単位(第1引数) | 返される差分の単位 | 記述例 |
|---|---|---|
| “d” | 日数 | DateDiff(“d”,[受注日],Date()) |
| “m” | 月数 | DateDiff(“m”,[入社日],Date()) |
| “yyyy” | 年数 | DateDiff(“yyyy”,[生年月日],Date()) |
| “h” | 時間数 | DateDiff(“h”,[開始時刻],[終了時刻]) |
| “ww” | 週数 | DateDiff(“ww”,[発注日],[納期]) |
Date()は本日の日付を返す引数なしの関数です。「受注日から今日までの経過日数」を常に最新の値で取得したい場合に組み合わせて使います。DateDiffの結果がマイナスになれば「終了日が開始日より過去」を意味するため、期限切れ判定にも活用できます。
IIf関数と組み合わせた条件分岐フィールド
IIf関数(Immediate If)は条件に応じて異なる値を返すAccess固有の関数で、ExcelのIF関数に相当します。演算フィールドと組み合わせると、条件によって返す文字列や数値を切り替えた列が作れます。
IIf(条件式, 真の場合の値, 偽の場合の値)
| 用途 | 演算フィールドの記述例 |
|---|---|
| 金額区分 | 区分: IIf([合計金額]>=10000,”高額”,”通常”) |
| 在庫切れ判定 | 在庫状況: IIf([在庫数]=0,”在庫切れ”,”在庫あり”) |
| ゼロ除算防止 | 構成比: IIf([部門売上]=0,0,[個人売上]/[部門売上]*100) |
| 期限判定 | 状態: IIf(DateDiff(“d”,Date(),[契約終了日])<0,”期限切れ”,”有効”) |
3段階以上の分岐にはIIf関数を入れ子にする方法と、Switch関数を使う方法があります。Switch関数は読みやすい反面、条件が複雑になるほど式が長くなるため、2~3条件まではIIf関数、4条件以上はSwitch関数が目安です。
Format関数で表示形式を整える
Format関数は数値・日付・文字列の表示形式を指定する関数です。計算結果を読みやすい形に整えるときに演算フィールドの中で使います。
Format(値, 書式文字列)
| 表示したい形式 | 書式文字列 | 記述例(演算フィールド) |
|---|---|---|
| 金額(カンマ区切り・円付き) | “#,##0円” | 金額表示: Format([合計金額],”#,##0円”) |
| 日付(yyyy/mm/dd形式) | “yyyy/mm/dd” | 受注日表示: Format([受注日],”yyyy/mm/dd”) |
| パーセント(小数1桁) | “0.0%” | 達成率: Format([売上]/[目標],”0.0%”) |
| 数値をゼロ埋め3桁 | “000” | 連番: Format([No],”000″) |
注意点として、Format関数はデータ型を文字列に変換します。結果をさらに数値計算の材料にしたい場合はFormat関数を使わず、クエリのフィールドプロパティ(「書式」プロパティ)で表示形式だけを変えてください。
演算フィールドに抽出条件を設定する
演算フィールドは「抽出条件」行に条件を入力して絞り込みに使えます。テーブルの元フィールドと同様に扱えますが、演算フィールドのエイリアス(左辺の名前)で参照します。
| 条件の例 | 演算フィールドの設定 | 抽出条件行の記述 |
|---|---|---|
| 合計金額が1万円以上のレコードを取り出す | 合計金額: [単価]*[数量] | >=10000 |
| 残余日数が30日以内のレコードを取り出す | 残余日数: DateDiff(“d”,Date(),[契約終了日]) | <=30 |
| 期限切れレコードのみ取り出す | 状態: IIf(DateDiff(“d”,Date(),[契約終了日])<0,”期限切れ”,”有効”) | “期限切れ” |
演算フィールドに抽出条件を付けると、SQL変換時にWHERE句内で条件が評価されます(集計クエリではHAVING句)。クエリが複雑になってきたら「表示」→「SQLビュー」で変換後のSQL文を確認する習慣をつけると、意図どおりの絞り込みになっているかを素早く把握できます。
演算フィールドと集計クエリの組み合わせ
集計クエリ(「クエリデザイン」タブ→「集計」ボタンで「集計」行を表示させるクエリ)でも演算フィールドを使えます。グループ化したうえで合計金額を集計する場合の設定例は次のとおりです。
| フィールド | 集計セルの選択 | 説明 |
|---|---|---|
| [担当者](テーブルのフィールド) | グループ化 | 担当者ごとにまとめる |
| 合計金額: [単価]*[数量](演算フィールド) | 合計 | 各レコードの合計金額を担当者ごとに集計 |
| [受注ID](テーブルのフィールド) | Count | 担当者ごとの受注件数を集計 |
演算フィールドの「集計」セルに「式」を選ぶと、集計グループ内で式を評価した上で集計します。「合計」「平均」「最大」「最小」などを選ぶとSQL集計関数(SUM・AVG・MAX・MIN)に変換されます。演算フィールドを集計に使うかグループ化に使うかを正しく切り替えることが、集計クエリの設計で最も重要なポイントです。
MOS Access試験での頻出ポイント
MOS Access試験(MO-500)では演算フィールドを使ったクエリの作成・変更が出題範囲に含まれます。分野別の出題数・配点は公表されていません。試験は50分・1000点満点で実施され、合格点は公式に公開されておらず550点~850点が目安とされています。合格率は公表されていません。
試験は5個~10個のプロジェクトで構成され、プロジェクトごとに複数の操作タスクが出題されます。演算フィールドに関するタスクは「クエリのデザインビューを開き、指定された計算式で演算フィールドを追加しなさい」「DateDiff関数を使って受注日から今日までの経過日数を求める演算フィールドを作成しなさい」のような形で出題されます。
試験前に確認しておきたい操作を以下のチェックリストにまとめます。
- 「フィールド名: 計算式」の構文でフィールド名を付けて演算フィールドを追加できる
- テーブルのフィールド名を角括弧([ ])で囲んで正しく参照できる
- 加算(+)・減算(-)・乗算(*)・除算(/)の基本計算式を作成できる
- & 演算子で2つ以上の文字列フィールドを連結できる
- DateDiff関数の引数(単位・開始日・終了日)を正しく指定できる
- IIf関数の第1引数(条件式)・第2引数(真)・第3引数(偽)を正しく入力できる
- Format関数の書式文字列を正しく記述できる
- 演算フィールドに抽出条件を付けてレコードを絞り込める
- 式ビルダーを開いて関数を選択・挿入できる
- Shift+F2でズームボックスを開いて長い式を確認・編集できる
- 演算フィールドはテーブルに保存されないという性質を理解している
フィールド名の付け方(コロンの左辺)を忘れずに入力することと、テーブルフィールド名の角括弧を省略しないことがミス防止の鍵です。実際にサンプルデータを使って演算フィールドを繰り返し作成し、式ビルダーなしでも素早く入力できるよう練習しておきましょう。受験料の最新情報は公式サイトの「受験料・価格」(https://mos.odyssey-com.co.jp/exam/examfee.html)でご確認ください。
PR
AccessのIIf・DateDiff・Format関数はExcel関数と考え方が共通しています。関数を体系的に学ぶことでAccessの演算フィールド設計力が格段に上がります。
PR
Microsoft Copilot for Microsoft 365活用大全
AccessをはじめとするMicrosoft 365スイート全体の活用法を解説。CopilotとOfficeアプリの組み合わせで業務効率化を加速させたい方に最適な一冊です。
まとめ
Accessクエリの演算フィールドは、テーブルを変更せずに計算・加工・条件分岐した値を表示できる強力な機能です。「フィールド名: 計算式」の基本構文を押さえ、DateDiff・IIf・Format・Nzなどの関数を組み合わせることで、売上集計・期限管理・氏名結合・コード体系の組み立てなど幅広い実務シーンに対応できます。
MOS Access試験でも必須の操作ですので、式ビルダーを活用しながら繰り返し練習し、自信を持って試験に臨んでください。演算フィールドをマスターすると、クエリ設計全体の幅が大きく広がります。
関連記事として「Accessカテゴリの記事一覧」もあわせてご覧ください。IIf・Switch関数の詳細、集計クエリのGROUP BY設定、DateDiff関数の応用パターンなど、演算フィールドと組み合わせて使える操作を多数解説しています。
