emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Table calculation


From: Michael Brand
Subject: Re: [O] Table calculation
Date: Sat, 20 Feb 2016 22:13:47 +0100

Hi Brett

On Sat, Feb 20, 2016 at 8:41 PM, Brett Presnell <address@hidden> wrote:

> In the following table, the last row gives the number of empty cells
> following the last nonempty cell in each column (except the first column
> of course).  I would like to create a TBLFM formula that does this
> calculation for me automatically.  Some time ago I tried using
> org-lookup-last and org-lookup-all for this, but I never got it to work.
> Any ideas/solutions?
>
> |   Date | AA | BB | CC | DD | EE | FF | GG | HH | II | JJ | KK | LL | MM |
> |--------+----+----+----+----+----+----+----+----+----+----+----+----+----|
> |      / | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> |
> | 201005 |    |    |    |    |  1 |    |    |  1 |    |    |    |  1 |    |
> | 201008 |    |    |    |  1 |    |    |    |    |    |    |    |    |    |
> | 201012 |    |    |    |    |    |    |    |    |    |    |    |    |    |
> | 201105 |    |    |    |    |    |  1 |    |    |    |    |    |    |    |
> | 201108 |    |    |    |    |    |    |  1 |    |    |    |    |    |    |
> | 201112 |    |    |    |    |    |    |    |    |    |  1 |    |    |    |
> | 201205 |    |    |    |    |    |    |    |    |    |    |    |    |    |
> | 201208 |    |    |    |    |    |    |    |    |    |    |    |    |    |
> | 201212 |    |    |    |    |    |    |    |    |  1 |    |    |    |    |
> | 201305 |    |    |  1 |    |    |    |    |  2 |    |    |  1 |    |    |
> | 201308 |  1 |    |    |    |    |    |    |    |    |    |    |    |    |
> | 201312 |    |    |    |    |    |    |    |    |    |    |    |    |  1 |
> | 201405 |    |    |    |    |    |    |    |  1 |    |    |    |  1 |    |
> | 201408 |    |  1 |    |    |    |    |    |    |    |    |    |    |    |
> | 201412 |    |    |    |    |  1 |    |    |    |    |    |    |    |    |
> | 201505 |    |    |    |  1 |    |    |    |    |    |    |    |    |    |
> | 201508 |    |    |    |    |    |    |    |    |  1 |    |    |    |    |
> | 201512 |    |    |    |    |    |    |  1 |    |    |    |    |    |    |
> | 201605 |    |    |    |    |    |    |    |    |    |    |    |    |    |
> |--------+----+----+----+----+----+----+----+----+----+----+----+----+----|
> |        |  8 |  5 |  9 |  3 |  4 | 15 |  1 |  6 |  2 | 13 |  9 |  6 |  7 |

Two of the possible solutions:

|   Date | AA | BB | CC | DD | EE | FF | GG | HH | II | JJ | KK | LL | MM |
|      / | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> | <> |
|--------+----+----+----+----+----+----+----+----+----+----+----+----+----|
| 201005 |    |    |    |    |  1 |    |    |  1 |    |    |    |  1 |    |
| 201008 |    |    |    |  1 |    |    |    |    |    |    |    |    |    |
| 201012 |    |    |    |    |    |    |    |    |    |    |    |    |    |
| 201105 |    |    |    |    |    |  1 |    |    |    |    |    |    |    |
| 201108 |    |    |    |    |    |    |  1 |    |    |    |    |    |    |
| 201112 |    |    |    |    |    |    |    |    |    |  1 |    |    |    |
| 201205 |    |    |    |    |    |    |    |    |    |    |    |    |    |
| 201208 |    |    |    |    |    |    |    |    |    |    |    |    |    |
| 201212 |    |    |    |    |    |    |    |    |  1 |    |    |    |    |
| 201305 |    |    |  1 |    |    |    |    |  2 |    |    |  1 |    |    |
| 201308 |  1 |    |    |    |    |    |    |    |    |    |    |    |    |
| 201312 |    |    |    |    |    |    |    |    |    |    |    |    |  1 |
| 201405 |    |    |    |    |    |    |    |  1 |    |    |    |  1 |    |
| 201408 |    |  1 |    |    |    |    |    |    |    |    |    |    |    |
| 201412 |    |    |    |    |  1 |    |    |    |    |    |    |    |    |
| 201505 |    |    |    |  1 |    |    |    |    |    |    |    |    |    |
| 201508 |    |    |    |    |    |    |    |    |  1 |    |    |    |    |
| 201512 |    |    |    |    |    |    |  1 |    |    |    |    |    |    |
| 201605 |    |    |    |    |    |    |    |    |    |    |    |    |    |
|--------+----+----+----+----+----+----+----+----+----+----+----+----+----|
|        |  8 |  5 |  9 |  3 |  4 | 15 |  1 |  6 |  2 | 13 |  9 |  6 |  7 |
#+TBLFM: @>$<<..@>$> = find(rev(@address@hidden), 1) - 1; E

Note that I moved the header separator line.

When the last non-empty cell is not limited to be always 1 it gets a
bit more complicated:

#+TBLFM: @>$<<..@>$> = '(position-if-not (lambda (x) (equal x ""))
(reverse '(@address@hidden))); E

Michael



reply via email to

[Prev in Thread] Current Thread [Next in Thread]