Google SpreadSheetにGoogle Apps Scriptを使って5分おきとか1分おきに記録しているデータのうち、一番新しいデータを取得するための関数について説明します。
Google SpreadSheetにデータがたくさんたまってくるとグラフが見づらくなってしまったので、Google Data Portalへ移植しました。Google Data Portalのスコアカードに最新値を出力したかったのですが、スコアカードには平均とか合計とかしか表示できなかったので、1個のデータしか入っていないようにして合計値=最新値にしました。
やり方1
- 別のシートを作成し、indirect関数でセルを指定する
- データが保存されているシートは"test1"というシート名です
-
counta(test1!A:A)
にて↑の絵でいうところの、19289が出力されます - ↓の関数だと、
B19289
セルの値が参照されるので、"65" という値が入力されます
=indirect("test1!B"&counta(test1!A:A))
やり方2
- 力技です
- A列の行数を求めています
counta(test1!A:A))
(↑の絵でいうところの140093) -
B140093
が空っぽならB140092
の値、さらに空っぽだったらB140091
の値という書き方をしています
- A列の行数を求めています
=if(indirect("test1!B"&counta(test1!A:A))="",if(indirect("test1!B"&counta(test1!A:A)-1)="",if(indirect("test1!B"&counta(test1!A:A)-2)="",if(indirect("test1!B"&counta(test1!A:A)-3)="","no data",indirect("test1!B"&counta(test1!A:A)-3)),indirect("test1!B"&counta(test1!A:A)-2)),indirect("test1!B"&counta(test1!A:A)-1)),indirect("test1!B"&counta(test1!A:A)))