Intertidal

潮間帶工作室

Notion Formula 2.0 變數功能(lets)

平常有在 Notion 自建資料庫,用來記錄股票的買賣還有計算損益。
前陣子 0050 說要分割,因為有點擔心這件事情會把我的表格弄壞,所以重新檢視了一下我寫的公式,順便用後來更新的 2.0 版 formula 改寫一遍。

好奇查了一下 Formula 2.0 已經是兩年前的東西了,我到底多久沒有更新資訊?

用到公式計算的欄位其實很簡單:交易成本。也就是當我手動輸入股數跟股價之後,它會自動幫我把手續費、證交稅算出來。只是這其中也牽扯到一些簡易的判斷邏輯(例如只有賣出才有證交稅),所以用原本的 formula 寫出來有點難以閱讀。

後來出的變數功能很好的改善了這點,只是他寫起來跟一般寫程式很不一樣,需要花點時間讓頭腦轉換一下。

變數 lets 介紹

根據官方範例,變數的寫法如下:

1
2
3
4
5
lets(
arg1, value1, //var arg1 = value1;
arg2, value2, //var arg2 = value2;
arg1 + arg2 //return arg1+arg2;
);

前面的參數兩兩一對,第一個是變數名稱,第二個是要存在變數裡面的值,或運算式。最後一個參數是輸出結果。

所以這個東西一定是奇數個參數(2N+1)。

實際需求

回到我的需求,實際寫起來長這樣

1
2
3
4
5
6
lets(
amount, prop("股數")*prop("成交價"),
fee, amount*手續費公式,
tax, amount*證交稅公式,
if(prop("類別")=="賣出", fee+tax, fee)
)

省略了點東西,但應該不難閱讀:先把總價計算出來放在第一個變數,然後分別用總價計算手續費與證交稅,一樣存在各自的變數裡,最後一行的計算階段判斷該筆交易費用是純手續費還是要加證交稅。

這邊可以注意到的小細節是,前面定義好的變數amount,下個參數fee馬上就可以拿出來用了,不是只有最後的輸出階段才能用。

至於最後的if函數,應該不用特別介紹吧?他就是三元運算子

1
2
// a>b ? a : b;
if(a>b, a, b)

股票分割呢?

回到最初的困擾:我要怎麼紀錄股票分割?我最後的做法是在分割日記一筆賣出全部股票,然後在分割完成後用新的價格買入新的張數。

只是這樣我的交易成本公式又變得更複雜了,因為我還要判斷這兩筆虛擬交易,沒有任何交易費用。

參考資料

Formulas 2.0: How to use Notion’s new and improved formulas with your existing setups


Hi 喜歡這篇文章的話 可以按個讚或請我喝杯咖啡
Buy me a coffeeBuy me a coffee

目錄