你可以使用 DStDev 和 DStDevP 函式,估算指定紀錄集合中一組數值的標準差, (域) 。 在Visual Basic for Applications中使用 DStDev 和 DStDevP 函式 (VBA) 模組、巨集、查詢表達式,或表單或報告上的計算控制項。
使用 DStDevP 函數來評估母體,使用 DStDev 函數來評估母體樣本。
例如,你可以在模組中使用 DStDev 函數,計算一組學生考試分數的標準差。
語法
DStDev (expr、domain [, standards] )
DStDevP (expr、domain [, criteria] )
DStDev 與 DStDevP 函式具有以下參數:
| 引數 | 描述 |
|---|---|
| expr | 必要。 一個用來識別你想要求標準差的數值域的表達式。 它可以是用來識別資料表或查詢欄位的字串表達式,也可以是對該欄位資料進行計算的表達式。 在 expr 中,你可以包含欄位名稱、表單上的控制項、常數或函式。 如果 expr 包含函式,可以是內建或使用者定義的,但不能是其他網域聚合或 SQL 聚合函式。 |
| domain | 必要。 識別構成範圍之記錄集的字串運算式。 它可以是資料表名稱,或不需要參數之查詢的查詢名稱。 |
| criteria | 可省略。 一個字串表達式,用來限制 DStDev 或 DStDevP 函式所執行的資料範圍。 例如, criteria 通常等同於 SQL 表達式中的 WHERE 子句,但沒有 WHERE 這個詞。 若遺漏 標準 , DStDev 與 DStDevP 函式會對整個領域評估 expr 。 任何包含在 條件 中的欄位也必須是 領域中的欄位;否則, DStDev 和 DStDevP 函式會回傳 Null。 |
註解
若 領域 指的記錄少於兩筆,或符合 條件的紀錄少於兩筆, DStDev 與 DStDevP 函式會回傳 Null,表示無法計算標準差。
無論你在巨集、模組、查詢表達式或計算控制中使用 DStDev 或 DStDevP 函式,都必須謹慎構建 條件 論證,以確保其能被正確評估。
你可以使用 DStDev 和 DStDevP 函式,在選取查詢的 Criteria 列中指定條件。 例如,你可以在訂單表和產品表上建立查詢,顯示所有運費低於平均值加上運費標準差的產品。 貨運欄位下方的標準列會包含以下表達式:
>(DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))
你可以在查詢的計算欄位表達式或更新查詢的「更新到」列中使用 DStDev 和 DStDevP 函式。
注意
你可以在總數查詢的計算欄位表達式中使用 DStDev 和 DStDevP 函式,或是 StDev 和 StDevP 函式。 如果你使用 DStDev 或 DStDevP 函式,數值會在資料分組前計算。 如果你使用 StDev 或 StDevP 函式,資料會先分組,然後再評估欄位表達式中的數值。
當你需要指定條件限制函數執行資料範圍時,可以在計算控制中使用 DStDev 和 DStDevP 函數。 例如,若要顯示寄往加州的訂單標準差,請將文字框的 ControlSource 屬性設為以下表達式:
=DStDev("[Freight]", "Orders", "[ShipRegion] = 'CA'")
如果你只是想找出 領域內所有紀錄的標準差,可以使用 StDev 或 StDevP 函數。
提示 若 expr 來源欄位的資料型態為數字,則 DStDev 與 DStDevP 函式會回傳 Double 資料型別。 如果你在計算控制中使用 DStDev 或 DStDevP 函式,請在表達式中加入資料型別轉換函數以提升效能。
注意
使用這些函數時,不會包括 domain 中未儲存的記錄變更。 如果你想讓 DStDev 或 DStDevP 函式基於更改後的值,你必須先透過在資料標籤中的「記錄」下點選「儲存記錄」來儲存變更,或將焦點移到另一筆紀錄,或使用更新方法來儲存變更。
查詢範例
| 運算式 | 結果 |
|---|---|
| 選擇 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 & "'")