Excel_至今連續天數/最長連續天數

【至今連續天數】

【問題】我有一經常更新之紀錄表,A欄為日期,B欄為紀錄之文字內容。請問要怎麼用公式做出「到昨天為止,已連續進行紀錄的天數」

例如:今天是3/29,紀錄表中有以下日期 (實際上是數字datevalue)
3/21
3/21
3/21
3/23
3/25
3/26
3/27
3/27
3/28

公式產生的結果應為4

【參考作法】(改寫自soyoso於ptt office板提供之範例)

=TODAY()-INDEX(日記!B:B,LOOKUP(1,0/((日記!B2:B65535-日記!B1:B65534)>1),ROW(2:65535)))

註:lookup的資料需為遞增排序。


 

【最長連續天數】

【問題】要怎麼用公式做出「到昨天為止,所有連續紀錄之中的最長天數」

例如:紀錄表中有以下日期 (實際上是數字datevalue)
3/20
3/21
3/21
3/21
3/22
3/23
3/25
3/26
3/27
3/27
3/29

公式產生的結果應為4 (這段時間當中3/24和3/28紀錄中斷了,所以日期分成三段 3/20~3/23 、 3/25~3/27 、 3/29,要用公式計算日期最長的那一段有幾天)

【參考作法】

1.亨利羊拙作:

{=MAX(IFERROR(LARGE(IFERROR(IF((日記!B2:B65535-日記!B1:B65534)>1,日記!B1:B65534),””),ROW(1:10))-LARGE(IFERROR(IF((日記!B2:B65535-日記!B1:B65534)>1,日記!B2:B65535),””),ROW(2:10)),0))}

2.soyoso神作:

B2 {=IFERROR(SMALL(IF(COUNTIF(B$1:B1,A$2:A$12)=0,A$2:A$12),1),””)}

C2{=MAX(FREQUENCY(IF(B3:B9-B2:B8<2,ROW(2:8)),IF(B3:B9-B2:B8>1,ROW(2:8))))+1}

soyoso示範

3.soyoso神作精鍊版

B1{=MATCH(0,COUNTIF(A:A,A1+ROW($1:$9)-1),)-1}

C1=MAX(B:B)

soyoso神作精鍊版

 

【心得】

見山是山,見山不是山,見山又是山。

學習Excel的初期,寫著單純簡短的公式,享受著一眼看穿公式內涵的喜悅。

學了一陣子Excel之後,差不多已遍覽函數,一看到公式欄位,手下的函數組合就傾瀉而出。巢狀結構蓋個七層、陣列公式一定要用,不塞個數十行絕不罷休。

然而看看已經出神入化的Excel高手,同樣效果的公式相較起來,就硬是簡潔漂亮。用著大家都通曉的函數,做出大家意想不到的功能。見山又是山,簡單的公式,但旁人卻無法一眼看穿其內涵。

彷彿不管什麼學門,走到極處,都進入了哲學領域。