Chapter 10. 函式 (五):特殊功能函式 › 10.6 資料庫函式
10.6 資料庫函式
資料庫函式 (Database Function) 主要用於結構化的數據,可以使用資料庫函式快速的計算符合特定條件的基本統計資料。共包括 12 項,雖然每個資料庫函式計算的項目不同,但其輸入皆相同。
語法 | DCOUNT / DCOUNTA / DMIN / DMAX / DSUM / DPRODUCT / DAVERAGE / DVAR / DVARP / DSTDEV / DSTDEVP / DGET (資料庫, 欄位, 條件) |
輸入 |
|
輸出 | 資料庫中「符合任一列所有條件」的資料的統計結果。例如 =DCOUNTA(資料,"學號",{"國文分數","數學分數";">=80","";">=60",">=60"}) 會計算「國文分數 80 分以上」 或「國文與數學分數都 60 分以上」的學號數。 輸出的格式都會預設為自動,因此輸出是字串或日期則要自行更改 (DGET 才會有此類輸出),各函式分別統計以下結果:
|
以下使用第 1 章的交易記錄檔並搭配七個範例說明函式中的條件設定,為了方便已將交易記錄檔整張工作表 (A:K) 命名為「交易記錄」:
- 店號 105 的總金額
公式
=DSUM(交易記錄,"貨品總金額",{"店號";105})
解說
- 計算 "貨品總金額" 的加總,可使用 DSUM。
- 已知貨品總金額在 交易記錄 的第 11 欄,因此也可使用 =DSUM(交易記錄,11,{"店號";105})。
- 店號 105 及 108 的總金額
公式
=DSUM(交易記錄,"貨品總金額",{"店號";105;108})
解說
使用「或」的條件要分成兩列,因此使用 {"店號";105;108}。
- 店號 105 大分類名稱為 410 的商品的總金額
公式
=DSUM(交易記錄,"貨品總金額",{"店號","大分類名稱";105,410})
解說
使用「和」的條件要分成兩欄,因此使用 {"店號","大分類名稱";105,410}。
- 貨名有「台灣」的商品的交易總筆數
公式
=DCOUNTA(交易記錄,"貨名",{"貨名";"*台灣*"})
解說
- 計算交易總筆數可使用 COUNTA,欄位 放入隨便一欄都可以。
- "*台灣*" 在條件中使用萬用字元可撈出所有包含台灣的貨名。
- 2022/11/1~2022/11/30 的總金額
公式
=DSUM(交易記錄,"貨品總金額",{"交易日期","交易日期";">=2022/11/1","<=2022/11/30"})
解說
和 SUMIFS 一樣要將起始與結束日期視為兩個條件。
- 大分類名稱為 410,或是大分類名稱為 411 且貨名提及「奶粉」的消費總額
公式
=DSUM(交易記錄,"貨品總金額",{"大分類名稱","貨名";410,"";411,"*奶粉*"})
解說
此範例有兩個條件,但第一個條件並不用進一步篩選貨名,因此在貨名的條件直接輸入空值 ("")。
- (1) 清境礦泉水-1410cc (2) 花蓮煙台大白菜的交易日期
公式
(1) =DGET(交易記錄,"交易日期",{"貨名";"清境礦泉水-1410cc"})
(2) =DGET(交易記錄,"交易日期",{"貨名";"花蓮煙台大白菜"})
解說
(1) 會輸出 44821 (可將格式轉成日期 2022/9/17),但 (2) 會輸出 #NUM!,因為有多筆 "花蓮煙台大白菜" 項目。
除了使用陣列的方式在公式中輸入條件外,也可以使用儲存格作為 條件,如下圖所示。使用儲存格作為條件後,可以搭配資料驗證製作下拉式選單,便能讓檔案的使用者用更簡單的方式查詢想要的資料。
