計算式の使い方

計算式は手当額の計算や仕訳データ出力の設定で、独自のルールを設定する際に使います。

計算式は制御構文、演算子、項目、数値、文字を組み合わせて作成します。

制御構文

計算式は上から順に実行されますが、制御構文を使うことで処理を分岐できます。

「Aの場合は◯◯、Bの場合は✗✗」といった条件分岐が必要な場合に使用します。

if / elseif / else

条件に応じて処理を分岐させます。

構文

説明

if

条件式を書きます。条件に合致するとその下の行が実行されます。制御構文は必ずifから始まります。

elseif

if以外の条件が必要な場合に使います。複数書くことができ、上から順に判定して条件に合致する1箇所のみが実行されます。

else

ifelseifのどれにも合致しない場合に実行する処理を書きます。

then

条件式の終わりに記述します。ifまたはelseifの後に書きます。elseには不要です。

return

計算を終了して結果を返します。

end

ifブロックの終わりを示します。必ず書きます。

コピー
if [申請者役職情報.役職コード] = 'A0001' then
    return 10000
elseif [申請者役職情報.役職コード] = 'A0002' then
    return 5000
elseif [申請者役職情報.役職コード] = 'A0003' then
    return 2500
else
    return 1000
end

演算子

データを計算・比較するためのキーワードです。

論理演算子

複数の条件を組み合わせる際に使用します。

and(かつ)

すべての条件が成り立つ場合に真となります。

コピー
if [申請者役職情報.役職コード] = 'A0001' and [申請者部門情報.部門コード] = 'B0001' then
    return 10000
end

or(または)

いずれかの条件が成り立つ場合に真となります。

コピー
if [申請者役職情報.役職コード] = 'A0001' or [申請者部門情報.部門コード] = 'B0001' then
    return 10000
end

!(NOT演算子)

条件に合致しない場合を判定します。

コピー
if !([申請者役職情報.役職コード] = 'A0001') then
    // 役職コードがA0001ではない場合
    return 10000
end

演算子の優先順位

andorよりも優先されます。

優先順位を変えたい場合は括弧()で囲みます。

コピー
// andが先に評価される例
if [役職コード] = 'A0001' or [役職コード] = 'A0002' and [部門コード] = 'B0001' then
    // ①役職コードがA0001
    // ②役職コードがA0002かつ部門コードがB0001
    // ①②のどちらかに合致すれば実行される
    return 10000
end
コピー
// 括弧で優先順位を変更
if ([役職コード] = 'A0001' or [役職コード] = 'A0002') and [部門コード] = 'B0001' then
    // ①役職コードがA0001またはA0002
    // ②部門コードがB0001
    // ①と②の両方に合致する場合のみ実行される
    return 10000
end

算術演算子

数値の計算に使用します。

文字列を含む場合、+以外はエラーになります。

演算子

説明

+

足し算(文字列の場合は結合)

10000 + 500015000

'ABC' + 5000ABC5000

'100' + 50001005000

-

引き算

10000 - 20008000

*

掛け算

10000 * 330000

/

割り算

10000 / 52000

注意

エラーになった場合、計算結果は無し(手当額の場合は0)になります。

比較演算子

値を比較する際に使用します。

演算子

説明

=

等しい

[金額] = 1000

!=

等しくない

[金額] != 1000

<

より小さい

[金額] < 1000

<=

以下

[金額] <= 1000

>

より大きい

[金額] > 1000

>=

以上

[金額] >= 1000

  • 社員名で比較する時は苗字・名前の間にスペースを入れないでください

  • 日付はYYYY/MM/DD形式(例: 2025/01/01)で指定してください

  • 時刻はHH:MM形式(例: 23:59)で指定してください

  • 期間、時間範囲の項目との比較はできません

項目

計算式で使用できる項目です。

[項目カテゴリ.項目名]の形式で記述します。

画面上の「挿入」ボタンをクリックすると計算式に追加されます。

ヘッダ項目

申請全体に関する項目です。

[申請データ(ヘッダ).項目名]の形式で使用します。

事前申請

事前申請の一覧に表示されている申請Noと比較します。

コピー
if [申請データ(ヘッダ).事前申請] = 10 then
    return 1000
end

X'sion申請

X'sion申請の一覧に表示されている申請Noと比較します。

