VALUES 関数
指定されたテーブルまたは列の個別の値を含む 1 列のテーブルを返します。 つまり、重複する値が除去され、一意の値だけが返されます。
注意
この関数を使用してワークシート上のセルや列に値を返すことはできません。その代わりに、この関数を数式内で入れ子になった中間関数として使用し、カウントできる個別の値のリストを取得したり、他の値のフィルター選択または合計のために使用できる個別の値のリストを取得したりできます。
構文
VALUES(<TableNameOrColumnName>)
パラメーター
検索語句 |
定義 |
---|---|
テーブルまたは列 |
返される一意の値を含むテーブルまたは列 |
戻り値
一意の値の列。
説明
フィルター選択されているコンテキスト (ピボットテーブルなど) で VALUES 関数を使用するとき、VALUES によって返される一意の値はフィルターの影響を受けます。 たとえば、Region を基準にフィルター選択して City の値のリストを返す場合、リストにはフィルターで選択された地域の都市だけが含まれます。 既存のフィルターに関係なくすべての都市を返すには、ALL 関数を使用して、テーブルからフィルターを取り除く必要があります。 2 番目の例では、VALUES と共に ALL が使用されています。
関連する関数
ほとんどの場合、VALUES 関数の結果は DISTINCT 関数の結果と同一です。 どちらの関数も重複する値を削除し、指定した列に含まれる適切な値のリストを返します。 ただし、VALUES 関数では不明なメンバーを返すこともできます。 この不明な値が役に立つのは、関連テーブルで一意の値を探している場合に、リレーションシップで使用されている値が一方のテーブルに存在しないときです。 データベース用語では、これを参照整合性違反と呼びます。 このようなデータの不一致は、一方のテーブルだけが更新されており、関連テーブルは更新されていない場合によく生じます。
次の表に、参照整合性が確保されていないときに 2 つの関連テーブルで発生する可能性のあるデータの不一致をまとめます。
MyOrders テーブル |
MySales テーブル |
---|---|
6 月 1 日 |
6 月 1 日の売上 |
6 月 2 日 |
6 月 2 日の売上 |
(注文の日付が未入力) |
6 月 3 日の売上 |
DISTINCT 関数を使用して、これらのテーブルを含むピボットテーブルからデータのリストを返す場合、2 つの日付だけが返されます。 一方、VALUES 関数を使用すると、2 つの日付に加えて空白のメンバーも返されます。 MyOrders テーブルに一致する日付を持たない MySales テーブルの行はすべて、この不明なメンバーと "一致" します。
使用例
次の式は、一意の請求書 (販売注文) の数をカウントします。Product Category Names を含むレポートで使用した場合の結果は、次のようになります。
行ラベル |
請求書の数 |
---|---|
Accessories |
18,208 |
Bikes |
15,205 |
Clothing |
7,461 |
総計 |
27,659 |
=COUNTROWS(VALUES('InternetSales_USD'[SalesOrderNumber]))