首页 > 解决方案 > 使用表格中的数据在 Excel 中查找最接近的匹配项

问题描述

我正在尝试在 Excel 中编写一个公式,该公式将在一列中找到最接近的匹配项并返回该值,以便可以在 SUMIFS 公式中使用它。我做了一些调查,发现大家都指向了这个具体的公式:

{=INDEX(data,MATCH(MIN(ABS(data-value)),ABS(data-value),0))}

我遇到的问题是我正在尝试将其转换为使用表中的数据并且到目前为止:

{=INDEX(_CCD01[[#All],[Date]],MATCH(MIN(ABS(_CCD01[[#All],[Date]]-TODAY())),ABS(_CCD01[[#All],[Date]]-TODAY()),0))}

但是 Excel 返回一个#VALUE!错误。

公式需要做的是,使用 TODAY() 作为搜索条件,在 _CCD01[[#All],[Date]] 列中找到最接近的日期。

可以在此处找到包含表格和公式的文件: Dropbox 只读

任何帮助或想法将不胜感激。

戴夫

标签: excelformula

解决方案


这是一个数组公式

=INDEX(_CCD01[Date],MATCH(MIN(ABS(_CCD01[Date]-TODAY())),ABS(_CCD01[Date]-TODAY()),0))

要输入/确认数组公式,请在按住ctrl+的shift同时按enter。如果您正确执行此操作,Excel 将{...}在公式栏中看到的公式周围放置大括号。

您使用的语法_CCD01[[#All],[Date]]还将返回列的标题行。没有必要这样做,这是您#VALUE!错误的原因。

  • ABS函数将在应用于列时返回的数组中返回一个#VALUE错误(作为第一个元素),因为第一个条目是文本。
  • 然后MIN,作为错误值或无法转换为数字的文本的参数会导致错误。

推荐阅读