コピー
if [申請データ(ヘッダ).X'sion申請] = '000000049' then
    return 1000
end

負担部門

部門コードと比較します。

明細の同項目も同じ使い方です。

コピー
if [申請データ(ヘッダ).負担部門] = 'D0001' then
    return 1000
end

負担プロジェクト

プロジェクトコードと比較します。

明細の同項目も同じ使い方です。

コピー
if [申請データ(ヘッダ).負担プロジェクト] = 'P0001' then
    return 1000
end

仮払金

事前申請で仮払金を希望しているかを判定します。

'希望する'または'希望しない'と比較します。

コピー
if [申請データ(ヘッダ).仮払金] = '希望する' then
    return 1000
end

出張期間(開始日_YYYY/MM/DD)

出張期間の開始日をYYYY/MM/DD形式で比較します。

コピー
if [申請データ(ヘッダ).出張期間(開始日_YYYY/MM/DD)] = '2026/01/02' then
    return 1000
end

出張期間(開始日_YYYY)

出張期間の開始日の年を比較します。

数値・文字列のどちらでも指定できます。

コピー
// 数値で比較
if [申請データ(ヘッダ).出張期間(開始日_YYYY)] = 2026 then
    return 1000
end

// 文字列で比較
if [申請データ(ヘッダ).出張期間(開始日_YYYY)] = '2026' then
    return 1000
end

出張期間(開始日_MM)

出張期間の開始日の月を比較します。

数値・文字列のどちらでも指定できます。

コピー
// 数値で比較
if [申請データ(ヘッダ).出張期間(開始日_MM)] = 1 then
    return 1000
end

// 文字列で比較(ゼロ埋め)
if [申請データ(ヘッダ).出張期間(開始日_MM)] = '01' then
    return 1000
end

出張期間(開始日_DD)

出張期間の開始日の日を比較します。

数値・文字列のどちらでも指定できます。

コピー
// 数値で比較
if [申請データ(ヘッダ).出張期間(開始日_DD)] = 2 then
    return 1000
end

// 文字列で比較(ゼロ埋め)
if [申請データ(ヘッダ).出張期間(開始日_DD)] = '02' then
    return 1000
end

出張期間(終了日_*)

終了日は開始日と同じ要領で設定します。

(YYYY/MM/DD、YYYY、MM、DD)

出張期間(出張日数)

出張期間の開始日から終了日までの日数と比較します。

1/1〜1/2の場合は2となります。

注意

手当の設定で「最終日の適用を除外する」トグルがONの場合は最終日を除外して1となります。

コピー
if [申請データ(ヘッダ).出張期間(出張日数)] = 7 then
    return 1000
end

出張期間(出張日数_土日祝)

出張日数のうち、土曜日・日曜日・祝日のみの日数と比較します。

コピー
if [申請データ(ヘッダ).出張期間(出張日数_土日祝)] = 2 then
    return 1000
end

出張期間(出張日数_土日祝を除く)

出張日数のうち、土曜日・日曜日・祝日以外の日数と比較します。

コピー
if [申請データ(ヘッダ).出張期間(出張日数_土日祝を除く)] = 5 then
    return 1000
end

行き先

申請時に入力された行き先と比較します。

コピー
if [申請データ(ヘッダ).行き先] = '東京' then
    return 1000
end

手当1

手当名と比較します。手当2〜も同じ使い方です。

コピー
if [申請データ(ヘッダ).手当1] = '【日帰】役職による日当(一律)' then
    return 1000
end

精算方法

'振込'または'現金'と比較します。

コピー
if [申請データ(ヘッダ).精算方法] = '振込' then
    return 1000
end

明細項目

申請の各明細行に関する項目です。[申請データ(明細).項目名]の形式で使用します。

日付(YYYY/MM/DD)

日付をYYYY/MM/DD形式で比較します。

コピー
if [申請データ(明細).日付(YYYY/MM/DD)] = '2026/01/02' then
    return 1000
end

日付(YYYY)

日付の年を比較します。数値・文字列のどちらでも指定できます。

コピー
// 数値で比較
if [申請データ(明細).日付(YYYY)] = 2026 then
    return 1000
end

// 文字列で比較
if [申請データ(明細).日付(YYYY)] = '2026' then
    return 1000
end

日付(MM)

日付の月を比較します。数値・文字列のどちらでも指定できます。

コピー
// 数値で比較
if [申請データ(明細).日付(MM)] = 1 then
    return 1000
end

// 文字列で比較(ゼロ埋め)
if [申請データ(明細).日付(MM)] = '01' then
    return 1000
end

日付(DD)

日付の日を比較します。数値・文字列のどちらでも指定できます。

コピー
// 数値で比較
if [申請データ(明細).日付(DD)] = 2 then
    return 1000
end

// 文字列で比較(ゼロ埋め)
if [申請データ(明細).日付(DD)] = '02' then
    return 1000
end

時刻(開始時刻_HH:MM)

時刻欄の開始時刻をHH:MM形式で比較します。未入力の場合は'--:--'となります。

コピー
if [申請データ(明細).時刻(開始時刻_HH:MM)] = '01:02' then
    return 1000
end

// 未入力の場合
if [申請データ(明細).時刻(開始時刻_HH:MM)] = '--:--' then
    return 1000
end

時刻(開始時刻_HH)

開始時刻の「時」を比較します。数値・文字列のどちらでも指定できます。未入力の場合は''(空文字)となります。

コピー
// 数値で比較
if [申請データ(明細).時刻(開始時刻_HH)] = 1 then
    return 1000
end

// 文字列で比較(ゼロ埋め)
if [申請データ(明細).時刻(開始時刻_HH)] = '01' then
    return 1000
end

// 未入力の場合
if [申請データ(明細).時刻(開始時刻_HH)] = '' then
    return 1000
end

時刻(開始時刻_MM)

開始時刻の「分」を比較します。数値・文字列のどちらでも指定できます。未入力の場合は''(空文字)となります。

コピー
// 数値で比較
if [申請データ(明細).時刻(開始時刻_MM)] = 2 then
    return 1000
end

// 文字列で比較(ゼロ埋め)
if [申請データ(明細).時刻(開始時刻_MM)] = '02' then
    return 1000
end

// 未入力の場合
if [申請データ(明細).時刻(開始時刻_MM)] = '' then
    return 1000
end

時刻(終了時刻_*)

終了時刻は開始時刻と同じ要領で設定します。(HH:MM、HH、MM)

内訳

内訳コードと比較します。

コピー
if [申請データ(明細).内訳] = 'B0001' then
    return 1000
end

税率

申請時に選択された税率と比較します。

コピー
if [申請データ(明細).税率] = '10%' then
    return 1000
end

単価

申請時に入力された単価と比較します。

コピー
if [申請データ(明細).単価] = 1234 then
    return 1000
end

数量

申請時に入力された数量と比較します。

コピー
if [申請データ(明細).数量] = 10 then
    return 1000
end

交通経路(出発)

出発欄に入力された値と比較します。

コピー
if [申請データ(明細).交通経路(出発)] = '羽田空港(東京)' then
    return 1000
end

交通経路(到着)

到着欄に入力された値と比較します。

コピー
if [申請データ(明細).交通経路(到着)] = '秋葉原' then
    return 1000
end

金額

申請時に入力された金額と比較します。

コピー
if [申請データ(明細).金額] = 120000 then
    return 1000
end

単位

通貨単位と比較します。

コピー
if [申請データ(明細).単位] = 'USD' then
    return 1000
end

換算前金額

外貨の換算前金額と比較します。

コピー
if [申請データ(明細).換算前金額] = 10 then
    return 1000
end

支払方法

申請時に選択された支払方法と比較します。

コピー
if [申請データ(明細).支払方法] = '従業員立替' then
    return 1000
end

出張区分

'国内出張'または'海外出張'と比較します。

コピー
if [申請データ(明細).出張区分] = '国内出張' then
    return 1000
end

インボイス登録番号

申請時に入力されたインボイス登録番号と比較します。

コピー
if [申請データ(明細).インボイス登録番号] = 'T4011001069219' then
    return 1000
end

取引先名

申請時に入力された取引先名と比較します。

コピー
if [申請データ(明細).取引先名] = '株式会社◯◯' then
    return 1000
end

数値・文字・コメント

数値と文字

  • 数値:そのまま記述します(例: 10000

  • 文字:シングルクォート'またはダブルクォート"で囲みます(例: 'A0001'

コメント

計算式に補足説明を書くことができます。//以降がコメントとして扱われ、計算に影響しません。

コピー
if [申請者役職情報.役職コード] = 'A0001' then
    // 役職が社長の場合、1万円
    return 10000
elseif [申請者役職情報.役職コード] = 'A0002' then
    if [申請者部門情報.部門コード] = 'B0001' then
        // A部門の場合
        return 5500
    else
        // その他部門の場合
        return 5000
    end
elseif [申請者役職情報.役職コード] = 'A0003' or [申請者役職情報.役職コード] = 'A0004' then
    // 役職が課長または係長の場合
    return 2500
else
    // その他の場合
    return 1000
end

変数

変数はデータを一時的に格納する箱のようなものです。
複雑な計算式で、値を使いまわしたい場合に便利です。

変数名のルール

  • 半角英数とアンダーバー_のみ使用可能

  • 先頭に数字は使用不可

my_value = 1 + 2 // 3を変数にセット

if [申請者役職情報.役職コード] = 'A0001' then
    return my_value * 1000 // 計算結果は3000
end

if [申請者役職情報.役職コード] = 'A0002' then
    my_value = my_value * 2 // 6を変数にセット
end

return my_value // 計算結果は6

その他の設定

設定項目

説明

テーマ

計算式入力欄の配色テーマを選択できます。
Light、High Contrast Light、Dark、High Contrast Dark から選択できます。

整形

入力した計算式の見た目を整えます。

端数処理

計算結果に小数が発生した場合の処理方法を選択できます。(切り捨て / 切り上げ / 四捨五入)

構文チェック

計算式の有効性をチェックします。エラーが検出された場合は、メッセージに従って修正してください。

お試し実行

入力した計算式を、登録前にお試しで実行できます。

お試し実行

お試し実行は、計算式の動作を確認するための機能です。

項目の値を指定して計算式をテストできます。

alt text
alt text