前回に引き続き、Accessの条件分岐の関数について記載します。
私がIIf関数に続いて仕事上でよく使うのがNz関数です。
Nz関数とは
空欄の時に〇〇に置き換える、という条件分岐の関数です。
条件式:Nz(指定の項目、空欄だった場合〇〇に置き換える)
具体的な作り方

上記のようなデータがあるとします。
5行目の商品名が空欄です。
仮に空欄の場合は商品「VR-412」を販売したことを示している、という社内ルールがあるとします。
つまり、「商品が空欄ならば、”VR-412”と記載する」という条件分岐をしたいのです。
前回やったIIf関数でこの「空欄」はどのように 表現しますか?
答えは「Is Null」です
商品: IIf([売上テーブル.商品] Is Null,”VR-412″,[売上テーブル.商品])
こんな感じの関数になります。
今回紹介するNz関数は平たく言うと、これを短く省略した関数です。
商品: Nz([売上テーブル.商品],”VR-412″)
これで上記のIIfの式と同じ意味になります。
「売上テーブルの商品フィールドが空欄ならば、VR-412と表示する」と言った感じです。
これだけであれば、「IIf関数だけ覚えればいいじゃん、似たようなものをたくさん覚えるのはめんどうくさい!」となりそうですが、Nz関数はこの『短い』ということが真骨頂なのです。
Nz関数のメリット

さっきの売上データを例に挙げます。
これに各社員の役職の情報をくっつけることになりました。くっつける役職は売上を上げた年月時点での役職です。


そして、紐づけたい月の役職データは上記の通り。
「社員名+年月」でユニークになる(データが1対1で紐づけ出来る)とすると、下記のような構成になります。

そして、役職を付与する関数が
役職: Nz([社員マスタ201606.役職],[社員マスタ201612.役職])
意味としては
「社員マスタ201606の役職フィールドを表示する、出来なければ社員マスタ201612の役職フィールドを表示する」と言ったところでしょうか。
つまり、Nz関数は
Nz(A,B,C,D,……)
⇒「Aを表示する、出来なければB、それも出来なければC、それも出来なければD……」という使い方が出来るのです。
仮に、同じ意味のIIf関数を記述すると
役職: IIf([社員マスタ201606].[役職] Is Not Null,[社員マスタ201606].[役職],[社員マスタ201612].[役職])
となります。当然C、D、……と長くなればなるほど、ずっと長くなっていき、訳のわからない難解なものとなっていきます。
ね? Nz関数便利でしょ?
ま、こんな処理しなくても最初から整ったデータが入れば苦労はしないのですが(白目)
最後に注意点。
上記の「出来なければ」=「空欄ならば」の意味になります。
意味を取り違えると(例えば「紐づかない」ではありません)思わぬ落とし穴に嵌る可能性がありますので、ご注意を。