DStDev、DStDevP 函數

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

你可以使用 DStDevDStDevP 函式,估算指定紀錄集合中一組數值的標準差, (域) 。 在Visual Basic for Applications中使用 DStDevDStDevP 函式 (VBA) 模組、巨集、查詢表達式,或表單或報告上的計算控制項。

使用 DStDevP 函數來評估母體,使用 DStDev 函數來評估母體樣本。

例如,你可以在模組中使用 DStDev 函數,計算一組學生考試分數的標準差。

語法

DStDev (expr、domain [, standards] )

DStDevP (expr、domain [, criteria] )

DStDevDStDevP 函式具有以下參數:

引數 描述
expr 必要。 一個用來識別你想要求標準差的數值域的表達式。 它可以是用來識別資料表或查詢欄位的字串表達式,也可以是對該欄位資料進行計算的表達式。 在 expr 中,你可以包含欄位名稱、表單上的控制項、常數或函式。 如果 expr 包含函式,可以是內建或使用者定義的,但不能是其他網域聚合或 SQL 聚合函式。
domain 必要。 識別構成範圍之記錄集的字串運算式。 它可以是資料表名稱,或不需要參數之查詢的查詢名稱。
criteria 可省略。 一個字串表達式,用來限制 DStDevDStDevP 函式所執行的資料範圍。 例如, criteria 通常等同於 SQL 表達式中的 WHERE 子句,但沒有 WHERE 這個詞。 若遺漏 標準DStDevDStDevP 函式會對整個領域評估 expr 。 任何包含在 條件 中的欄位也必須是 領域中的欄位;否則, DStDevDStDevP 函式會回傳 Null。

註解

領域 指的記錄少於兩筆,或符合 條件的紀錄少於兩筆, DStDevDStDevP 函式會回傳 Null,表示無法計算標準差。

無論你在巨集、模組、查詢表達式或計算控制中使用 DStDevDStDevP 函式,都必須謹慎構建 條件 論證,以確保其能被正確評估。

你可以使用 DStDevDStDevP 函式,在選取查詢的 Criteria 列中指定條件。 例如,你可以在訂單表和產品表上建立查詢,顯示所有運費低於平均值加上運費標準差的產品。 貨運欄位下方的標準列會包含以下表達式:

>(DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))

你可以在查詢的計算欄位表達式或更新查詢的「更新到」列中使用 DStDevDStDevP 函式。

注意

你可以在總數查詢的計算欄位表達式中使用 DStDevDStDevP 函式,或是 StDevStDevP 函式。 如果你使用 DStDevDStDevP 函式,數值會在資料分組前計算。 如果你使用 StDevStDevP 函式,資料會先分組,然後再評估欄位表達式中的數值。

當你需要指定條件限制函數執行資料範圍時,可以在計算控制中使用 DStDevDStDevP 函數。 例如,若要顯示寄往加州的訂單標準差,請將文字框的 ControlSource 屬性設為以下表達式:

=DStDev("[Freight]", "Orders", "[ShipRegion] = 'CA'")

如果你只是想找出 領域內所有紀錄的標準差,可以使用 StDevStDevP 函數。

提示 若 expr 來源欄位的資料型態為數字,則 DStDev 與 DStDevP 函式會回傳 Double 資料型別。 如果你在計算控制中使用 DStDev 或 DStDevP 函式,請在表達式中加入資料型別轉換函數以提升效能。

注意

使用這些函數時,不會包括 domain 中未儲存的記錄變更。 如果你想讓 DStDevDStDevP 函式基於更改後的值,你必須先透過在資料標籤中的記錄」下點選「儲存記錄」來儲存變更,或將焦點移到另一筆紀錄,或使用更新方法來儲存變更。

查詢範例

運算式 結果
選擇 DStDev (「單價」、「產品銷售」、「單價>140」) AS 範例1、DStDevP (「單價」、「產品銷售」、「單價<140」) 作為 從 productSales 群組 出自 DStDev (「單價」、「產品銷售」、「單>價 140」) 、DStDevP (「單價」、「產品銷售」、「單價<140」) ; 計算「單位價格」的Standard偏差, (考慮從表格「ProductSales」中取) 樣資料,其中「單位價格」大於140,並以Expr1顯示結果。 同時計算「單位價格」的Standard偏差, (考慮給定資料為整體人口) 「單位價格」小於140,並在Expr2中顯示結果。
選擇 DStDev (「單位價格」、「productSales」、「單位價格>140」) AS DstDev、DStDevP (「單價」、「productSales」、「單價<140」) AS DstDevP 來自 productSales 群組 (「unitprice」、「productSales」、「unitprice>140」) 、DStDevP (「單價」、「productSales」、「單價<140」) ; 計算「單位價格」的Standard偏差, (考慮從表格「ProductSales」中取樣) ,其中「單位價格」大於140,並以DstDev顯示結果。 同時 (考慮給定資料為整體母體) 計算「單位價格」的Standard偏差,其中「單位價格」小於 140,並以 DstDevP 顯示結果。

VBA 範例

注意

下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

以下範例回傳了母體標準差的估計值,以及運送至英國訂單的母體樣本。 範圍是 [訂單] 資料表。 標準論點將所得紀錄限制為 ShipCountryRegion 值為英國的紀錄。

Dim dblX As Double
Dim dblY As Double
' Sample estimate.
dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")
' Population estimate.
dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountryRegion] = 'UK'")

下一個範例則在條件參數中使用變數 strCountryRegion,計算相同的估計值。 請注意,單引號 (') 包含在字串表達式中,因此當字串串接時,字串 UK 文字會被單引號包圍。

Dim strCountryRegion As String
Dim dblX As Double
Dim dblY As Double
strCountryRegion = "UK"
dblX = DStDev("[Freight]", "Orders", _
    "[ShipCountryRegion] = '" & strCountryRegion & "'")
dblY = DStDevP("[Freight]", "Orders", _
    "[ShipCountryRegion] = '" & strCountryRegion & "'")