您可以使用 DStDev 和 DStDevP 函數來估計網域) 指定記錄集內一組值 (標準差。 在 VBA) 模組、巨集、查詢運算式或表單或報表上的計算控制項 (Visual Basic for Applications 中使用 DStDev 和 DStDevP 函數。
使用 DStDevP 函數來評估母體,而使用 DStDev 函數來評估母體樣本。
例如,您可以在模組中使用 DStDev 函數來計算一組學生考試成績的標準差。
語法
DStDev (expr, domain [, criteria] )
DStDevP (expr, domain [, criteria] )
DStDev 和 DStDevP 函數具有下列引數:
| 引數 | 描述 |
|---|---|
| expr | 必要。 識別您要在其上尋找標準差之數值欄位的運算式。 它可以是識別資料表或查詢之欄位的字串運算式,或可以是在該欄位的資料上執行計算的運算式。 在 expr 中,您可以加入資料表中的欄位名稱、表單上的控制項、常數或函數。 如果 expr 包含函數,它可以是內建或使用者定義,但不得是另一個網域彙總或 SQL 彙總函數。 |
| domain | 必要。 識別構成範圍之記錄集的字串運算式。 它可以是資料表名稱,或不需要參數之查詢的查詢名稱。 |
| criteria | 可省略。 用來限制執行 DStDev 或 DStDevP 函數的資料範圍的字串運算式。 例如, criteria 通常相當於 SQL 運算式中的 WHERE 子句,但沒有 WHERE 字樣。 如果省略 準則 , 則 DStDev 和 DStDevP 函數會針對整個網域評估 expr 。 準則 中包含的任何 欄位也必須是 範圍內的欄位;否則, DStDev 和 DStDevP 函式會傳回 Null。 |
註解
如果 domain 參照少於兩筆記錄,或少於兩筆記錄滿足 準則, DStDev 和 DStDevP 函數會傳回 Null,表示無法計算標準差。
無論您是在巨集、模組、查詢運算式或計算控制項中使用 DStDev 或 DStDevP 函數,您都必須仔細建構 準則 引數以確保能正確進行評估。
您可以使用 DStDev 和 DStDevP 函數,在選取查詢的 [準則] 列中指定準則。 例如,您可以在 [訂單] 資料表和 [產品] 資料表上建立查詢,以顯示超過平均運費的所有產品,以及運費的標準差。 [運費] 欄位底下的 [準則] 資料列會包含下列運算式:
>(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 函數以變更的值為基礎,您必須先按一下 [資料] 索引標籤上 [記錄] 底下的 [儲存記錄]、將焦點移至另一筆記錄,或使用 Update 方法來儲存變更。
查詢範例
| 運算式 | 結果 |
|---|---|
| SELECT DStDev (“unitprice”,“productSales”,“unitprice>140”) AS Expr1, DStDevP (“unitprice”,“productSales”,“unitprice<140”) AS Expr2 FROM productSales BY DStDev (“unitprice”,“productSales”,“unitprice>140”) , DStDevP (“unitprice”,“productSales”,“unitprice<140”) ; | 計算 “UnitPrice” 的Standard差, (將給定資料做為資料表 “ProductSales” 的範例) ,其中 “unitprice” 大於 140,並在運算式1 中顯示結果。 同時計算 “UnitPrice” 的Standard偏差 (將給定資料視為整個母體) 其中 “unitprice” 小於 140,並在運算式2 中顯示結果。 |
| SELECT DStDev (“unitprice”,“productSales”,“unitprice>140”) AS DstDev, DStDevP (“unitprice”,“productSales”,“unitprice<140”) AS DstDevP FROM productSales GROUP BY DStDev (“unitprice”,“productSales”,“unitprice>140”) , DStDevP (“unitprice”,“productSales”,“unitprice<140”) ; | 計算 “UnitPrice” 的Standard差, (考慮指定資料做為資料表 “ProductSales” 的範例) ,其中 “unitprice” 大於 140,並在 DstDev 顯示結果。 同時計算 “UnitPrice” 的Standard偏差 (將給定資料視為整個母體) ,其中 “unitprice” 小於 140,並在 DstDevP 中顯示結果。 |
VBA 範例
注意
下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。
下列範例會傳回母體的標準差估計值,以及運送至英國之訂單的母體樣本。 範圍是 [訂單] 資料表。 criteria 引數會將結果限制為 ShipCountryRegion 值為 UK 的記錄。
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 & "'")