兄弟们,请教个org计算统计的问题

如图,我想统计未结金额或已结金额,是谁无所谓,只算未结/已结的金额合计,有什么方法可行呢?

谢谢。

1 个赞

我想到的方法,只要你实际的内容符合你图中展示的格式,就可以这样做:

  1. 将未结金额整个subtree复制到另一个临时buffer里面
  2. M-x keep-lines,输入“金额:”,筛选出来所有的带“金额:”的行
  3. C-x SPC,矩形方式选中,DEL删掉“金额:” image
  4. 前面加个(+,尾部加个),然后C-x C-e计算表达式即可

然后用同样的方式计算已结的金额

试试这个

这个虽有点烦琐,但是能解决问题,谢谢兄弟提供思路。

我搞出来不是表格,全都挤成一坨不知什么鬼,再试试。感谢。

是长期使用吗?长期使用专门写一个函数处理一下的话,会方便很多

类似这样的

(defun xxx ()
  (interactive)
  (when (region-active-p)
    (apply '+
           (seq-map (lambda (str)
                      (if (string-match "金额:[[:space:]]*\\([[:digit:]]+\\)" str)
                          (string-to-number (match-string 1 str))
                        0))
                    (string-split (buffer-substring-no-properties (region-beginning)
                                                                  (region-end))
                                  "\n")))))

可以用 Properties 和 column view,如下

(defun my/reb-copy-match (&optional priority)
  "Copy current match strings into the `kill-ring'. Default copy first group."
  (interactive "p" reb-mode)
  (reb-assert-buffer-in-window)
  (with-current-buffer (window-buffer reb-target-window)
    (kill-new
     (mapconcat
      (lambda (a)
        (when (equal (overlay-get a 'priority) priority)
          (format "%s
" (buffer-substring-no-properties (overlay-start a) (overlay-end a)))))
      reb-overlays))))
(with-eval-after-load 're-builder
  (keymap-set reb-mode-map "C-c M-w" 'my/reb-copy-match))

写了个函数通过 re-builder 的正则复制特定组的字符串,narrow 后写正则匹配数字,粘贴到临时 buffer,选中并 C-x * : 调用 calc 合计

是记账吗?可以试试gnucash这个app。

感谢各位兄弟 :ok_hand:

不是记账,网页导出项,不定时从未结账往已结账转换。