IIf・Format関数でAccessクエリに条件計算と書式変換を組み込む|演算フィールドの設計手順とMOS試験対策

「性別が女性ならF、そうでなければMとクエリに表示したい」「金額フィールドを¥1,234,567という形式で出力したい」──こうした条件による値の切り替え書式の整形は、Accessクエリの演算フィールドで実現します。

中心となるのがIIf関数(Immediate Ifの略)とFormat関数の2つです。IIf関数は条件が真か偽かで返す値を変え、Format関数は数値・日付・文字列を任意の書式コードで整形します。どちらもクエリだけでなくフォームやレポートの演算コントロールでも同じ構文が使えるため、Accessを使う上で欠かせない知識です。

本記事では演算フィールドの基本的な作り方から、IIf・Format・Switch関数の構文と実践パターン、よくあるエラーの対処法、MOS Access試験の頻出ポイントまでを体系的に解説します。

Accessクエリの演算フィールドの仕組み図解。テーブルの単価と数量から金額列をクエリ実行時に算出
目次

演算フィールドとは

クエリの演算フィールドとは、テーブルの既存フィールドを元に計算や加工を行って新たな列を生成する仕組みです。テーブル本体にはデータを追加せず、クエリが実行されるたびにリアルタイムで値を算出します。

演算フィールドをクエリデザインビューで追加する手順

  1. クエリをデザインビューで開く(または新規作成する)
  2. デザイングリッドの空いている列の「フィールド」行をクリックする
  3. 以下の書式で演算式を入力する
列ラベル名: 式

例えば「単価」と「数量」フィールドを掛け合わせた「金額」列を追加するには次のように入力します。

金額: [単価]*[数量]

フィールド名は角括弧[ ]で囲むのが基本です。スペースなしのアルファベットフィールドは角括弧なしでも動きますが、日本語フィールド名や空白を含むフィールド名には必ず角括弧が必要です。省略するとエラーになるためすべてのフィールド名を角括弧で囲む習慣を付けましょう。

IIf関数の構文図解。条件式が真なら合格、偽なら不合格を返す3引数の条件分岐フロー

IIf関数の構文と基本的な使い方

IIf(Immediate If)関数は、ExcelのIF関数に相当するAccessの条件分岐関数です。

IIf(条件式, 真の場合の値, 偽の場合の値)
引数内容
条件式True または False を返す論理式。比較演算子(=・><・<>・>=・<=)やIsNull・Like演算子を使う
真の場合の値条件式が True のときに返す値。文字列はダブルクォートで囲む。数値はそのまま記述する
偽の場合の値条件式が False のときに返す値。同上

最もシンプルな例として、スコアが70点以上なら「合格」、未満なら「不合格」と表示する演算フィールドは次のように記述します。

判定: IIf([スコア]>=70, 合格, 不合格)

クエリを実行すると「判定」という列が自動生成され、スコアに応じた文字列が表示されます。テーブルには影響しません。

IIf関数の実践パターン5選

パターン1:Nullチェック(未入力の検出)

フィールドが未入力(Null)かどうかを判定するには、IsNull関数を条件式に使います。

入力状況: IIf(IsNull([担当者ID]), 未割当, 割当済)

Accessでは空文字()とNullは別物です。[フィールド] = はNullを検出できません。Nullには必ずIsNullを使います。逆に未入力をNullではなく空文字で保存しているフィールドには[フィールド] = を使います。

パターン2:Yes/No型フィールドの文字変換

Yes/No型フィールドはクエリ上で-1(Yes)または0(No)として扱われます。これを読みやすい文字列に変換するにはIIfが便利です。

会員区分: IIf([会員フラグ], 会員, 非会員)

Yes/No型は0以外の値がTrue(-1はTrue)として評価されるため、[会員フラグ] = Trueと書かなくても[会員フラグ]のみで条件式として機能します。

パターン3:数値の範囲ランク付け(単一境界)

売上金額によってAランク・Bランクを分ける場合の例です。

ランク: IIf([売上金額]>=500000, Aランク, Bランク)

パターン4:文字列の部分一致(Like演算子)

Like演算子をIIfの条件式に使うと文字列のパターン一致で値を分岐できます。

カテゴリ判定: IIf([商品コード] Like A*, Aシリーズ, その他)

AccessのLikeパターンでは*が0文字以上の任意の文字列、?が任意の1文字に対応します(ExcelのVBAとは異なる点に注意)。

パターン5:日付による期限判定

現在日付(Date()関数)と比較して期限切れかどうかを判定する例です。

期限状態: IIf([有効期限] < Date(), 期限切れ, 有効)

Date()はAccessが提供する今日の日付を返す関数です。クエリ実行日ごとに動的に評価されるため、データを更新しなくても自動的に最新の判定結果が得られます。

PR

今すぐ使えるかんたん Access 2024[Office 2024/Microsoft 365 両対応](井上香緒里)

画面手順つきでデータベース設計から実務操作まで解説する入門書。用語につまずきやすいAccess初学者に向いています。

ネストしたIIf関数で3段階評価を行う分岐フローチャート。スコアからABC評価を判定する流れ

