Access関数の使い方をお探しですね。

広告

Accessの関数をマスターしよう!クエリ・フォームで使える必須関数ガイド

Accessでクエリやフォームを作っていると、「Nullを0にしたい」「日付の差を計算したい」「名前やコードの一部だけ取り出したい」といった場面がよく出てきます。

そんなときに便利なのが**Access関数**です。

関数を使えるようになると、テーブルに保存されたデータはそのままに、抽出・集計・表示・入力補助を自由自在に行えるようになります。

この記事では、クエリやフォームで使える必須関数と、実務でつまずきやすいポイントを、初心者の方にも分かりやすく解説していきます。

Access関数の基本と、クエリ・フォームでの書き方

Access関数とは、フィールドの値を加工したり、条件によって表示を変えたり、別のテーブルから値を取ってきたりするための機能です。

Excelの関数に似ていますが、Accessでは**「テーブルに保存する値」と「画面やクエリで表示する値」を分けて考える**ことがとても大切です。

例えば、社員IDの実データは数値の「12」のまま保存しておいて、クエリやフォーム上ではFormat関数を使って「0012」と表示することができます。

この考え方を押さえておくと、データの整合性を保ちながら、見やすい画面や帳票を作れるようになります。

クエリでの書き方

クエリで関数を使う場合は、デザインビューのフィールド行に**「表示名: 関数式」**の形で入力します。

例えば、顧客名の先頭3文字を取り出すなら、こんな感じです。

“`
顧客略称: Left([顧客名],3)
“`

フォーム・レポートでの書き方

フォームやレポートでは、テキストボックスのコントロールソースに**先頭へイコールを付けて**書きます。

“`
=Left([顧客名],3)
“`

**書き方の基本ルール**
– フィールド名は角かっこ `[ ]` で囲む
– 文字列はダブルクォーテーション `” “` で囲む
– 日付はシャープ `# #` で囲む(例:`#2026/1/1#`)

まずは必要な関数から覚えよう

Access関数を覚えるときは、最初からすべてを暗記する必要はありません。

実務でよく使う関数は、次の6種類にほぼ集約できます。

1. **条件分岐**
2. **Null対策**
3. **文字列加工**
4. **日付計算**
5. **集計**
6. **書式設定**

まずは「どんな場面で、どの関数を使うのか」を理解して、必要に応じて組み合わせていくのが効率的です。

特にクエリは、抽出条件・並べ替え・集計・更新処理に関数を組み込めるので、Accessを業務で使ううえで中心的な役割を持っています。

クエリで使える必須Access関数一覧

クエリでは、テーブルに保存されているデータを加工して表示したり、条件に合うレコードだけを抽出したりできます。

例えば、
– IIf関数で「売上が10万円以上なら優良」と表示
– DateDiff関数で受注日から納品日までの日数を計算
– Nz関数でNullを0に変換して合計エラーを防ぐ

といった使い方が代表的です。

クエリで関数を使う最大のメリットは、**元データを変更せずに必要な形へ整えられる**点にあります。

更新クエリで使う場合を除けば、関数の結果は基本的に表示や計算のための一時的な値です。

よく使う必須関数リスト

最初はこの表にある関数から覚えると、抽出・集計・データ整形の多くに対応できます。

| 分類 | 関数 | 主な用途 | 使用例 |
|—|—|—|—|
| **条件分岐** | IIf | 条件によって表示を変える | `IIf([売上]>=100000,”優良”,”通常”)` |
| **Null対策** | Nz | Nullを0や空文字に変換 | `Nz([数量],0)` |
| **Null判定** | IsNull | Nullかどうか判定 | `IsNull([退職日])` |
| **文字列抽出** | Left / Mid / Right | 文字列の一部を取り出す | `Left([商品コード],3)` |
| **文字列置換** | Replace | 特定の文字を置き換える | `Replace([電話番号],”-“,””)` |
| **文字位置** | InStr | 指定文字の位置を調べる | `InStr([メール],”@”)` |
| **文字数** | Len | 文字数を数える | `Len([郵便番号])` |
| **日付取得** | Date / Now | 今日の日付、現在日時を取得 | `Date()` |
| **日付計算** | DateAdd | 日付を加算・減算 | `DateAdd(“m”,1,[請求日])` |
| **差分計算** | DateDiff | 日付や時刻の差を求める | `DateDiff(“d”,[受注日],[納品日])` |
| **書式変換** | Format | 日付や数値の表示形式を整える | `Format([ID],”0000″)` |
| **四捨五入** | Round | 数値を丸める | `Round([単価]*[数量],0)` |
| **定義域集計** | DLookup / DCount / DSum | 別テーブルやクエリを参照 | `DLookup(“単価”,”商品マスタ”,”商品ID=” & [商品ID])` |

IIf関数の注意点

IIf関数はとても便利ですが、Accessでは**真の場合と偽の場合の式がどちらも評価される**ことがあります。

そのため、割り算の分母が0になる可能性がある式をIIfだけで回避しようとすると、「0で除算しました」というエラーが出る場合があります。

例えば、利益率を求めるなら、分母になる売上額が0またはNullにならないよう、抽出条件や別の計算列で先に整理しておくと安全です。

Access関数は短い式で多くの処理ができますが、**エラーになりやすい値を想定して設計する**ことが大切です。

Nz関数は必須!

Nz関数もAccessでは欠かせない関数です。

AccessのNullは「0」や「空文字」とは違って、**値が存在しない状態**を表します。

