查找最后一次出现(倒置 VLOOKUP)

所有经典搜索和类型替换功能 VPR (VLOOKUP), 探地雷达 (查询), 更多曝光 (匹配) 像他们这样的人有一个重要的特点——他们从头到尾搜索,即在源数据中从左到右或从上到下。 一旦找到第一个匹配的匹配项,搜索就会停止,只找到我们需要的元素的第一个匹配项。

如果我们需要找到的不是第一个,而是最后一个,该怎么办? 例如,客户的最后一笔交易、最后一次付款、最近的订单等?

方法 1:使用数组公式查找最后一行

如果原始表中没有包含日期​​或行序列号的列(订单、付款……),那么我们的任务实际上是找到满足给定条件的最后一行。 这可以通过以下数组公式来完成:

查找最后一次出现(倒置 VLOOKUP)

这里:

  • 功能 IF (如果) 逐一检查列中的所有单元格 对客户的 如果包含我们需要的名称,则显示行号。 工作表上的行号由函数提供给我们 LINE (排),但是由于我们需要表格中的行号,我们还必须减去 1,因为我们在表格中有一个标题。
  • 然后函数 最大 (最大) 从形成的行号集合中选择最大值,即客户端最近的行号。
  • 功能 指数 (指数) 从任何其他必需的表格列返回具有找到的最后一个数字的单元格的内容 (订购代码).

所有这些都必须输入为 数组公式, IE:

  • 在安装了最新更新并支持动态数组的 Office 365 中,您只需按 输入.
  • 在所有其他版本中,输入公式后,您必须按键盘快捷键 按Ctrl+转移+输入,它将自动在公式栏中为其添加花括号。

方法 2:使用新的 LOOKUP 函数进行反向查找

我已经写了一篇很长的文章,里面有一个关于新功能的视频 查看 (XLOOKUP),它出现在最新版本的 Office 中,以取代旧的 VLOOKUP (VLOOKUP). 在 BROWSE 的帮助下,我们的任务得到了相当基本的解决,因为。 对于此函数(与 VLOOKUP 不同),您可以显式设置搜索方向:自上而下或自下而上 - 它的最后一个参数 (-1) 负责:

查找最后一次出现(倒置 VLOOKUP)

方法 3. 搜索日期最新的字符串

如果在源数据中我们有一列带有序列号或日期的列起到了类似的作用,那么任务就被修改了——我们需要找到匹配的不是最后(最低)行,而是最新(最大)日期。

我已经详细讨论了如何使用经典函数来做到这一点,现在让我们尝试使用新的动态数组函数的强大功能。 为了更加美观和方便,我们还使用键盘快捷键将原始表格转换为“智能”表格 按Ctrl+T 或命令 主页 – 格式为表格 (首页——表格格式).

在他们的帮助下,这对“杀手锏”非常优雅地解决了我们的问题:

查找最后一次出现(倒置 VLOOKUP)

这里:

  • 功能第一 FILTER (筛选) 仅从我们的表中选择列中的那些行 对客户的 ——我们需要的名字。
  • 然后函数 GRADE (种类) 按日期降序对选定的行进行排序,最近的交易位于顶部。
  • 功能 指数 (指数) 提取第一行,即返回我们需要的最后一笔交易。
  • 最后,外部 FILTER 函数从结果中删除额外的第 1 列和第 3 列(订购代码 и 对客户的) 并且只留下日期和金额。 为此,使用了一个常量数组。 {0;1;0;1},定义我们想要(1)或不想要(0)显示哪些列。

方法 4:在 Power Query 中查找最后一个匹配项

好吧,为了完整起见,让我们看一下使用 Power Query 加载项的反向搜索问题的解决方案。 在她的帮助下,一切都很快得到了完美的解决。

1. 让我们使用键盘快捷键将原始表格转换为“智能”表格 按Ctrl+T 或命令 主页 – 格式为表格 (首页——表格格式).

2. 使用按钮将其加载到 Power Query 从表/范围 标签 时间 (数据——来自表/范围).

3. 我们按日期的降序对表进行排序(通过标题中过滤器的下拉列表),以便最近的交易位于顶部。

4… 在选项卡中 转型 选择一个团队 通过...分组 (变换——分组依据) 并设置按客户分组,并作为聚合功能,选择选项 所有线路 (所有行). 您可以为新列命名任何您喜欢的名称 - 例如 更多信息.

查找最后一次出现(倒置 VLOOKUP)

分组后,我们将获得客户的唯一名称列表,并在列中 更多信息 – 包含每个事务的所有事务的表,其中第一行将是最新事务,这就是我们需要的:

查找最后一次出现(倒置 VLOOKUP)

5. 使用按钮添加新的计算列 自定义列 标签 添加栏 (添加列 - 添加自定义列)并输入以下公式:

查找最后一次出现(倒置 VLOOKUP)

这里 更多信息 – 这是我们从客户那里获取表格的列,并且 0、XNUMX、XNUMX、XNUMX {} 是我们要提取的行号(Power Query 中的行编号从零开始)。 我们得到一个包含记录的列(Record),其中每个条目是每个表的第一行:

查找最后一次出现(倒置 VLOOKUP)

仍然可以使用列标题中带有双箭头的按钮来扩展所有记录的内容 最后一笔交易 选择所需的列:

查找最后一次出现(倒置 VLOOKUP)

…然后删除不再需要的列 更多信息 通过右键单击其标题 - 删除列 (删除列).

通过将结果上传到工作表后 主页 — 关闭并加载 — 关闭并加载 (首页 - 关闭并加载 - 关闭并加载到...) 我们将得到一个包含最近交易列表的漂亮表格,正如我们想要的那样:

查找最后一次出现(倒置 VLOOKUP)

更改源数据时,一定不要忘记通过右键单击它们来更新结果——命令 更新并保存 (刷新) 或键盘快捷键 按Ctrl+其他+F5.


  • LOOKUP 函数是 VLOOKUP 的后代
  • 如何使用新的动态数组函数 SORT、FILTER 和 UNIC
  • 使用 LOOKUP 函数查找行或列中的最后一个非空白单元格

发表评论