1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rex0220 計算式プラグイン テーブル内小計

Last updated at Posted at 2023-01-25

kintone のテーブルで、小計を計算してみます。
計算式プラグイン項目検証プラグイン項目書式プラグインを使います。

テーブル内小計

概要行と小計行に挟まれた明細行の金額の小計を計算します。
概要、明細、小計の各行は、マニュアル設定です。
テーブル行が増加すると、計算処理に時間がかかります。
20行~30行くらいまでが実用範囲だと思われます。
rex0220 計算式プラグイン テーブル処理時間の改善 で、50行以上も実用範囲になります。

  • 詳細画面
    2023-01-26_00h52_30.png

  • 一覧画面
    2023-01-26_10h32_47.png

操作例

2023-01-26_01h01_23.gif

計算式プラグインの設定

概要行と小計行の間の明細行の金額合計を小計行の金額に設定します。
「循環参照を許可」にチェックが必要です、

// No
ROWNO(テーブル)+1
// 商品
LET(CNO,ROWNO(テーブル),
  SWITCH(分類,
    "小計",LET(PNO,NVL(LASTIF(AND(ROWNO(テーブル)<CNO,分類="小計"),ROWNO(テーブル)),-1),
      FIRSTIF(AND(ROWNO(テーブル)<CNO,ROWNO(テーブル)>PNO,分類="概要"),商品)),
    商品)
)
// 数量
IF(分類="明細",数量,"")
// 単価
IF(分類="明細",単価,"")
// 金額
LET(CNO,ROWNO(テーブル),
  SWITCH(分類,
    "明細",数量*単価,
    "小計",LET(PNO,NVL(LASTIF(AND(ROWNO(テーブル)<CNO,分類="小計"),ROWNO(テーブル)),-1),
      SUMIF(AND(ROWNO(テーブル)<CNO,ROWNO(テーブル)>PNO,分類="明細"),金額)),
    "")
)
  • 金額の計算式の説明
    • LET(CNO,ROWNO(テーブル) :
      集計関数内では行番号(ROWNO)が変わるため、LET 関数で処理中の行番号を取得しておく。
      • SWITCH(分類, : 分類ごとに処理を分ける
        • "明細",数量*単価, :明細行は、金額計算
        • "小計",LET(PNO,NVL(LASTIF(AND(ROWNO(テーブル)<CNO,分類="小計"),ROWNO(テーブル)),-1), SUMIF(AND(ROWNO(テーブル)<CNO,ROWNO(テーブル)>PNO,分類="明細"),金額)),
          ※小計行は、前の小計行(PNO)から処理中行(CNO)前までの金額を合計
        • "" :概要行は、金額を空欄

2023-01-26_01h06_58.png

項目検証プラグインの設定

概要、小計行の入力不可の指定のみ行っています。

// 商品の入力不可
分類="小計"
// 数量の入力不可
分類!="明細"
// 単価の入力不可
分類!="明細"

2023-01-26_01h13_10.png

項目書式プラグインの設定

小計行のみ背景色を指定します。

// テーブル行の条件
分類="小計"

2023-01-26_23h55_57.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?