外部のDBやメールなどからデータをSalesforceに取り込んだときに、フォーマットができないものをテキスト型で取得するということがあるかと思います。
今回は実際にあった事例を基にyyyy-MM-ddの日付型でなく、yyyy年MM月dd日のテキスト型から年齢を算出してみました。
yyyy年MM月dd日を日付に変換する
2.戻り値が日付の数式項目を下記の数式を参考に作成します。
今回のように複数条件がある場合はネストさせることで実現できます。
DATEVALUE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(参照元のテキスト項目,"年","-"),
"月","-"),
"日","")
)
3.年月日を置換して日付のフォーマットに直したことで日付に変換することができました。
yyyy年MM月dd日から年齢を算出する
上記の応用として日付に変換した後、その値を使って年齢を出すこともできます。
TEXT(
FLOOR(
( TODAY() - DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(参照元のテキスト項目,"年","-"),"月","-"),"日","")) ) / 365.2425
)
)+"歳"
参考文献
https://help.salesforce.com/s/articleView?id=sf.customize_functions_i_z.htm&type=5
まとめ
フォーマットに困った時はテキスト型で取り込んでSUBSTITUTE関数を使って置換してあげると良さそうです。