ネストしたIIfで多段階条件を実装する

IIfは「偽の場合の値」に別のIIfを入れることで多段階の分岐を実現できます。ExcelのネストしたIF関数と同じ発想です。

スコアをABC評価に変換する3段階分岐の例を見てみましょう。

評価: IIf([スコア]>=80, A, IIf([スコア]>=60, B, C))

評価ロジックは次の通りです。

スコア評価
80点以上A
60点以上80点未満B
60点未満C

ネストを4段以上深くするとデバッグが難しくなります。4段以上の分岐が必要な場合は後述のSwitch関数を使うと式が読みやすくなります。

注意点:IIfは条件が真でも偽でも、両方の引数を評価します。例えば偽の場合の値にゼロ除算が含まれていると、真の条件が満たされているときでもエラーになる場合があります。除算を含む場合はNz関数やIsNull・IIfを組み合わせて除数が0になる可能性を排除してください。

Switch関数で多分岐条件をすっきり書く

Switch関数はIIfのネストを使わずに複数条件の分岐を1行で記述できます。

Switch(条件1, 値1, 条件2, 値2, ... , True, デフォルト値)

先ほどのABC評価をSwitch関数で書き直すと次のようになります。

評価: Switch([スコア]>=80, A, [スコア]>=60, B, True, C)

Switch関数は条件を左から順に評価し、最初に True となった条件に対応する値を返します。最後のTrue, Cはどの条件にも一致しなかった場合のデフォルト値として機能します。この「デフォルト値としてのTrue」はSwitch関数の定番パターンで、IIfの「偽の場合の値」に相当します。

Switch vs ネストIIf の選び方:分岐が2段(If/Else)ならIIf、3段以上ならSwitchが読みやすいです。ただしMOS Access試験では主にIIfが出題されます。Switchは実務での利便性が高く覚えておく価値があります。

Format関数の書式変換図解。数値のカンマ区切りや通貨表示、日付の和文表示のBefore/After例

Format関数の構文と書式コード一覧

Format関数は数値・日付・文字列を指定した書式コードに従って文字列に変換します。クエリの表示だけでなくレポートのテキストボックスやフォームの演算コントロールでも同じ構文が使えます。

Format(値または式, 書式コード文字列)

数値の書式コード

書式コード入力値の例出力例用途
#,##012345671,234,5673桁区切り(整数)
#,##0.001234.51,234.503桁区切り(小数2桁)
¥#,##05800¥5,800円表示(通貨記号付き)
0.0%0.85385.3%パーセント(小数1桁)
0007007ゼロパディング(3桁固定)
0000001234001234ゼロパディング(6桁固定)

日付の書式コード

書式コード出力例内容
yyyy/mm/dd2026/06/28年4桁・月2桁・日2桁(スラッシュ区切り)
yyyy年m月d日2026年6月28日和文表示(月・日はゼロパディングなし)
aaaa日曜日曜日(日本語・長形式)
aaa曜日(日本語・短形式)
ddddSunday曜日(英語・長形式)
yyyy-mm2026-06年月のみ(月次集計ラベルに便利)
mm/dd06/28月日のみ
hh:nn:ss14:30:00時刻(時・分・秒、ゼロパディングあり)

注意:Accessの書式コードで「分」はnn(nが2文字)を使います。mmは「月」を意味します。ExcelのTEXT関数とは異なる点なので注意してください。

Format関数の実践パターン

パターン1:売上金額を通貨表示に変換する

