ExcelのTEXT関数で期待した値が得られない事がある

フォローする

概要

DSでExcelファイルを読み込み、TEXT関数を再計算した時に期待した値とならないケースがあります。

エラーメッセージ

エラーメッセージは出力しません。
例として TEXT(TODAY(), "aaa") のような式が44092.0のようなシリアル値に変換されてしまい、
DS上では期待した値が得られず、日付や曜日が返る事を期待する処理が失敗する事があります。

<参考>

上から順に
=TEXT(TODAY(),"aaa")
=TEXT(TODAY(),"aaaa")
=TEXT(TODAY(),"ddd")
=TEXT(TODAY(),"dddd")
=TEXT(TODAY(),"ggg")
=TEXT(TODAY(),"mmmm")
=TEXT(TODAY(),"yyyy")
=TEXT(TODAY(),"yyyy/mm/dd")
という関数を計算するExcelファイルを読み込みます。



Excelを編集する処理を加える事で、各関数が再計算されます。
参考:TODAY関数が本日日付で表示されない



TEXT関数が再計算されますが、=TEXT(TODAY(),"aaa")ではシリアル値が返ります。

対処方法

1例として、
=CHOOSE(WEEKDAY(TODAY()), "日","月","火","水","木","金","土")
のような関数を利用する事で
=TEXT(TODAY(),"aaa")
と同じ結果が得られます。

参考

BizRobo! は「Apache POI 」を使用してExcelを操作しておりますが、
以下Apache POIのドキュメントにもあるように、
POIのTEXT関数はExcelのTEXT関数の完全な実装ではありません。

参考外部URL:https://poi.apache.org/apidocs/dev/org/apache/poi/ss/formula/functions/TextFunction.html#TEXT

TEXT returns a number value formatted with the given number formatting string. This function is not a complete implementation of the Excel function, but handles most of the common cases

これにより問題の挙動となっていると考えられます。

区分 確認Ver
トラブルシュート 10.3.0.8

 

0人中0人がこの記事が役に立ったと言っています

コメント

0件のコメント

記事コメントは受け付けていません。