進階函數

GETUSERNAME

GETUSERNAME 函數用於取得當前使用者的暱稱。

函數用法

GETUSERNAME()

函數範例:如,利用暱稱的唯一性,限制每人每天只能填報一筆資料。

INDEX

INDEX 函數可用於取得陣列中指定位置的值。

函數用法

INDEX(陣列, 位置)

其中各參數的含義如下:

陣列:可設定為複選、下拉複選框等欄位,或自訂的陣列等;

位置:指定陣列中第幾個值,必須為整數;當該參數為負數時,則傳回陣列中的倒數第幾個值。

函數範例:如設定公式為INDEX(複選,指定位置),則當指定位置為 1 時,傳回複選中勾選的第一個選項;當指定位置為 -1 時,傳回複選中勾選的倒數第一個選項。

MAPX

MAPX 函數是一個“跨表單”函數。即其他所有函數都是在當前表單運算的函數,無法呼叫當前表單中已經送出的或其他表單中資料;而 MAPX 函數可以在一定程度上彌補這樣的不足。

函數用法

MAPX(operation, map_value, map_field, result_field)

其中各參數的含義如下:

  • operation: 聚合操作,必填;
  • map_value: 條件欄位值,即檢索值,必填;
  • map_field: 條件欄位名,即檢索範圍,必填;
  • result_field:欄位傳回值,必填。

當指定表單的 map_field 列的值為 map_value 時,傳回 result_field 的所有值,然後根據指定的聚合操作operation 得到對應的傳回值。

可以理解為:在檢索範圍中,找到檢索值對應的傳回值,並對傳回值進行聚合操作。

MAPX("聚合操作",檢索值,檢索範圍,傳回值)

注意檢索值來自當前表單中(藍底),檢索範圍和傳回值來自所有表單欄位中的同一表單(灰底)。

具體操作步驟如下:

參數限制:

1. 聚合操作(operation)

operation 參數(聚合操作)為字串,可選值如下::

參數值

含義

first

取得傳回值的第一個

last

取得傳回值的最後一個

max

最大值

min

最小值

avg

平均值

sum

求和

count

取得傳回值的個數

2. 檢索值(map_value)、檢索範圍(map_field)

支援設定檢索值的欄位,及其對應支援的檢索範圍欄位如下表所示:

檢索值

檢索範圍

單行文字

單行文字、多行文字、單選、複選、下拉單選、下拉複選框、流水號、連結參數

數字

數字

多行正文

單行文字、多行文字、單選、複選、下拉單選、下拉複選框、流水號、連結參數

日期時間

日期時間、送出時間、更新時間

單選

單行文字、多行文字、單選、複選、下拉單選、下拉複選框、流水號、連結參數

複選

複選、下拉複選框(全等)

下拉單選

單行文字、多行文字、單選、複選、下拉單選、下拉複選框、流水號、連結參數

下拉複選框

複選、下拉複選框(全等)

連結參數

單行文字、多行文字、單選、複選、下拉單選、下拉複選框、流水號、連結參數

附註

當檢索值為日期時間欄位時,需要設定為 DATE(檢索值),才能檢索成功,檢索範圍直接使用日期時間欄位即可;如:MAPX("COUNT",DATE(日期時間),日期時間,單行正文)。

3. 傳回值(result_field)

以 A 表設定 MAPX 公式,跨表取 B 表資料:MAPX(“聚合操作”,欄位1,欄位2,“傳回值”)為例,根據不同的聚合操作,支援設定傳回值的欄位如下:

聚合操作

支援的傳回值欄位

傳回值計算方法

first

單行文字、多行文字、數字、日期時間、單選、複選、下拉單選、下拉複選框、流水號、送出時間、更新時間、連結參數

取「欄位 1=欄位2」時,B 表中第一條入庫的資料對應的傳回欄位值

last

單行文字、多行文字、數字、日期時間、單選、複選、下拉單選、下拉複選框、流水號、送出時間、更新時間、連結參數

取「欄位 1=欄位2」時,B 表中最後入庫的資料對應的傳回欄位值

max

數字

取「欄位 1=欄位2」時,B 表所有資料數字欄位的最大值

單行文字、多行文字、日期時間、單選、複選、下拉單選、下拉複選框、流水號、送出時間、更新時間、連結參數

取「欄位 1=欄位2」時,B 表所有資料按照字串比較,傳回對應字串最大值

min

數字

取「欄位 1=欄位2」時,B 表所有資料數字欄位的最小值

