Org Mode表格能否使用列名作为公式赋值目标?
解决方案:用
$<<colname>>语法实现列名赋值 你猜的没错——Org Mode表格公式里,赋值运算符左边确实不能直接用$colname的格式引用列名,不过有个简单的语法可以解决这个问题,让你全程用列名写公式,不用依赖硬编码的列号。
修正后的公式
把你的公式改成这样:
#+TBLFM: $<<baz>>=vsum($foo..$bar)::$<<duu>>=vsum($foo..$bar)
语法说明
$<<colname>>是Org Mode专门用来通过列名定位目标列的语法,它会自动映射到列名对应的实际列号。不管后续你添加/删除列导致列位置变化,只要列名不变,公式就会一直生效。- 你之前用的
$duu之所以无效,是因为在赋值左侧,Org Mode会把$后面的内容当作列号或者内置变量(比如@代表行号),不会自动解析为列名;但在赋值右侧(比如vsum($foo..$bar)),$foo这种写法是合法的,因为右侧支持直接用列名引用单元格范围。
完整验证示例
把表格和修正后的公式放在一起:
|---+-----+-----+-----+-----| | ! | foo | bar | baz | duu | | # | -5 | 2 | | | #+TBLFM: $<<baz>>=vsum($foo..$bar)::$<<duu>>=vsum($foo..$bar)
执行C-u C-c C-c或者C-u C-c *重新计算后,baz和duu都会被正确赋值为-3(-5+2的和)。
内容的提问来源于stack exchange,提问作者Lavender
相关产品推荐
相关产品推荐

