新規投稿
フォローする

計算について

お世話になっております。

エクセル関数でいうと下記の良ような計算式を検討しています。

kintoneで計算を行う事は可能でしょうか?

ご教授いただければ幸いです。

 

よろしくお願いいたします。

 

=IF(A1="青山",ROUNDDOWN(B1/C1,-2),ROUNDDOWN(B1/C1,0))

 

  フィールドB ÷ フィールドC 

例) 10,000    ÷  2.22%

 

フィールドAが青山の場合、450,400

フィールドAが青山以外の場合、450,450と計算する。

 

フィールドB は整数

フィールドC は小数(%)

 

0

11件のコメント

Avatar
江田篤史

青山昌司様

お世話になっております。
cstapの江田です。

kintoneの計算フィールドには、条件分岐機能はないようです。
https://jp.cybozu.help/k/ja/user/app_settings/form/autocalc/autocalc_format.html

JavaScriptカスタマイズで計算するのがよいかと思います。
if文などを用いて実装できます。

0
Avatar
青山昌司

江田様

いつもお世話になっております。

ご返信ありがとうございます。

下記のサイトを参考にしてみたのですが

どうしていいのかわからずで・・・。

 

何か参考になるものやアドバイスがございましたらご教授いただければ幸いです。

https://qiita.com/nagito25/items/0293bc317067d9e6c560

 

 

(function () {
"use strict";
kintone.events.on(['app.record.create.show','app.record.edit.show'], function (event){
var record = event.record;
var dropValue = record["A"].value;
var fieldBValue = Number(record["B"].value);
var fieldCValue = Number(record["C"].value);
var fieldDValue = fieldCValue / fieldBValue;

if (dropValue == "青山"){

青山昌司により編集されました
0
Avatar
江田篤史

青山昌司様

お世話になっております。

以下のような記述で実装できるかと思います。

(function() {
  "use strict";
  kintone.events.on([
    'app.record.create.change.フィールドA',
    'app.record.create.change.フィールドB',
    'app.record.create.change.フィールドC',
    'app.record.edit.change.フィールドA',
    'app.record.edit.change.フィールドB',
    'app.record.edit.change.フィールドC',
  ], function(event){
    var raw = event.record.フィールドB.value / event.record.フィールドC.value * 100;
    event.record.フィールドD.value = (event.record.フィールドA.value === '青山') ? Math.floor(raw/100)*100 : Math.floor(raw);
    return event;
  });
})();
0
Avatar
rex0220

青山さん、江田さん

横から失礼します。

有償になりますが、計算式プラグインを使うと Excel 関数のような記述で計算が可能です。

下記の計算式で、PC版 追加・編集画面、一覧編集画面およびスマホ版 追加・編集画面で自動計算されます。

IF(フィールドA="青山",
FLOOR(フィールドB/フィールドC*100,-2),
FLOOR(フィールドB/フィールドC*100,0))

※FLOOR関数は、計算式プラグインの切り下げ関数です。

ご参考になれば。

 

 

0
Avatar
青山昌司

江田様

お世話になっております。

ご返信ありがとうございました。

参考にして下記の様に実装し確認できました。

因みに”A”はドロップダウンですが、コピーし”E”というのも作ったのですが、

AではなくEに置き動かなくなるのですが理由がわかりません。

ご教授いただけると助かります。

よろしくお願いいたします。

 

 

'app.record.create.change.A',
'app.record.create.change.F',
'app.record.create.change.J',
'app.record.edit.change.A',
'app.record.edit.change.F',
'app.record.edit.change.J',
], function(event){
var raw = event.record.F.value / event.record.J.value * 100;


if (event.record.A.value === "青山" ){
event.record.H.value = (Math.floor(raw/100)*100);

}else{
event.record.H.value = (Math.floor(raw));

return event;

0
Avatar
青山昌司

rex0220さま

お世話になっております。

プラグインではお世話になっております。

計算式プラグインも合わせて検討させていただきます。

 

 

0
Avatar
青山昌司
お世話になっております。
追加の質問になります。
下記のタイミングで計算をさせているのですが、
販売方法(ドロップダウン)、料率(数値)共に変更が可能なのですが
現金金額税抜(計算)が変更になった場合に計算されません。
このタイミングで再度販売方法を選択しなおすと計算されるのですが
デバックにもエラーが出ずです。
 
原因がわかりますでしょうか?
何卒ご教示いただければ幸いでございます。
 
よろしくお願いいたします。
 
 
kintone.events.on([
'app.record.create.change.販売方法',
'app.record.create.change.料率',
'app.record.create.change.現金金額税抜',
'app.record.edit.change.販売方法',
'app.record.edit.change.料率',
'app.record.edit.change.現金金額税抜',
 
 

 

0
Avatar
asaga

こんにちは。

計算フィールドはフィールド値変更時イベントが発生しないので、それが原因ではないでしょうか。

フィールドコードに指定可能なフィールド
https://developer.cybozu.io/hc/ja/articles/201941984#step3

1
Avatar
青山昌司

asageさま

 

お世話になっております。

コメント頂きありがとうございます。

指定可能なフィールド確認させていただきました。

 

先ほど、「現金金額税抜(計算)」と説明していましたが

正しくは「現金金額税抜(数値)」でした。

「現金金額税抜(数値)」にjsで自動計算させた数値を入れていたのですが、

計算フィールド扱いという事なのでしょうか?

新しく文字フィールドを追加し、自動計算で「現金金額税抜(数値)」を指定したところ

新しく追加した文字フィールドのチェンジで計算されるようになりました。

 

 

0
Avatar
asaga

数値フィールドだったらchangeイベントは動くと思います。(計算フィールド扱いでは無い)

文字列フィールドの場合は自動計算でもchangeイベントは動きますが、計算フィールドだと駄目みたいですね。

0
Avatar
青山昌司

asageさま

 

お世話になっております。

コメント頂きありがとうございます。

なるほどですね。

計算フィールド扱いではないとの事で再度確認してみたいと思います。

どうしてもだめなら文字フィールドで検討してみます。

ありがとうございました。

 

0
ログインしてコメントを残してください。