單行文字、多行文字、日期時間、單選、複選、下拉單選、下拉複選框、流水號、送出時間、更新時間、連結參數

取「欄位 1=欄位2」時,B 表所有資料按照字串比較,傳回對應字串最小值

avg

數字

取「欄位 1=欄位2」時,B 表所有資料數字欄位的平均值

sum

數字

取「欄位 1=欄位2」時,B 表所有資料數字欄位的求和

count

單行文字、多行文字、數字、日期時間、單選、複選、下拉單選、下拉複選框、流水號、送出人、送出時間、更新時間、連結參數

取「欄位 1=欄位2」時,B 表錄入了多少條匹配的資料

附註

1. 檢索範圍和傳回值中的欄位不能選擇子表單欄位;

2. 檢索值不能為成員欄位,當需要以成員欄位計算時,可以先將成員欄位轉成正文欄位儲存編號,然後以正文欄位來計算,檢索範圍欄位也是一樣的設定。

注意檢索值來自當前表單中(藍底),檢索範圍和傳回值來自所有表單欄位中的同一表單(綠底)。

函數範例

跨表有兩種情況:

1. 同 1 張表單,錄入資料時呼叫之前已經送出的資料;

2. 2 張表單,A 表錄入資料時,呼叫 B 表已經錄入的資料。

應用舉例單條件

有一張選課表,在選擇課程時,需要計算出自己是第幾個報名的,即計算出某一課程的已報名人數,再+1。

可以看出,此處的檢索值為課程,選了哪門課程,就統計這門課程的已報名人數。則公式為:

MAPX("COUNT",課程,課程,姓名)

對“我是第幾個報名的”欄位進行編輯函數:

MAPX("COUNT",課程,課程,姓名)+1

對於這個例子,可理解為:在之前錄入的資料裡,尋找「課程」欄位選擇了“健身”的對應的姓名,並用COUNT 函數統計對應姓名的個數,得到已經報名的人數;最後加 1,得到“我是第幾個報名的”。

看一下效果:

  • 選擇了健身課,就是在之前錄入的課程資料裡,尋找值為“健身”的,並對選擇健身的姓名進行計數,發現前面已經有 3 人報名,自己是第 4 個報名的。
  • 同理,選擇了音樂,就是在之前錄入的課程資料裡,尋找值為“音樂”的,並對選擇音樂的姓名進行計數,發現前面已經有 1 人報名,自己是第 2 個報名的。
  • 選擇了舞蹈,就是在之前錄入的課程資料裡,尋找值為“舞蹈”的,並對選擇舞蹈的姓名進行計數,發現前面已經有 2 人報名,自己是第 3 個報名的。

附註

當設定欄位公式為 MAPX("COUNT",課程,課程,姓名) 時,如傳回值為 0,則欄位會顯示為空值。

RECNO

RECNO 函數用於累計計算當前表單被新開啟的次數,起始值為1。

函數用法

RECNO()

函數範例:如,可結合CONCATENATE 函數新增固定前綴或後綴,對錶單查看人數進行計次,用於抽獎、排名等場景中。

CONCATENATE("恭喜您,您是第",RECNO(),"位查看錶單的使用者!")

TEXTDEPT

TEXTDEPT 函數可以取得部門名稱和部門編號。

函數用法

1. 取得部門名稱:

TEXTDEPT(部門單選欄位, "name")

2. 取得部門編號:

TEXTDEPT(部門單選欄位, "deptno")

函數範例:如,透過 TEXTDEPT 函數取得通訊錄中的部門編號,可以對部門編號進行重複值校驗以及其他資料聯動等。

TEXTDEPT(部門,"deptno")

TEXTUSER

TEXTUSER 函數可以取得成員暱稱和成員編號。

函數用法

1. 取得成員暱稱:

TEXTUSER(成员单选字段,"name")

2. 取得成員編號:

TEXTUSER(成员单选字段,"username")

函數範例:如,透過 TEXTUSER 函數取得通訊錄中的成員編號,可以對成員編號進行重複值校驗以及其他資料聯動等。

TEXTUSER(提交人,"username")

UUID

UUID 函數可以用於生成隨機碼,預設匯出格式為 32 位字串 4 個“-”,一共 36 位。

函數用法

UUID()

函數範例:UUID 函數可用於製作隨機流水號等。如果需要從 36 位隨機碼中截取其中一部分,可以結合LEFT 函數一起使用。

LEFT(UUID(),15)

這項資訊有幫助嗎?
需要更多協助嗎?聯繋技術支援。