我有一个包含3列的数据表(为了清晰起见,简化了外观,但是排列和数据格式被保留,第一列A
是Date
使用我的区域设置格式化,但它是NOT text):根据几个条件从数据数组中返回值
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
名)日期和相应的值,它是对于相同的模块值中最大,但对于上周开始应该返回。 - 如果对于最后一周此模块中没有记录 - 日期应该是空的,并“没有变化”字符串应该是值(为
xxxxx
从上面的例子,涉及到初始阵列和假设今天是2月9日)。
至于#2,我结束了以下内容:
- 对于
Date
:=IF(SUMPRODUCT(--(A:A>TODAY()-7),--(A:A="xxxxx"))=0,"")
- 对于
Value
:=IF(F5="","No change")
(左我这里检查对应的日期)
至于#1 - 我卡住了,那就是我需要指导或建议的地方。我尝试了与MATCH
,VLOOKUP
等类似的东西,但是甚至没有接近成功:我要么有错误,要么没有相关的结果。
如果这很重要 - 日期总是排序,最近在列表的末尾,即新的记录被添加到底部。同一个模块可能在同一天有几个记录。如果样本或解释不清楚 - 请回复评论,我会添加更多详细信息。谢谢!
谢谢,我结束了'= IF(F2 =“”,“没有变化”,MAX( IF(A:A> TODAY() - 7,IF(B:B = E2,C:C))))'为值。但是Date呢?我无法弄清楚如何扩展我的解决方案,以包括过去一周的日期...... – 2013-02-09 14:04:27
您希望MAX值出现的日期?我编辑了我的答案.... – 2013-02-09 14:37:51
对不起,但日期的公式返回循环引用,如果我将它与我的公式一起使用它的价值:我使用日期字段检查是否为“”或“没有更改”的情况下。日期和值分别位于F和G. – 2013-02-09 16:36:14