如何从每周跟踪器中提取日期?

如何从每周跟踪器中提取日期?

假设一周中每天的每个小时我都会记录我吃的食物或进行的体力活动。

在周末,我有一张表格,其中行表示小时(上午 12 点至上午 12 点 59 分至晚上 11 点至晚上 11 点 59 分),列表示天数(周日至周六),值表示我吃过的食物。

如何获取我吃过某些食物的日期列表?例如,除了每月第三周的周一外,我每周一和周四上午 10 点至 11 点吃香蕉。我在该周的周二吃香蕉。

我如何获取日期?

我尝试过使用 countif、index、match,但我认为我缺少一个非常简单的解决方案,涉及数据透视表或寻找正确的模板。如果情况变得最糟,我愿意(重新)学习 VBA/宏,但我非常怀疑没有模板或数据透视表解决方案。


我的食物消费追踪器的部分内容

在此处输入图片描述


我希望最终得到类似如下的结果(表 3):


在此处输入图片描述

答案1

根据数据格式,您需要在工作表中搜索每个香蕉实例,然后使用行号和列号来引用食用香蕉的日期和时间,这可以在 VBA 中完成。当前格式的一个问题是,您想搜索香蕉,但有时它在单元格中与鸡蛋混合,有时是胡萝卜,有时是单独的。

但是,您的数据似乎可以以一种对计算机更友好但对用户不太友好的方式排列。您确实有一系列时间戳,每个时间戳后面都有一个食物,这可以像下面一样放在一个列系列中,并带有用于计算的附加列

Date    Food    Hour    Day Week
30/01/2017 10:00    sandwich    10  2   5
30/01/2017 10:00    apple   10  2   5
30/01/2017 10:00    pancake 10  2   5
30/01/2017 16:00    eggs    16  2   5
30/01/2017 16:00    hotdog  16  2   5
31/01/2017 16:00    carrot  16  3   5
31/01/2017 16:00    eggs    16  3   5
31/01/2017 16:00    chips   16  3   5
02/02/2017 16:00    eggs    16  5   5
02/02/2017 17:00    banana  17  5   5
03/02/2017 18:00    orange  18  6   5
04/02/2017 12:00    ham 12  7   5

获得此类数据后,你可以在页面上列出你的食物类型

sandwich    apple   pancake eggs    hotdog  carrot  banana  ham
   1       2         3       4      5      6        10      12
#N/A      #N/A     #N/A      7     #N/A    #N/A    #N/A    #N/A
#N/A      #N/A     #N/A      9     #N/A    #N/A    #N/A    #N/A
#N/A      #N/A     #N/A      #N/A   #N/A    #N/A    #N/A    #N/A

查找第一个出现的位置很容易 - 只需使用 match(),但是下次查找时,您需要从列表下方开始,因此请使用 offset() 来更改查找的开始位置。

=MATCH(L$21,$B$23:$B$1000,0)
=MATCH(L$21,OFFSET($B$23:$B$100,L22,0),0)+L22
=MATCH(L$21,OFFSET($B$23:$B$100,L23,0),0)+L23
etc

然后获取每种食物的日期列表,使用 index()

=INDEX($A$23:$A$34,L22)

sandwich            apple               pancake             eggs
30/01/2017 10:00    30/01/2017 10:00    30/01/2017 10:00    30/01/2017 16:00
#N/A                #N/A                 #N/A               31/01/2017 16:00
#N/A                #N/A                 #N/A               02/02/2017 16:00

相关内容