2018年7月19日 星期四

⟪倒數 0996⟫ - 【線上學習】再次Awesome的google spreadsheet 函數處理

今天日期:2018/07/20
本日天氣:大太陽
本日心情:心情不錯
《Awesome 0001》:被朋友帶到餐廳,吃到迥異於我家oo和貴族xx等級的嫰牛排。
《Awesome 0002》:坐在日月潭旁的Starbucks,看著暴雨灑落湖面,聞著雨後的清新。。


這情況是這樣的....

以前挑戰1000 Awesome things,簡單來說這是一個人生down 到谷底的傢伙,用1000個小確幸重新提醒自己生命的美好。像是結帳時突然開了一個新的通道然後就可以從最後一個衝到第一個結帳、完美的將免洗筷一分為二、你的里程錶剛好跳到100000的那一刻(這什麼鬼啊)之類的鳥事...


https://tw.voicetube.com/videos/62661 (好吧,這個連結有中文,你可以順便學英文)

過去紀錄在噗浪和FB上,我用倒數的方式進行。但是後來我發現我其實只要挑戰100  Awesome things 就好,因為那個降下來的數字從沒有小於900 過...



想要在日記裡,再次嚐試挑戰,我可能要做一點讓我方便一點的事...

先要說明一下,目前的日誌是用Google 表單去寫,然後它匯整到 Google Spreadsheet 時,我再於後端寫函數匯整,然後貼到 Blogspot ,這樣我就不用去搞一些鳥事,像是每天重覆寫""天氣""、""心情"的文字描述,還有重新排版。



當然,我也想要Google 幫我計數 Awesome 1000,我只要填上它就會幫我計算。但因為我每天設定最多寫三個 Awesome 的事(以目前的鳥狀況,這大概是極限),所以我在試算表中會有三個欄位是記錄這件事的。

我們可以用

COUNTA('表單回應 1'!G:I)

這個函數,去計算G到I 欄有多少筆資料。COUNTA的功能在於計算欄位中有多少個非空儲存格。


但是這只能算總數,我想要的是到今天(這一列)的每一筆資料是第幾個?

由於有個函數INDIRECT可以浮動式的查另一個資料表的資料,用法是這樣的:

INDIRECT("表單回應 1!"&"G"&$A$2)

後方的"G"&$A$2 代表是若我在本SHEET 中的$A$2欄位填入的數字是3,就可以去查在表單回應 1 中的儲存格 G3。


我自己都覺得我很有創意,寫了下面的函式:

COUNTA('表單回應 1'!G2:"I"&$A$2)

然後就失敗了....COUNTA 函數好像不能這樣用,應該說只要有: 的範圍設定都不能這樣用。


最後只好用了很蠢的方式,就是去先算全部的數量,然後若該列特定儲存格有內容,再減1,最後就形成了這個模式。

if(INDIRECT("表單回應 1!"&"G"&$A$2)<>"","《Awesome "&text(COUNTA('表單回應 1'!G2:I)-if(INDIRECT("表單回應 1!"&"I"&$A$2)<>"",1,0)-if(INDIRECT("表單回應 1!"&"H"&$A$2)<>"",1,0),"0000")&"》:"& INDIRECT("表單回應 1!"&"G"&$A$2)&"。"&char(10)&if(INDIRECT("表單回應 1!"&"H"&$A$2)<>"","《Awesome "&text(COUNTA('表單回應 1'!G2:I)-if(INDIRECT("表單回應 1!"&"I"&$A$2)<>"",1,0),"0000")&"》:"& INDIRECT("表單回應 1!"&"H"&$A$2)&"。"&char(10)&if(INDIRECT("表單回應 1!"&"I"&$A$2)<>"","《Awesome "&text(COUNTA('表單回應 1'!G2:I),"0000")&"》:"& INDIRECT("表單回應 1!"&"I"&$A$2)&"。"&char(10),""),""),"")



難怪我以前程式出 BUG 時都沒人想要幫我檢查。 -.-a

沒有留言: