显示基于键最近的数字匹配的行值

假设我在A列中有一个sorting的值列表,它们作为每个数字行的“键”。 像这样的东西:

___A_(key)_______B______ ______G_____ 1 |____2.58___|____________| ... |____________| ... 2 |____2.69___|____________| ... |____________| ... ... ... ... ________________________ ____________ x |____5.69___|____________| ... |____________| ... 

列B到G对每个键都有一些值,所以它基本上是一个数字数据的2D电子表格。

我需要能够通过近似值快速访问某一行。

现在我已经在列上设置了一个filter,并可以search行,但为此,我需要input正确的键值,即2.582.69 ,但不是像2.64

我希望能够input像2.64这样的东西,并且向我显示具有最接近的键值的行,最好是在一个单独的位置,比如在表的一边,就像在列I中开始的地方一样,但基本上任何方法,我键入一个值,并方便地显示行值将做。 我怎样才能做到这一点?

我的经验水平是:我在VBA / excel〜10年前做了一些简单的东西…基本上寻找一个好的开始方向和方法。

假设你的数据是A1:A20 ,你的查找值是B1这个公式将返回最接近的:

 =INDEX(A1:A20,MATCH(MIN(ABS(A1:A20-B1)),ABS(A1:A20-B1),0)) 

进入时确保按Ctrl + Shift + Enter,不是只是input

它获得最小的差异,然后将其行返回到索引,然后索引返回值。

这是我在想什么,你遍历所有的行,并获得目标和该单元格中的值之间的差异。 你会发现那个给出最小差异的行,那将是你的目标行。

 Dim dblErr As Double Dim intIndex As Integer Dim i As Integer Dim dblTarget As Double dblTarget = 'Value you are after dblErr = 10000 ' or some other large number For i = 1 To x 'x= number of rows If dblErr > Abs(Cells(i + 1, 1) - dblTarget) Then dblErr = Abs(Cells(i + 1, 1) - dblTarget) intIndex = i End If Next i Ans = Cells(intIndex, 1)