Emacs標準のスプレッドシートses-modeの使い方メモ
ファイル
拡張子を .ses
にすると自動で ses-mode になる。
また、そうじゃないファイルでも一回 ses-mode で保存すれば Local Variables
が付けられた状態で保存されるので
次からは自動で ses-mode になる。
ファイル自体は先頭に表示内容が入っていて、その後ろに正式なデータといろいろメタデータが S 式で入っているという感じに見える。 ses-mode 自体のコードは読んでないけど。
セルの追加・削除
適当な表
/ | C- |
M- |
---|---|---|
o |
行を挿入 | 列を挿入 |
k |
行を削除 | 列を削除 |
ただ、一番右に追加していくみたいな場合は C-i
で移動していけば追加されていくし、
下に追加していくみたいな場合には C-j
でいけるのであんまり表のキーを使うことはなさそう。
コピペ
普通に M-w
とか C-y
で。
データの入力
ここが Emacs らしくて面白いと思うのだが、数値や文字列の他に S 式も入れられる。 S 式を入れる場合、quote しなければその式を評価した結果が入るし、quote してから入れると自由なデータが入れられる。 セルに S 式を入れまくることで暗黒の神 Excel を簡単に (?) 作ることができる。
注意点として文字列を入れる場合には ""
で囲まなければエラーになる。
集計とか
S 式が書けるのを使う。
A1
, A2
みたいな変数にセルの値が入っているが、これは集計には少々不便なので範囲指定のためのマクロを使う。
ses-range
というマクロに範囲を渡すことで、入っている値をリストとして取り出せる。
これと apply
を使って、
(apply '+ (ses-range A1 D1))
みたいにすると A1
, B1
, C1
, D1
の和が求まる (ちなみにセルを挿入したときはこういった参照もよしなにやってくれる)。
このマクロには微調整用のフラグを渡せるが、これは docstring を見たほうが早い。
一般的な集計の関数にはラッパーぽいものが用意されていて、apply
を使わずに完結に書ける。
(ses+ A1 D1)
(ses-average A1 D1)
また、使うセルをプログラマティックに決めたい場合は ses-cell-value
で値を取れる。
以上、メモ