Vlookup并获取最小值(date)
顶部表格是input,底部表格是要求输出的预览。
对于每个ID我需要find最早的date时间。 我还需要其他栏目的其他信息(请参阅下图)。
我目前的解决scheme是:在单元格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
还有一个选项没有任何中间计算:
- select从
E2
开始的整个范围以及ID所在的最后一行 – 对于给定样本的第14行,select范围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 +通常回车 – 这将定义一个Multicell ARRAY公式,并且会在它周围产生一个花括号{}
,但是不要手动input它们。 -
F2
(ID2):=IF(E2="","",SUMPRODUCT(--(E2=$A$2:$A$14),--(G2=$C$2:$C$14),$B$2:$B$14))
– 正常的公式。 -
G2
(Min Date):=IF(E2="","",MIN(IF(E2=$A$2:$A$14,$C$2:$C$14,2^100)))
并按下CTRL + SHIFT + ENTER而不是通常的ENTER – 这将定义一个ARRAY公式,并将导致在它周围的括号(但不要手动input!)。 -
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))))))
– 正常公式。
备注:
- 为了使解决scheme更加紧凑和易于阅读,为
ID
列定义命名范围,然后使用OFFSET
引用其他数据列。 - ID2值可能不是唯一的 – 因为它们在ID
1...3
的样本上。 -
Min Date
结果集应格式化为与源Date
行相同的方式。 - 解决scheme的关键公式 – 是多单元怪物,它返回唯一的ID,没有空行 – 如OP请求)
示例文件: https : //www.dropbox.com/s/d2098updfh8djnf/MinDateIDs.xlsx
这是一个相当大的挑战……我想我已经find了一个可行的方法。 为了清楚起见,我使用了一些帮助栏。 此外,我没有使用任何命名的范围,但坚持列行的迹象。 你可能想改变它。
它看起来像这样:
并放大到相关的列:
列F
包含一个数组公式来过滤掉重复项。 这里解释一个方法。 我在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 – Shift – Enter确认为数组公式。 将其拖动或复制到列F
。 然后列G
和H
包含重复ID
值的开始和结束索引。 这个答案帮助,请upvote它:-)。 使用的两个公式是:
=MATCH(2,1/FREQUENCY($F2,$A$2:$A$14))
在G2
,和
=FREQUENCY($A$2:$A$14,$F2)
在H2
。 再次拖动它们以填满整个列。 接下来,第一栏只是为了澄清 – 为了理智检查。 它包含每个子数组所需的最短date。 J
列将该公式replace为MATCH
来查找所需date的实际索引。
=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
和N
索引到原来的一组数据中
=INDEX(B$2:B$14,$J2)
在L2
,你可以水平拖动,然后垂直拖动。
当你完成后,你可以隐藏帮手列,或者把所有东西都放进大公式中。 祝你好运…可能有一个更简单的方法来实现这一点,但我没有find它。
如果你想要G中列D的值,那么假设列C的值是唯一的,你可以使用一个VLOOKUP,即在G2中复制下来
=VLOOKUP(F2,C$2:D$14,2,0)
根据你的照片,他们都在同一张表。 只需按ID
sorting,然后按Date
(升序)sorting。 当您沿着ID
列向下工作时,每当ID
改变时,您就知道您已经find了具有该特定ID
的最小Date
的行。 创build一个额外的列来表示ID
更改发生的位置,并筛选这些行(如果您愿意,请隐藏该列)。
而…瞧。
知道这个链接是旧的,但有一个更短,更简单的方法! 如何使用数据透视表使用Minimum as字段设置,然后执行a =GETPIVOTDATA()
来获取信息! 看起来这些公式更简单!