表示金額: Format([売上金額], ¥#,##0)

クエリの結果列に¥マーク付きのカンマ区切り金額が表示されます。データ型はテキスト型として返されるため、この列での数値計算はできません。表示専用の列として使います。

パターン2:受注日を「年月」キーに変換して月次集計に使う

月キー: Format([受注日], yyyy-mm)

このフィールドをグループ化フィールドに設定し、集計クエリと組み合わせることで月次の売上合計を簡単に集計できます。

月キー: Format([受注日], yyyy-mm)   ← グループ化
月間売上: Sum([売上金額])               ← 集計

パターン3:コード番号をゼロパディングで6桁統一する

商品コード6桁: Format([商品コード], 000000)

数値型として保存されている商品コードを6桁固定の文字列に変換します。インポートしたデータでコード番号の桁数がバラバラな場合に統一するのに便利です。

パターン4:IIfとFormatを組み合わせて条件付き書式変換する

IIf関数とFormat関数を組み合わせると、条件によって書式を変えることができます。

金額表示: IIf([売上金額]>=1000000, Format([売上金額], ¥#,##0(大口)), Format([売上金額], ¥#,##0))

100万円以上の売上には「(大口)」を付加した特別な表示形式にしています。IIfの真偽両側にFormat関数を置くことで書式そのものを条件分岐できます。

PR

できるAccess 2024 Copilot対応 Access 2024/2021 & Microsoft365版(きたみあきこ/できるシリーズ)

テーブル・クエリ・フォーム・レポートの基本操作を手順つきで解説する定番シリーズ。実務での使い方を確認したいときに向いています。

Nz関数でNullをゼロや空文字に変換する

演算フィールドでよく使われるもう1つの関数がNz(Null to Zero)です。Nullが含まれるフィールドを計算式で使うと結果全体がNullになるため、あらかじめNzでNullを安全な値に置き換えます。

Nz(値, Null時に返す値)

-- 使用例:数量がNullの場合は0として合計を計算する
合計金額: [単価] * Nz([数量], 0)

文字列フィールドでNullを空文字に変換する場合は次のように書きます。

担当者名表示: Nz([担当者名], (未割当))

IIfでIsNull判定するか、Nzで置き換えるかは状況次第ですが、単純な置き換えにはNz、条件によって異なる処理をするにはIIfと使い分けると式が短くなります。

よくあるエラーと対処法

症状・エラー主な原因対処法
「式にフィールド名が見つからない」エラーフィールド名のスペルミス・角括弧の閉じ忘れテーブルのフィールド名と完全一致しているか確認し、日本語フィールドは必ず[]で囲む
演算結果がすべてNull計算に使うフィールドの一つにNullが含まれているNz関数でNull→0やに変換してから計算式に使う
IIfで型の不一致エラー真の値と偽の値のデータ型が混在している(例:数値と文字列)両方を同じデータ型に統一する。数値を返したい場合は文字列を使わない
Formatの日付書式で「分」がおかしいmmを分の書式として使っている(AccessのmmはExcelと異なり「月」)分はnnを使う(例:hh:nn)
Like演算子でパターン一致しないワイルドカードをAccessではなくExcelの仕様で書いているAccessのLikeでは*が任意文字列、?が1文字。%や_(SQLスタイル)はSQLビューでのみ有効
Switch関数が最後の分岐で止まらないデフォルト値のTrueを最後に置いていない引数リストの最後にTrue, デフォルト値を追加する
演算フィールドでグループ化できない集計クエリでグループ化していないクエリデザインビューの「集計」行でグループ化するフィールドを「グループ化」、集計フィールドを「合計」等に設定する

MOS Access試験での演算フィールド出題ポイント

MOS Access 365&2019では、クエリの作成と変更スキル項目で演算フィールドが出題されます。IIf・Format・Nzの頻出ポイントは以下の通りです。

  • 演算フィールドの追加:デザイングリッドの空き列に「列名: 式」形式で正確に入力できること
  • IIf関数の構文:3引数の順番と意味を正確に理解し、条件式を正しく記述できること
  • IsNull関数との組み合わせ:IIf(IsNull([フィールド名]), 値A, 値B)の形で記述できること
  • Format関数の基本的な書式コード:日付のyyyy/mm/ddや数値の#,##0を適用できること
  • 角括弧の使い方:フィールド名を[]で囲まないとエラーになる点を理解していること
  • 式ビルダーの活用:フィールドリストから選択して式を組み立てるExpressionBuilderの操作

MOS試験 演算フィールド関連チェックリスト

確認ポイント操作内容難易度
演算フィールドの追加(四則演算)列名: [フィールドA]*[フィールドB]の形式でデザイングリッドに入力できる★☆☆
IIf関数の記述IIf(条件式, 真の値, 偽の値)を正しい構文で記述できる★★☆
IsNull・NzでのNull処理IsNullまたはNzを使ってNullを含むフィールドを安全に演算できる★★☆
Format関数で日付書式を変換Format([日付フィールド], yyyy/mm/dd)などを適用できる★★☆
Format関数で数値書式を変換Format([数値フィールド], #,##0)などを適用できる★★☆
ネストしたIIfで多段分岐IIf(条件1, 値1, IIf(条件2, 値2, 値3))を正しく記述できる★★★
式ビルダーの操作フィールドリストからフィールドを選択して式に挿入できる★☆☆

まとめ:IIf・Format・Nzでクエリに「判断力」と「見やすさ」を加える

本記事のポイントをまとめます。

  • 演算フィールドは「列名: 式」形式:デザイングリッドの空き列に入力する。フィールド名は角括弧で囲む
  • IIf(条件式, 真, 偽):最もよく使う条件分岐関数。IsNullやLikeと組み合わせて柔軟に使う
  • ネストIIf vs Switch:2段分岐はIIf、3段以上はSwitchで可読性を保つ
  • Format関数で書式変換:数値は#,##0・¥#,##0・000、日付はyyyy/mm/dd・yyyy年m月d日・aaaa、分はnnを使う
  • Nz関数でNull安全を確保:計算式にNullが混入すると結果全体がNullになる。Nzで事前に置き換える
  • MOS試験対策:演算フィールドの追加・IIf構文・Format書式コード・IsNull/Nzの組み合わせを繰り返し練習する

IIf・Format・Nzを自在に使いこなせると、テーブルのデータをそのまま使うだけでは実現できない高度なクエリ設計が可能になります。レポートやフォームでも同じ関数が動くため、一度身に付ければAccessの幅広い場面で応用できます。MOS試験の実技問題でも落ち着いて対応できるよう、実際に手を動かして演算フィールドを作る練習を繰り返しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次