【问题标题】:Vlookup and get the min value (date)Vlookup并获取最小值(日期)
【发布时间】:2013-02-28 19:58:08
【问题描述】:

顶部表格是输入,底部表格是所需输出的预览。

对于每个 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

【问题讨论】:

  • I also need other information from other columns - 请更具体。并且根据屏幕..工作表上有很多单独的表格吗?
  • 对不起,我是说。对于每个 ID (A),我需要在 (C) 列中找到最早的日期,我还需要 B & D 提供的其他信息
  • 再一次:在您的示例中,我们有 2 个 ID 为 9 的表。所以每个表都需要来自所有表的最少数据?
  • ID 的值是否总是以 1 的步长增加,还是您的示例中就是这种情况?
  • @Mowgli 请看答案 - 我想我找到了唯一性无关紧要的解决方案。

标签: excel excel-formula excel-2010


【解决方案1】:

无需任何中间计算的另一种选择:

  1. 选择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 - 这将定义一个 Multicell ARRAY 公式并且会在其周围产生卷曲的{} 括号(但请不要手动输入它们!)。
  2. F2 (ID2): =IF(E2="","",SUMPRODUCT(--(E2=$A$2:$A$14),--(G2=$C$2:$C$14),$B$2:$B$14)) - 普通公式。
  3. G2(最小日期):=IF(E2="","",MIN(IF(E2=$A$2:$A$14,$C$2:$C$14,2^100))) 并按 CTRL+SHIFT+ENTER 而不是通常的 ENTER - 这将定义一个 ARRAY 公式,并在其周围产生{} 大括号(但请不要手动输入它们!)。
  4. 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 引用其他数据列。
  • ID2 值可能不是唯一的 - 因为它们在 ID 1...3 的示例中。
  • Min Date 的结果集的格式应与源 Date 行的格式相同。
  • 解决方案的关键公式 - 是多单元怪物,它返回没有空行的唯一 ID - 根据 OP 的要求)

示例文件:https://www.dropbox.com/s/d2098updfh8djnf/MinDateIDs.xlsx

【讨论】:

  • +1 用于不含中间体的工作样品和清洁溶液
  • 非常感谢您的辛勤工作....我刚开始看您的工作簿..我有问题。我正在尝试编辑 E 列中的公式,它给我带来了无法更改数组任何部分的错误。
  • @Mowgli 这是 multicell 数组公式所期望的 - 如前所述。要对其进行编辑,您应该选择此公式使用的整个范围。
  • @Mowgli 将在大约一小时后回复,因此请查看解决方案并在需要时回复
  • @Mowgli 这应该会有所帮助:spreadsheets.about.com/od/excelfunctions/ss/…
【解决方案2】:

这是一个相当大的挑战……我想我找到了一种可行的方法。为了清楚起见,我使用了一些辅助列。此外,我没有使用任何命名范围,而是坚持使用列行指示。你可能想改变它。

看起来像这样:

并放大到相关列:

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-Shift-Enter确认为数组公式。将其向下拖动或复制到列F。然后列GH 包含重复的ID 值的开始和结束索引。 This answer 有帮助,请点赞:-)。使用的两个公式是:

=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。最后,LMN 列通过索引进入原始数据集

=INDEX(B$2:B$14,$J2)

L2 中,可以水平拖动,然后垂直拖动。

完成后,您可以隐藏辅助列,或将所有内容折叠成大公式。祝你好运......可能有更简单的方法来实现这一点,但我没有找到它。

【讨论】:

  • 我在这里上传了它:temp-share.com/show/Pf3Yq8tK2。或者让我知道一个更好的放置位置。
  • 谢谢,我现在正在查看您的文件,请您查看我的文件,看看我是否可以执行第 2 步并跳过第 1 步。这个文件将更有意义做。 temp-share.com/show/f3Ygubvdn
  • 我稍后会看,但要简短说明一下:我认为您要采用的方法只有在 C 中的所有时间戳都是唯一的情况下才有效。真的是这样吗?
  • 是的,我希望如此,因为我正在寻找 hh:mm:ss PM/AM
  • 我已将您第二个问题的答案上传至temp-share.com/show/KdPfTmj8h。查看单元格F18:F28 中的公式。请让我知道这是否是您要找的。基本上,这与原始答案中单元格F2 中使用的公式相同。
【解决方案3】:

如果您想要 G 中 D 列的值,那么假设 C 列的值是唯一的,您可以只使用 VLOOKUP,即在 G2 中复制下来

=VLOOKUP(F2,C$2:D$14,2,0)

【讨论】:

    【解决方案4】:

    根据您的图片,它们都在同一张纸上。只需按ID 排序,然后按Date(升序)。当您沿着ID 列向下移动时,每次ID 更改时,您都知道您已经找到了针对特定ID 的最小Date 的行。创建一个额外的列来表示 ID 发生更改的位置,并过滤这些行(如果您愿意,可以隐藏该列)。

    还有……瞧。

    【讨论】:

      【解决方案5】:

      知道这个链接是旧的,但是有一个更短更简单的方法! 如何使用使用最小值作为字段设置的数据透视表,然后执行=GETPIVOTDATA() 以获取信息! 看起来比这些公式简单多了!

      【讨论】:

        【解决方案6】:

        实际上,我刚刚意识到我一直在想这个...Excel 保留最上面的项目,并在删除重复项时删除后面的所有项目。 因此,如果您无论如何要创建一个额外的工作表,为什么不直接复制您想要保留的范围/列,然后使用基本排序。 首先按 ID 排序,然后按您想要作为第二个过滤器的列。确保排序按照您想要的顺序(例如,最新到最旧、最旧到最新、A 到 Z、最大到最小等)。 数据排序后,根据 ID 删除重复项。您留下了所有数据列,按每个人的最新/最旧/最大/最小过滤。 这适用于我的表,它有 30,000 多条记录,过滤到 1500 个最近(加上相关数量)的唯一个人,并使用第二个过滤器,每个人的最大(加上相关日期)。

        【讨论】:

        • 作为评论可能会更好
        猜你喜欢
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 2021-12-01
        • 1970-01-01
        相关资源
        最近更新 更多