ACCESSでROW関数を代替する方法

ACCESSでROW関数を代替する方法

Excelで行ごとに1から連番をふる際は、ROW関数を使っている方も多いと思います。
=ROW()とすると、Excelの行数を自動で数値化してくれるので便利です。

ACCESSにはこのROW関数はありません。
それではどのように行ごとの連番を付与すればよいでしょうか。

今回は、ACCESSでROW関数を代替する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。

ACCESSでROW関数を代替して連番を付与する方法

ACCESSで連番を付与するにはオートナンバーを利用します。
しかし、オートナンバー型のフィールドは間に欠番ができる可能性があります。

以下、詳しくご説明します。

オートナンバー型のフィールドを作成する

オートナンバー型とは、ACCESSのデータ型の一つで、テーブルの特定フィールドに設定します。
新しいレコード(行)ができるたびに自動的に1から新しい番号を付与してくれるので便利です。

オートナンバー型のフィールドは以下の手順で作成します。
まず、作成メニューからテーブルデザインを選択します。

フィールドを作成し、データ型で「オートナンバー型」を選択しましょう。

これだけで、自動で採番するオートナンバー型のフィールドが完成します。
データシートビューで実際に値を入力してみましょう。

今回の例でいうと「項目」フィールドを入力していくだけで、主キーフィールドは自動で採番されていくことが分かります。
これが最も簡単な連番の付与方法です。

オートナンバーのリセット

しかし、オートナンバーでの採番にはデメリットもあります。
それは、途中でレコードを削除すると欠番が発生することです。

例えば、先ほどのテーブルで5、6レコードを追加した後で5レコード目を削除すると下記のようになります。

主キーの5が飛んでしまって、欠番になっていますね。
これはオートナンバー型の宿命ですが、これを解決して番号を振りなおす方法もあります。

詳しくは以下の記事に書いていますので興味がある方はご覧ください。

オートナンバーをリセットし、番号を振りなおす方法

しかし、いずれにしてもデータを一度削除して再入力するような運用が必要になってしまう点がネックです。

ACCESSの主キーに連番が必要か

ACCESSでは各テーブルに主キーという、他のレコードと重複しない値を設定するのですが、これにオートナンバーは最適なのです。
オートナンバー型のフィールドを主キーにしておけば絶対に他のレコードと重複しない(これをユニークと呼びます)値が自動で入力できます。

主キーとしては値が連番になっていなくても全く問題がないため、実はACCESSの主キーは見た目以外は連番にこだわる必要が全くありません。
また、主キーは他のテーブルとこの値でリレーションさせているため、一度決めてしまった後から値を変更すると、ACCESSがうまく動作しない原因にもなります。

そのため、主キーは欠番があってもなくても変更しない、というのが最も不具合が少ない運用です。
一方で、必ず連番にしたい意味のある値は、主キーとは別のフィールドにして任意に操作できるようにした方が柔軟性が上がるでしょう。

以上、ACCESSでROW関数を代替する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。