TOP表是输入,底部表是预览所需输出。Vlookup并获取最小值(日期)
对于每个ID我需要找到最早的日期时间。我还需要其他栏目的其他信息(请参阅下图)。
我目前的解决方案是: 在E2单元格=A2
E3单元格下跌拖累=IF(E2<>A3,IF(E1=A3,"",A3),"")
在小区F2拖累=IF(E2<>"",MIN(IF($A$2:$A$14=E2,$C$2:$C$14)),"")
按Ctrl + Shift + Enter键
TOP表是输入,底部表是预览所需输出。Vlookup并获取最小值(日期)
对于每个ID我需要找到最早的日期时间。我还需要其他栏目的其他信息(请参阅下图)。
我目前的解决方案是: 在E2单元格=A2
E3单元格下跌拖累=IF(E2<>A3,IF(E1=A3,"",A3),"")
在小区F2拖累=IF(E2<>"",MIN(IF($A$2:$A$14=E2,$C$2:$C$14)),"")
按Ctrl + Shift + Enter键
还有一个选择,没有任何中间计算:
E2
和最后一排,其中的ID所在 - 为样本给它的第14行,因此选择范围E2:E14
:=IFERROR(INDEX($A$2:$A$14,SMALL(IF(MATCH($A$2:$A$14,$A$2:$A$14,0)=ROW(INDIRECT("1:"&ROWS($A$2:$A$14))),MATCH($A$2:$A$14,$A$2:$A$14,0),""),ROW(INDIRECT("1:"&ROWS($A$2:$A$14))))),"")
然后按CTRL + SHIFT + ENTER 的代替通常的ENTER - 这将定义一个多节ARRAY公式并将导致围绕它的曲线{}
(但请不要手动输入它们!)。F2
(ID2):=IF(E2="","",SUMPRODUCT(--(E2=$A$2:$A$14),--(G2=$C$2:$C$14),$B$2:$B$14))
- 正常配方。G2
(敏时间):=IF(E2="","",MIN(IF(E2=$A$2:$A$14,$C$2:$C$14,2^100)))
并按CTRL + SHIFT + ENTER,而不是通常的ENTER - 这将定义一个ARRAY公式,并会导致它周围的花{}
括号(但千万不是手动输入!)。H2
(InCh):=IF(E2="","",INDEX($D$2:$D$14,SUMPRODUCT(--(E2=$A$2:$A$14),--(F2=$B$2:$B$14),--(G2=$C$2:$C$14),ROW(INDIRECT("1:"&ROWS($D$2:$D$14))))))
- 正常配方。备注:
ID
柱,然后引用使用OFFSET
其它数据列。1...3
的样本上。Min Date
的设置应该与源Date
行的格式相同。示例文件:https://www.dropbox.com/s/d2098updfh8djnf/MinDateIDs.xlsx
根据您的图片,他们'都在同一张纸上。只需按ID
排序,然后按Date
(升序)排序。当您沿着ID
列纵向行进时,每当ID
发生变化时,您都会发现该行的最小值为Date
,该值为该特定值的ID
。创建一个额外的列来表示发生更改的位置,并筛选这些行(如果您愿意,请隐藏该列)。
And ... voila。
如果你想从列d G中值,则假设C列值是唯一的,你可以只使用VLOOKUP,即G2抄下来
=VLOOKUP(F2,C$2:D$14,2,0)
这是相当大的挑战..我认为我找到了一种可行的方法。为了清楚起见,我使用了一些帮助栏。另外,我没有使用任何命名的范围,但坚持列行指示。你可能想改变它。
它看起来像这样:
和到相关列缩放:
柱F
包含数组式过滤掉重复。一种方法解释为here。我在F2
使用的公式是
=INDEX($A$2:$A$14, MATCH(MIN(IF(COUNTIF($F$1:F1,$A$2:$A$14)=0, 1, MAX((COUNTIF($A$2:$A$14, "<"&$A$2:$A$14)+1)*2))*(COUNTIF($A$2:$A$14, "<"&$A$2:$A$14)+1)), COUNTIF($A$2:$A$14, "<"&$A$2:$A$14)+1, 0))
使用Ctrl键 - 移 - 输入确认作为阵列式。将其拖动或复制到列F
。然后列G
和H
包含重复ID
值的起始和结束索引。 This answer帮助,请upvote它:-)。用这两个公式是:
=MATCH(2,1/FREQUENCY($F2,$A$2:$A$14))
在G2
和
=FREQUENCY($A$2:$A$14,$F2)
在
H2
。再次拖动它们以填满整个列。接下来,第I
列仅用于澄清 - 并用于完整性检查。它包含每个子阵列所需的最短日期。列J
将该公式替换为MATCH
以查找所需日期的实际索引。
=MIN(OFFSET($C$2:$C$14,$G2-1,0,1+$H2-$G2,1))
在
I2
和
=$G2-1+MATCH(2,1/FREQUENCY(MIN(OFFSET($C$2:$C$14,$G2-1,0,1+$H2-$G2,1)), OFFSET($C$2:$C$14,$G2-1,0,1+$H2-$G2,1))
在
J2
。最后,列L
,M
并通过
=INDEX(B$2:B$14,$J2)
在
L2
,您可以水平然后垂直拖动N
指数为原始数据集。
完成后,您可以隐藏辅助列或将所有内容都折叠成大公式。祝你好运...可能有一个更简单的方法来实现这一点,但我没有找到它。
知道这个链接是旧的,但有一个更更短,更简单的方法! 如何使用数据透视表使用Minimum as字段设置,然后执行=GETPIVOTDATA()
以获取信息! 这些公式似乎更简单!
'我还需要来自其他栏目的其他信息 - 请更具体。并根据屏幕..在表单上有许多单独的表格? – 2013-02-28 20:03:42
对不起,我的意思是。对于每个ID(A)我需要在列(C)中找到最早的日期我还需要B&D的其他信息 – Mowgli 2013-02-28 20:05:36
再一次:在您的示例中,我们有两个ID为9的表。因此,对于每个表表是必需的? – 2013-02-28 20:12:06