kintone 基本機能で文字列一行に桁区切りのついた数値を自動で表示する方法
福島県の物流企業でkintoneを使った業務改善をしております山崎です。夫婦で2代目アトツギ予定です🙌
キンコミ(kintone user community)にてアイデア募集のあった投稿にお返事をしてみました💡
やりたいこと
要約してしまいましたがそういうことですね!
考え方
ROUNDDOWNで3桁区切りごとに切り捨てていって、3桁ごとに数字を取り出し、それらを文字列にし、&でつなぎます。
作成するフィールド
●入力フィールド
請負代金:数値 ※上限999,999,999(9桁)
●自動計算
支払い条件:文字列(一行) ※最終出力したいやつ
123桁目:計算 ※3桁取り出す用
456桁目:計算 ※3桁取り出す用
123桁目文字:文字列(一行) ※数値文字化
456桁目文字:文字列(一行) ※数値文字化
789桁目文字:文字列(一行) ※数値文字化
合体:文字列(一行) ※最終形態
自動計算の設定
3桁区切りごとに数値を求めていきます。元の数値と、ROUNDDOWNで切り捨てをした数値の差を求めて、切り捨て分を抽出します。
▼123桁目:計算
請負代金-ROUNDDOWN(請負代金,-3)
▼456桁目:計算
これは全9桁のうち真ん中の3桁ですが、1000で割ることで下3桁化します。
ROUNDDOWN((請負代金-ROUNDDOWN(請負代金,-6))/1000,0)
▼789桁目文字:文字列(一行)
これは計算フィールドでも大丈夫ですが最終形態の合体元になるので文字列にしています。1000000で割って下3桁化します。
ROUNDDOWN(請負代金/1000000,0)
▼123桁目文字:文字列(一行)
そもそも請負代金が3桁の場合はいいんですが、それ以上の場合、頭に0がつく場合を考慮して、文字化の条件をつけます。
IF(_123桁目=0,"000",
IF(AND(_123桁目>0,_123桁目<10),("00"&_123桁目),
IF(AND(_123桁目>=10,_123桁目<100),("0"&_123桁目),_123桁目)
))
▼456桁目文字:文字列(一行)
IF(_456桁目=0,"000",
IF(AND(_456桁目>0,_456桁目<10,請負代金>1000000),("00"&_456桁目),
IF(AND(_456桁目>=10,_456桁目<100,請負代金>1000000),("0"&_456桁目),_456桁目)
))
▼合体:文字列(一行)
①1,000円未満の場合は、桁区切りがないのでそのまま請負代金を表示
②1,000,000未満の場合は、456桁目文字と、123桁目文字だけで良い
③それを超える場合は、全部連結
IF(請負代金<1000,請負代金,
IF(AND(請負代金>=1000,請負代金<1000000),_456桁目文字&","&_123桁目文字,
IF(請負代金>=1000000,_789桁目文字&","&_456桁目文字&","&_123桁目文字,"")
))
アプリの高度な設定>数値と計算の精度、を変更する
デフォの数値計算精度設定の小数部桁数4だと、999,999,949円を超えると、1,000,000,000円になってしまうんですね。計算外の桁を繰り上げるのかな?なので、6桁に増やします。他のフィールドに影響がないかも確認してください。
多分これで大丈夫だと思うんですけど、変な表示になったらまじでごめんなさい、ていうかコメントで教えてください💦ただ、基本機能なので、他の動作に影響を及ぼすことはないです。あくまで、「合体」の表示がおかしくなるだけです。
大切にしていること
なにもこんなことしなくたって、プラグインとか使えばいいし、運用でカバーできるんじゃないのってのは正しいと思います。うまく動いて喜んでいるだけのやや趣味の世界でもあるように思います。
その上で、ライトコースの基本機能だけで頑張っている会社や部署もたくさんありますし、工夫したら楽しいですよね。仕事をする上で大切なことだと思います。
元の数値と、ROUNDDOWNした数値の差から、切り捨てた値を求める方法は他にも使い道があって、私はもともと、時刻の15分未満切り捨てをどうしようかと思っていた時に思いつきました。
このように色々応用ができますので、参考になればうれしいです。
最後に私のお気に入りの記事を紹介しておわります。
この記事が気に入ったらサポートをしてみませんか?