记录初生宝宝拉粑粑💩有什么意义?没什么意义,just for fun👻
我们的目标是画一张这样的图:
下面我们开始吧。首先,你得有数据,弄到一张表格上:
序号 | 粑粑💩发现时间 |
---|---|
0 | 2017-10-28 23:29 |
1 | 2017-10-29 8:30 |
2 | 2017-10-29 12:00 |
3 | 2017-10-29 18:00 |
4 | 2017-10-30 1:10 |
5 | 2017-10-30 18:00 |
... | ... |
然后是做一些数据规整。
- 添加一列,用
DATE(YEAR(...), MONTH(...), DAY(...))
提取日期; - 添加一列,提取距离出生日期的天数;
- 添加一列,用
HOUR(...)
提取拉粑粑💩的小时数;
现在,表格变成了这样:
序号 | 粑粑💩发现时间 | 粑粑💩间隔 | date | 出生🐣 | 查便时间 |
---|---|---|---|---|---|
0 | 2017-10-28 23:29 | 10/28/17 | 0 | 23 | |
1 | 2017-10-29 8:30 | 9h 1m | 10/29/17 | 1 | 8 |
2 | 2017-10-29 12:00 | 3h 30m | 10/29/17 | 1 | 12 |
3 | 2017-10-29 18:00 | 6h | 10/29/17 | 1 | 18 |
4 | 2017-10-30 1:10 | 7h 10m | 10/30/17 | 2 | 1 |
5 | 2017-10-30 18:00 | 16h 50m | 10/30/17 | 2 | 18 |
... | ... | ... | ... | ... | ... |
然后,新建一张表格,画出「24×天数」的长条。现在的任务是让 Numbers 自动读取前一张表格的数据,然后讲相应方格标绿。
我们注意到:可以将前一张表格的最后两列作为坐标。我本来想分别读取X坐标
& Y坐标
,但弄了半天,放弃了。最后决定添加一个辅助列hash
,以编码坐标:
= X × 48 + Y
这样,就可以用MATCH(...)
定位坐标:
IF(
IFERROR(
MATCH(C$2×48+$B3,$hash,0),
FALSE),
" ",
" ")
这句函数的意思是:我们将方格的坐标编码,看看有没有这个数据点;如果查到了,返回「1 个空格」,否则返回「3 个空格」。之所以选用空格,是为了不显示出来。
现在就可以用「Conditional Highlighting」把「1 个空格」的方格标绿。
好了,现在只要录入数据,图标就会自动将相应方格标绿了👻
如果我们希望在标绿的同时能够根据数据大小标出深浅来,还可以进一步改进。
首先,将函数改为:
IF(
COUNTIF($hash,C$2×48+$B3)=0,
"",
IF(
COUNTIF($hash,C$2×48+$B3)=1,
" ",
IF(
COUNTIF($hash,C$2×48+$B3)=2,
" ",
" ")))
不过就是一个switch
语句,只是 Numbers 没提供,只好用这种丑陋的方式实现。
然后,依次将「1 个空格」「2 个空格」「3 个空格」标示成不同深浅的绿色就好了👻