1. 函式作用
報表中,若使用到複雜的FR腳本運算式,如:=if (很長很長的公式 > 0,執行語句 1(很長很長的公式),執行語句 2(很長很長的公式)),首先想到的是:將很長很長的公式先放在一個儲存格(如:A1)中,然後在另一個儲存格中,輸入=if(a1>0, 執行語句1(a1), 執行語句2(a1))。對於這樣的很長公式,一般公式中還會有部分內容是一些其他的簡單運算,若再使用儲存格去求算一下,最終求算最終結果時就得引用多個儲存格。這樣的指派方式,不但多佔用空間記憶體使得重複計算,其效能往往也不是很好。據此 FR 已增加 LET 公式,可將其很長的公式直接指派,且可直接使用此公式求解最終結果(複雜的腳本運算式),還可提高其效能。
2. 使用說明
2.1 LET()函式說明
LET(變數名,變數值,變數名,變數值,...,運算式):區域性變數指派函式,參數的個數 N 必須為奇數, 最後一個是運算式,前面是 N-1(偶數)為區域性變數指派對。
變數名:必須是合法的變數名,以字母開頭,可包括字母,數字和底線。
運算式:根據其前面的 N-1 個參數指派後,需計算的結果運算式,且這些變數指派只在這個運算式內部有效。
範例:
LET(a, 5,b, 6, a+b)等於 11。
2.2 範例
下面根據如上所遇的情況範例介紹,您可根據實際情況,參照範例使用此公式。
1)一個很長的公式為((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1),若將其賦給 a,需計算 IF(a>1000,(a+200)/a,(a-200)*a)的結果運算式。
2)通常的做法:在任意儲存格(如:A1)中,輸入((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1),然後在另一個儲存格(如:B1)中,輸入=IF(A1>1000,(A1+200)/A1,(A1-200)*A1)。
3)而計算時是將 A1 中的值,對應帶入其結果運算式中的。如這邊帶入的話就是計算=IF((((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1))>1000,((((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1))+200)/(((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1)),((((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1))-200)*(((10+20+30)*MAX(10,20,30)+DATEDIF("2001/2/28","2004/3/20","D"))*COS(0.5)/ROUND(2.15, 1)))
不僅多佔用儲存格且使得運算式重複計算,其效能往往也不是很好。
4)LET 公式的寫法:只需在儲存格中直接指派和寫入結果運算式。在一個儲存格中,直接輸入=LET(a, ((10 + 20 + 30) * MAX(10, 20, 30) + DATEDIF("2001/2/28", "2004/3/20", "D")) * COS(0.5) / ROUND(2.15, 1), IF(a> 1000, (a+ 200) / a, (a - 200) * a))即可執行結果運算式,進而得出最終結果。
2.3 總結
對比可看出,使用 LET 公式明顯比通常的做法來得簡單,且公式中若再有其他簡單運算,如:最大值、平均值等等,也可不必再次佔用其他儲存格然後再引用此類儲存格,這邊可直接一步到位求算結果(亦可在 LET 中直接寫一些常用的計算公式),這樣也大大地提高了效能。