1. 概述
1.1 函式作用
有時使用者希望能直接在資料集中取出滿足條件的列欄資料,不必再將資料集欄位拖曳到儲存格後新增過濾條件取數,此時可以使用 value 函式。
1.2 函式解譯
value 函式有多種寫法,不同的參陣列合對應不同的取數規則。
最簡形式為:Value(設計器中的資料集名稱,資料集欄號)
例如:
=value("ds1",3) 取 ds1 資料集中第 3 欄的資料,傳回一個陣列。
文法:
文法 | VALUE(tableData,col) | 傳回tableData中欄號為col的一欄值。 |
---|---|---|
參數1 | tableData | 必填 表示資料集名稱,注意是「報表資料集」或者是「伺服器資料集」名,而非資料庫中的表名。 |
參數2 | col | 必填 欄序號,整數型態; |
1.3 注意事項
value 函式參數設定有多種形式,可以直接在函式中輸入,也可以引用儲存格和範本參數。
例如:
value("ds1",1,2) 取 ds1 資料集中第 1 欄第 2 列的資料。
value("ds1",A1,A2) 取 ds1 資料集中第 A1 儲存格中值對應的欄,第 A2 儲存格中值對應的列的資料。
value('ds1',1,2,"牛肉乾") 取 ds1 資料集中第 1 欄資料,對應的第 2 欄資料是 "牛肉乾" 的值,傳回第一欄資料對應值。其中「牛肉乾」可換成儲存格資料。
value($p1,1,$p2) 取 p1 資料集中第 1 欄第 p2 列的資料,其中 p1、p2 為範本參數,將 p1 指派為資料集名稱。
暫時不支援 value("資料集",1,-1) 寫法,-1不生效。若您需要獲取某欄最後一列資料,可以使用類似公式VALUE('ds1',COUNT(value("ds1",3,4,"America")))替代實現。
2. 應用場景
範例資料:內建資料「CUSTOMER」
2.1 建立範本
建立一張範本,建立資料庫查詢 ds1:SELECT * FROM CUSTOMER,如下圖所示:
2.2 使用公式取數
分別在儲存格中輸入如下公式:
輸入公式 | 傳回數值 | 效果 | 公式寫法 | 寫法說明 |
---|---|---|---|---|
= value("ds1",3,2) | 將傳回 customer 表中的第三欄第二列的資料 Washington | ![]() | Value(tabledata,col,row) | 傳回 TableData 中欄號為 col,列號為 row 的值。 |
=value("ds1",3) 注:由於傳回的是陣列,因此設定擴展屬性為從上向下擴展。 | 將傳回資料表中的第三欄資料 | ![]() | Value(tableData,col) | 傳回 TableData 中欄號為 col 的一欄值 |
=value("ds1",3,4,"America") 注:由於傳回的是陣列,因此設定擴展屬性為從上向下擴展。 | 傳回資料表中第三欄元素,且該欄元素對應的第四欄元素的值是 America 的所有資料 | ![]() | Value(tableData,targetCol,orgCol,element) | 傳回 TableData 中第 targetCol 欄中的元素,這些欄元素對應的第 orgCol 欄的值為 element。 |
=value("ds1",3,4,"America",1) | 傳回資料表中第三欄元素,且該欄元素對應的第四欄元素的值是 America 的所有資料中第一個值 | ![]() | Value(tableData,targetCol,orgCol,element,idx) | 傳回 Value(tableData,targetCol, orgCol, element)陣列的第 idx 個值 |