Using Google Spreadsheets. Here’s an attempt to replicate my table needs:
2012-08-30 food $15 expensive dinner
2012-08-30 food $10 pizza!
2012-08-30 other $30 that damn painting
2012-09-02 home $40 can't remember
2012-09-02 other $5 toilet paper
2012-09-02 home $2 buying new flowers
I can already do 2 things with it, but it is so far from optimal it becomes negligible.
First, Using SUMIF:
food $25 <- SUMIF(B:B;"food";C:C)
other $35
home $42
Then, combining it with ARRAYFORMULA:
food home other
2012-08-30 $25 $0 $30 <- ARRAYFORMULA(SUMIF(A:A&B:B;2012-08-30&"food";C:C))
2012-09-02 $0 $42 $5
See where this can become too big? Well…
I want to do 2 graphic charts out of this. Of course, the main one is the second:
-
A pie, from the first example. On using the
SUMIF, I need to explicitly, write"food"there (or reference, whatever). Could that be done automagically filling every tag found?While I can live without this, it may be the answer to the second, main question;
-
A plot or timeline, from the arrayformula. It should trace each tag in a plot along the time.
Is it even possible to be done? If not, any suggestions? I’m keen to start scripting if needed (and worth it). Or move away from google. Or from spreadsheets all together (lastly). Python maybe? Ruby?
Or maybe I’ll just leave it as it is, if it’s tooooo much trouble.
Using QUERY, you can generate the first table (with headers) using:
and this should be fairly easily plotted as a pie chart. You can select a range for the chart that is much longer than the current table to accommodate growing data, and the pie chart will conveniently ignore blank rows.
The second table can be generated using:
and you can experiment with various chart types to achieve the desired visualisation.
edit
To provide a table that populates with zeros instead of blanks as per your comment; assuming the upper left (blank) cell of the table is
I1, then inI2:and in
J1:and then in
J2:Note this will populate
CONTINUEfunctions to the far bottom and far right of the spreadsheet, over-writing everything in their path. So probably best to have a sheet dedicated to this table.