初めましてKINTONE初心者です。
テーブル内・外の値を、テーブル外の計算フィールドへ結果を出したいのですが、
上手くいきません。
①「費用」が空白なら「履歴区分」が何を選んでも「入金」空白。
②「費用」が無償なら「入金」不要。
③「費用」が有償なら「入金」未入金。
④「費用」が有償かつ「履歴区分」が入金の時のみ「入金」入金済。
させたいのですが可能でしょうか。
どうぞ宜しくお願い致します。
初めましてKINTONE初心者です。
テーブル内・外の値を、テーブル外の計算フィールドへ結果を出したいのですが、
上手くいきません。
①「費用」が空白なら「履歴区分」が何を選んでも「入金」空白。
②「費用」が無償なら「入金」不要。
③「費用」が有償なら「入金」未入金。
④「費用」が有償かつ「履歴区分」が入金の時のみ「入金」入金済。
させたいのですが可能でしょうか。
どうぞ宜しくお願い致します。
IF(費用=“”,“”,IF(費用=“無償”,“不要”,IF(CONTAINS(履歴区分,“入金”,“入金済”,“未入金”))))
このようになると思います。優先度順にIF文を実行し、elseの場合に次の優先度のIFを繋げていくことになります。
mis-hashimotoさん、度々すみません、ありがとうございます。
KINTONEで実行してみましたが、「 CONTAINS関数に指定できる引数は、2個までです。」
とエラーが出てしまったのですが、何か間違いがあるのでしょうか。素人ですみません。
どうぞ宜しくお願い致します。
nao さま
かっこの位置を間違えました。申し訳ありません。
IF(費用=“”,“”,IF(費用=“無償”,“不要”,IF(CONTAINS(履歴区分,“入金”),“入金済”,“未入金”)))
mis-hashimotoさん、ありがとうございます。
できました!凄いですね!
こんなに難しい関数、教えて頂き解決して頂き、ありがとうございます。
度々すみません。
(履歴区分,“入金”)+(進捗状態,“済”)で入金済へ変更できないか試しておりますが保存はできますが
切り替わりませんでした。
ANDの使い方が違うのでしょうか。
IF(費用=“”,“”,
IF(費用=“無償”,“不要”,
IF(AND
(CONTAINS(履歴区分,“入金”),CONTAINS(進捗状態,“済”)),
“入金済”,“未入金”)
))
nao さま
CONTAINS演算子は、複数選択またはチェックボックス(複数選択できるもの)、もしくはサブテーブル内のフィールドにのみ使えるものです。
進捗状況はドロップダウンフィールドかと思いますので、その場合は「=」を使用する必要があります。
mis-hashimotoさん、ありがとうございます。
=を追加し実行致しました。
CONTAINS関数には2個の引数が必要です。と出てしまいます。
IF(費用=“”,“”,IF(費用=“無償”,“不要”,
IF(AND(CONTAINS(履歴区分=“入金”),CONTAINS(進捗状態=“済”),
“入金済”,“未入金”
))))
根本的な関数の書き方に問題があるのですね。
アドバイス宜しくお願い致します。
nao さま
IF(AND(履歴区分=“入金”,進捗状態=“済”),
CONTAINS自体を使用せず、以上のようになります。
また、ANDの閉じる位置も違うようです。以下のようになります。
IF(費用=“”,“”,IF(費用=“無償”,“不要”,IF(AND(履歴区分=“入金”,進捗状態=“済”),“入金済”,“未入金”)))
mis-hashimotoさんありがとうございます。
すみません。CONTAINS関数は不要でしたね。
IF(費用=“”,“”,IF(費用=“無償”,“不要”,IF(AND(履歴区分=“入金”,進捗状態=“済”),“入金済”,“未入金”)))
配列型の値に対して適切な関数が利用されていません、と出てしまいました。
nao さま
履歴区分はサブテーブル内でしたね…失礼しました。進捗状態だけ変更する必要がありました。
IF(費用=“”,“”,IF(費用=“無償”,“不要”,IF(AND(CONTAINS(履歴区分,“入金”),進捗状態=“済”),“入金済”,“未入金”)))
mis-hashimotoさんありがとうございます。
度々すみません。エラーが出てしまいました。(配列型の値に対して適切な関数が利用されていません)
nao さま
失礼しました。私は画像の左上の「進捗状況」が計算式に組み込むものと思って見ていました。サブテーブル内の「進捗状態」ですね。
その場合はnao さまが最初に投稿された
IF(費用=“”,“”,
IF(費用=“無償”,“不要”,
IF(AND(CONTAINS(履歴区分,“入金”),CONTAINS(進捗状態,“済”)),
“入金済”,“未入金”)
))
こちらの計算式で問題ありません。
当方環境では動作しております。
mis-hashimotoさんありがとうございます。
度々すみません。説明ができておらず申し訳ございませんでした。
「履歴区分」には他に( 連絡・訪問・下見 入金 )などありまして、
画像の様に入金の行以外の連絡の行を「済」にすると「入金済」となってしまいます。
入金を選んだ行を済にした場合のみ「入金済」に出来ますでしょうか。
説明不足ですみません。どうぞ宜しくお願い致します。
nao さま
両方の条件を満たす行があった場合のみ、という処理ですね。その場合はフィールドの自動計算機能ではできないので、JavaScriptによるカスタマイズが必要になります。
入金フィールドの自動計算機能はオフにし、以下を使用して下さい。
(() => {
let payment = '入金'; // 入金のフィールドコード
let cost = '費用'; // 費用のフィールドコード
let history = '履歴区分'; // 履歴区分のフィールドコード
let progress = '進捗状況'; // 進捗状況のフィールドコード
let subTable = 'テーブル'; // サブテーブルのフィールドコード
kintone.events.on([
`app.record.create.change.${cost}`, `app.record.edit.change.${cost}`,
`app.record.create.change.${history}`, `app.record.edit.change.${history}`,
`app.record.create.change.${progress}`, `app.record.edit.change.${progress}`
], (event) => {
let record = event.record;
let paymentValue = '';
if (record[cost].value === '無償') {
paymentValue = '不要';
} else if (record[cost].value === '有償') {
let isComplete = record[subTable].value.some((row) => {
return row.value[history].value === '入金' && row.value[progress].value === '済';
});
if (isComplete) {
paymentValue = '入金済';
} else {
paymentValue = '未入金';
}
}
record[payment].value = paymentValue;
return event;
});
})();
mis-hashimotoさんありがとうございます。
できました!初心者へこんなにご丁寧にありがとうございます。
関数でも難しく、JavaScriptカスタマイズとなりますと、程遠いです。
mis-hashimotoさん助けて頂き、本当にありがとうございます。
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。