そのため、数量がNullのまま `[単価]*[数量]` を計算すると、結果もNullになることがあります。

そこで `[単価]*Nz([数量],0)` のように書けば、数量が未入力でも0として計算できます。

ただし、Nullを0に変えることが業務上正しいとは限りません。

「未入力」と「0件」を区別したい場面では、安易に変換しないよう注意が必要です。

フォーム・レポートで使える表示用関数と入力補助

フォームやレポートでは、関数を使って画面表示を分かりやすくしたり、入力ミスを減らしたりできます。

例えば、
– フォーム上のテキストボックスに `=Format([売上金額],”#,##0円”)` と設定すれば、金額をカンマ付きで見やすく表示
– レポートで `=Date()` を使えば印刷日を自動表示
– `=DateDiff(“d”,[受注日],Date())` を使えば受注から今日までの経過日数を表示

フォームやレポートで使う関数は、テーブルに保存するためというより、**利用者が判断しやすい表示を作るために使う**のが基本です。

Format関数で見栄えを整える

Format関数は、フォームやレポートで特によく使います。

– 社員番号を4桁で表示:`=Format([社員ID],”0000″)`
– 日付を「2026年03月19日」形式で表示:`=Format([登録日],”yyyy年mm月dd日”)`

便利な一方で、**Format関数の結果は文字列として扱われる**点に注意が必要です。

表示用に整えた値で並べ替えると、数値順ではなく文字列順になる場合があります。

並べ替えや計算には元の数値フィールドを使い、見た目だけFormat関数で整えるのが実務的です。

DLookup関数で別テーブルを参照

フォームでは、DLookup関数を使って別テーブルの値を表示するケースもあります。

例えば、受注明細フォームで商品IDを選択したときに、商品マスタから商品名や単価を参照したい場合です。

ただし、**DLookupはレコードごとに別テーブルを検索する**ため、件数が多いフォームや帳票で多用すると動作が重くなることがあります。

大量データを扱う場合は、クエリでテーブルを結合して必要な値を取得する方法を優先し、DLookupは小規模な参照や補助的な表示に使うとよいでしょう。

レポートでの集計関数

レポートでは、集計関数もよく使います。

– グループフッターに `=Sum([金額])` を置けばグループごとの合計を表示
– レポートフッターに置けば全体合計を表示
– 件数を数える:`=Count([ID])`
– 平均を出す:`=Avg([点数])`

クエリ側で集計してからレポートに渡す方法もありますが、印刷レイアウト上で小計や総計を出したい場合は、レポートのセクションに集計関数を配置するほうが分かりやすいことがあります。

Access関数で失敗しないための実務ポイント

ポイント1:表示用関数と計算用フィールドを分ける

Access関数でよくある失敗は、**表示用の関数を計算や並べ替えにも使ってしまう**ことです。

Format関数で「0012」と表示した値は、見た目には数字でも、Access内部では文字列として扱われます。

そのため、「2」「10」「100」を文字列として並べ替えると、期待した数値順にならないことがあります。

**実務では:**
– 計算・抽出・並べ替えには元のフィールドを使う
– フォームやレポートで利用者に見せる段階だけFormat関数を使う

これが安全です。

ポイント2:Null、空文字、0の違いを理解する

もう一つ重要なのが、**Null、空文字、0の違い**を理解することです。

– **Null**:値が存在しない状態
– **空文字**:長さ0の文字列(`””`)
– **0**:数値としてのゼロ

見た目が空欄でも意味が異なるため、抽出条件を書くときに `Is Null` と `=””` を混同すると、目的のデータが取得できないことがあります。

**使い分けの例:**
– 未入力の退職日を抽出:`Is Null` を使う
– 空文字が入っているテキスト項目を探す:`=””` を使う

Accessではこの違いが集計結果や条件分岐に大きく影響します。

ポイント3:日付関数の注意点

日付関数を使うときも、少し注意が必要です。

`DateDiff(“yyyy”,[生年月日],Date())` は年の差を返しますが、**誕生日を迎えているかまでは自動で厳密に判断しません**。

そのため、正確な年齢を出す場合は、誕生日が今年すでに来ているかをIIf関数などで補正する必要があります。

また、日付を文字列として保存していると、日付計算や期間抽出がうまくいかない原因になります。

**日付を扱うフィールドは日付/時刻型で保存**し、表示形式だけをFormat関数で整えるのが基本です。

ポイント4:「保存」「加工」「表示」を分けて設計

Access関数を実務で使いこなすには、**「保存するデータ」「加工するデータ」「表示するデータ」を分けて設計する**ことが大切です。

**理想的な流れ:**
1. テーブルにはできるだけ素の値を保存
2. クエリで計算や抽出を行う
3. フォームやレポートで見やすく表示

この流れを作ると、後から修正しやすいデータベースになります。

まとめ:まずはこの関数から始めよう

最初は次の関数から使い始めると、日常業務で必要な処理の多くをカバーできます。

– **IIf**(条件分岐)
– **Nz**(Null対策)
– **Format**(書式設定)
– **DateDiff**(日付計算)
– **Left**(文字列抽出)
– **Replace**(文字列置換)
– **DLookup**(別テーブル参照)
– **Sum**(集計)

Access関数は単なる便利機能ではなく、**データベースを使いやすい業務ツールに変えるための重要な基礎**です。

一つずつ実際に使いながら覚えていけば、必ず使いこなせるようになります。

ぜひこの記事を参考に、Accessの関数を実務で活用してみてください!

広告