1

Googleスプレッドシートを使用する。これが私のテーブルのニーズを複製する試みです:

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

私はすでにそれで2つのことをすることができます、しかしそれはそれが無視できるようになる最適からは程遠いです。

まず、使用SUMIF

food    $25    <-    SUMIF(B:B;"food";C:C)
other   $35
home    $42

次に、それを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

これが大きくなりすぎる可能性がある場所を確認しますか?上手...

これから2つのグラフィックチャートを作成したいと思います。もちろん、メインのものは2番目です:

  1. 最初の例のパイ。を使用する際SUMIFには、明示的にそこに書き込む必要が"food"あります(または参照など)。見つかったすべてのタグを自動的に埋めることができますか?

    私はこれなしで生きることができますが、それは2番目の主要な質問に対する答えかもしれません。

  2. arrayformulaからのプロットまたはタイムライン。時間に沿ってプロット内の各タグをトレースする必要があります。

できることさえありますか?そうでない場合、何か提案はありますか?必要に応じて(そしてそれだけの価値がある)スクリプトを書き始めたいと思っています。またはグーグルから離れて移動します。または、スプレッドシートからすべて一緒に(最後に)。Pythonかも?ルビー?

または、面倒な場合はそのままにしておきます。

4

2 に答える 2

1

一般に、スプレッドシートはデータベースではありません。これは、データベースを必要としているあなたがすぐに近づいているタスクです。ただし、運が良ければ(とにかく、それをどのように見るかによって異なりますが)、Googleスプレッドシートには実際にデータベースのようなアクセスAPIがいくつかあるので、おそらくあなたが望むことを行うことができます。

http://googleajaxsearchapi.blogspot.com/2008/03/introducing-latest-ajax-api-google.html

https://developers.google.com/chart/interactive/docs/querylanguage

http://blog.ouseful.info/2009/05/18/using-google-spreadsheets-as-a-databace-with-the-google-visualisation-api-query-language/

于 2012-09-02T14:25:45.547 に答える
1

QUERYを使用すると、次を使用して最初のテーブル(ヘッダー付き)を生成できます。

=QUERY(B:C;"select B, sum(C) where B != '' group by B label B 'Category', sum(C) 'Total'";0)

これは、円グラフとしてかなり簡単にプロットできるはずです。増大するデータに対応するために、現在のテーブルよりもはるかに長いチャートの範囲を選択できます。円グラフは、空白行を無視するのに便利です。

2番目のテーブルは、次を使用して生成できます。

=QUERY(A:C;"select A, sum(C) where A is not null group by A pivot B";0)

また、さまざまな種類のグラフを試して、目的の視覚化を実現できます。


編集

コメントに従って、空白ではなくゼロを入力するテーブルを提供するため。テーブルの左上(空白)のセルが、であると仮定するとI1、次のようになりI2ます。

=SORT(UNIQUE(A:A))

とでJ1

=TRANSPOSE(SORT(UNIQUE(B:B)))

そしてJ2

=ArrayFormula(IF(I2:I*LEN(J1:1);MMULT(I2:I=TRANSPOSE(A:A);(J1:1=B:B)*C:C);IFERROR(1/0)))

CONTINUEこれにより、スプレッドシートの右下と右端に関数が入力され、パス内のすべてが上書きされることに注意してください。したがって、このテーブル専用のシートを用意するのがおそらく最善です。

于 2012-09-04T00:33:57.640 に答える