8/26/2017

Access。クロス集計クエリで空白に0(ゼロ)を表示させる方法【Nz】

Access。クロス集計クエリで空白に0(ゼロ)を表示させる方法

<クロス集計クエリ0表示 Nz関数とSum関数>

前回、クロス集計クエリをクエリウィザードを使わないで
作る方法をご紹介しましたが、クロス集計クエリの結果を見た時に、
空欄が目立ってしまうことがあります。

次のようなクロス集計クエリがあります。

クロス集計クエリを作成すると、
データがないところは、当然何もされないので、
空欄で表示されるわけですね。

この空白になっているところに0(ゼロ)を表示したいわけなのですが、

Excelのピボットテーブルのように、
チェックマークを付ければ、0(ゼロ)を表示してくれるというわけには、
Accessはなっておりません。

では、0(ゼロ)を自分で入力!なんてことは当然出来ません。

ということで、演算フィールドにNz関数とSum関数を使うことで、
0(ゼロ)を表示することが出来ますので、ご紹介していきます。

さてNz関数は、Null Zeroを意味している関数です。

すなわち、
データがNull値でない場合はデータをそのまま返して、
Null値の場合はNullの代替値を返すことが出来る関数です。

今回は、代替値を0(ゼロ)を使うことで、
0(ゼロ)を表示することが出来るのです。

では、クロス集計クエリを、「デザインビュー」で表示しましょう。

演算フィールドの「金額」を修正していきます。
金額: Sum([単価]*[数量])
を次のように修正します。

合計金額: Nz(Sum([単価]*[数量]),0)

データシートビューに変えてみましょう。

このように、0(ゼロ)を表示することができましたね。

しかしながら、この0(ゼロ)を表示させることは出来たのですが、
算出されている数値も、0(ゼロ)も左揃えになってしまっていますね。

このNz関数。ヘルプをみると、
Nz ( variant [, valueifnull ] )という引数なのですが、
引数のvariantはデータ型 Variant の変数。
ということで、データ型数値になってしまうのです。

では、右揃えというか数値にするには、どうしたらいいのでしょうか?

これは、Excelでも発生するのですが、
その場合は、×1することで変えることが出来ますので、
演算フィールドにアレンジを加えてみましょう。

合計金額: Nz(Sum([単価]*[数量]),0)*1

先ほどの演算フィールドの後ろに、*1をつけてみました。

それでは、データシートビューに変えてみましょう。

0(ゼロ)も含めて、左揃えになりましたね。

このように、クロス集計クエリで空欄に0(ゼロ)を表示するには、
Nz+Sum関数のネストで対応することが出来ますので、
少し知っていると便利ですので、0(ゼロ)を表示したいときには、
是非使ってみてください。