我有一个包含 3 列的数据表(为了清晰起见,外观被简化,但保留了排列和数据格式,第一列A
是Date
用我的区域设置格式化的,但它不是文本):
Date Module Value
27.01.2013 xxxxx 90
27.01.2013 ttttt 100
29.01.2013 aaaaa 110
31.01.2013 aaaaa 50
31.01.2013 mmmmm 200
31.01.2013 ttttt 80
03.02.2013 ttttt 140
04.02.2013 aaaaa 120
07.02.2013 mmmmm 150
07.02.2013 ttttt 90
07.02.2013 aaaaa 190
08.02.2013 aaaaa 210
08.02.2013 aaaaa 90
08.02.2013 aaaaa 170
08.02.2013 ttttt 90
08.02.2013 ttttt 110
08.02.2013 mmmmm 130
09.02.2013 mmmmm 90
09.02.2013 aaaaa 200
该列表可能很长并且会定期更新。我需要实现的是:在同一张纸上,我将以下计算单元格放置在 E 列的起始位置(即数据和计算区域之间有一个空白列 D):
MAX last week Date Value
aaaaa 09.02.2013 200
mmmmm 07.02.2013 150
ttttt 03.02.2013 140
xxxxx <empty> No change
基本上我需要从以下数据数组中找出A:C
:
- 对于中的值列表
E
(对应于中的模块名称B
)日期和对应的值,该值在同一模块的值中最大,但应返回从今天开始的最后一周。 - 如果在上周没有此模块的记录 - Date 应该是空的,并且Value 应该是“No change”字符串(与
xxxxx
上面的示例一样,与初始数组相关并假设今天是 2 月 9 日)。
至于#2,我最终得到以下结果:
- 对于
Date
:=IF(SUMPRODUCT(--(A:A>TODAY()-7),--(A:A="xxxxx"))=0,"")
- 对于
Value
:(=IF(F5="","No change")
我在这里检查左侧的相应日期)
至于#1 - 我被困住了,这就是我需要指导或建议的地方。我尝试了不同的东西MATCH
,VLOOKUP
和类似的东西,但甚至没有接近成功:我要么有错误,要么没有相关的结果。
如果这很重要 - 日期总是被排序,最近的日期在列表的末尾,即新记录被添加到底部。对于同一模块,同一天可能有多个记录。如果示例或解释不清楚 - 请在评论中回复,我会添加更多详细信息。谢谢!