在组织表中按组汇总成本

问题描述 投票:0回答:2

假设组织表中有这样一个电子表格

|------------+-------+------------+--------+--------+------------|
| Date       | Items | Unit Price | Amount | Amount | Categories |
|------------+-------+------------+--------+--------+------------|
| 2019/09/17 | A     |       2.64 |      1 |   2.64 | materials  |
|            | B     |      52.67 |      2 | 105.34 | diagnosis  |
|            | C     |       3.08 |      1 |   3.08 | materials  |
|            | D     |       3.85 |      2 |    7.7 | materials  |
|            | E     |      33.66 |      2 |  67.32 | materials  |
|            | F     |         40 |      1 |     40 | treatments |
|            | G     |       16.5 |      1 |   16.5 | materials  |
|            | H     |          4 |      3 |     12 | treatments |
|            | I     |         40 |      1 |     40 | bed        |
| x          | M     |       6    |     13 |     78 | treatments |
|------------+-------+------------+--------+--------+------------|
#+TBLFM: $5=$3*$4

我要汇总材料费。

是否可以像

vsum(where Categories == materials)
那样分组来计算?

emacs org-mode
2个回答
1
投票

使用 elisp 表达式执行此操作的一种方法是:

|------------+-------+------------+--------+--------+------------|
| Date       | Items | Unit Price | Amount | Amount | Categories |
|------------+-------+------------+--------+--------+------------|
| 2019/09/17 | A     |       2.64 |      1 |   2.64 | materials  |
|            | B     |      52.67 |      2 | 105.34 | diagnosis  |
|            | C     |       3.08 |      1 |   3.08 | materials  |
|            | D     |       3.85 |      2 |    7.7 | materials  |
|            | E     |      33.66 |      2 |  67.32 | materials  |
|            | F     |         40 |      1 |     40 | treatments |
|            | G     |       16.5 |      1 |   16.5 | materials  |
|            | H     |          4 |      3 |     12 | treatments |
|            | I     |         40 |      1 |     40 | bed        |
| x          | M     |          6 |     13 |     78 | treatments |
|------------+-------+------------+--------+--------+------------|
| TOTAL:     |       |            |        |  97.24 |            |
|------------+-------+------------+--------+--------+------------|
#+TBLFM: $5=$3*$4
#+TBLFM: @12$5='(apply #'+ (cl-mapcar (lambda (num category) (if (eq category 'materials) num 0)) '(@II$5..@III$5) '(@II$6..@III$6)));L
通过比较第 6 列的列表与符号

cl-mapcar

+
'materials
应用于单元格 @12$5。

此解决方案和 emacsSE 中的“计算解决方案”


0
投票

您可能想查看 MELPA 上提供的 orgtb-aggregate 包。

文档在这里: https://github.com/tbanel/orgaggregate/blob/master/README.org

© www.soinside.com 2019 - 2024. All rights reserved.